Xin viết dùng mã vba thay thế cho hàm vlookup

Liên hệ QC
- Trong trường hợp của em thì có, mã code sẽ được lặp lại nhiều lần, phần này em chỉ cần nó auto update như vlookup là ok.
- Cũng có nghe nói ADO nhưng không biết nó thế nào luôn. :). Mong các Anh Chị chỉ giáo, nếu mà có thể chọn file làm data như trong Vlookup thì hay biết mấy (Vlookup xong mình có thể chọn Edit link và chọn vào 1 file khác tương tự). Vì File Data của em mỗi khi cập nhật giá là thêm 1 số (Ví dụ Data1 , Data2 ....)

yêu cầu thứ 1 (để điều chỉnh lại vị trí các cột)
 

File đính kèm

  • thuc hanh.rar
    50.7 KB · Đọc: 135
Lần chỉnh sửa cuối:
Trong file của anh, khi thay đổi Tên thì ok, có thể thay đổi theo, nhưng khi thay đổi Ngày vào bên LLNV thì cột mã code bên sheet Chi Tiet chạy số tùm lum.
Anh fix lại giúp.

lúc chiều tôi mới test xong một c ột, như hết giờ làm nên đi về...........post lên đó về nhà làm tiếp
đã làm lại cho bạn,....vào test thử
=================
nếu bạn có tải về thì bỏ dùm tôi 2 dòng lệnh
Mã:
Sub update()
[COLOR=#ff0000]Application.ScreenUpdating = False[/COLOR]
.......................................................
[COLOR=#ff0000]Application.ScreenUpdating = True[/COLOR]
End Sub
ở sub update, nó ko giúp ích gì, chỉ gây màn hình giật giật
 
Lần chỉnh sửa cuối:
lúc chiều tôi mới test xong một c ột, như hết giờ làm nên đi về...........post lên đó về nhà làm tiếp
đã làm lại cho bạn,....vào test thử
=================
nếu bạn có tải về thì bỏ dùm tôi 2 dòng lệnh
Mã:
Sub update()
[COLOR=#ff0000]Application.ScreenUpdating = False[/COLOR]
.......................................................
[COLOR=#ff0000]Application.ScreenUpdating = True[/COLOR]
End Sub
ở sub update, nó ko giúp ích gì, chỉ gây màn hình giật giật

Hi Anh,

Hiện tại em thấy Form này ổn rồi đó, Cảm ơn anh, nhưng có thể rút gọn phần nào ko anh? vì trong Form của em quá trời module và Sub.

Anh cho em hỏi là file có nhiều Module và Sub thì có ảnh hưởng đến tốc độ của file ko?
 
Xin chào Anh Chị GPE,

Em up lại file bữa trước, em thay đổi cột CMND >> Thành tiền.

Nhờ anh chị xem giúp,
1- em muốn chổ cột thành tiền là nó tự lấy giá * với cột Cân nặng luôn (Giá tại cột thành tiền là giá từ Data (LLNV) * cân nặng). Cột Cân nặng là mình tự đánh vào, khi cân nặng thay đổi thì giá tại cột thành tiền sẽ tự độnng thay đổi theo.
2- Đối với những số thẻ bắt đầu = dấu #, em muốn nó hiện những dòng phụ bên dưới thôi, chú ko hiện dòng chính
Ví dụ : mã thẻ #6012 của Đinh Văn Tịnh (DVT). bên Chi Tiết khi em đánh #6012 thì em chỉ muốn hiện thông tin 2 dòng Đinh Văn A, và Nguyễn Xuân Tuyên. Tương tự với #6013.
Mong anh chị xem giúp có cách nào mà thể hiện được như vậy ko nha.

Cảm ơn anh chị rất nhiều.
 

File đính kèm

  • thuc hanh 6.rar
    53 KB · Đọc: 56
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("B4:B99")) Is Nothing Then
    Dim Rng As Range, sRng As Range, Sh As Worksheet
    
    Set Sh = ThisWorkbook.Worksheets("MA")
    Set Rng = Sh.Range(Sh.[b2], Sh.[b2].End(xlDown))
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        MsgBox "Nothing"
    Else
        Target.Offset(, 1).Resize(, 2).Value = sRng.Offset(, 1).Resize(, 2).Value
    End If
 End If
End Sub

Xin hỏi bạn rằng nếu mình có nhiều sheet như CT1, CT2, CT3.... thì viết code cho các sheet ấy để tìm kiếm bên sheet "MA" như thế nào? ở các vị trí khác ví dụ như cột H, I đến K, L, M (sheet("MA")) cột AF đến AJ (sheet CT1, CT2....) nhưng cột sheet "MA" thì không có cột j mà sheet CT thì các cột liền nhau chẳng hạn
Mình còn kém mong được giúp đỡ
Cám ơn
 
Lần chỉnh sửa cuối:
Em đã thử áp dụng code của anh CONCOGIA mà không được. Mong các anh giúp đỡ em ạ.
 

File đính kèm

  • phan mem du toan.xlsm
    48.7 KB · Đọc: 39
Lần chỉnh sửa cuối:
Sửa code bài 45 lại tí thôi mà (sửa tham chiếu cho phù hợp dữ liệu của bạn)
Xem file
Cảm ơn bác rất nhiều về code này. Nhưng em thay vì nhập liệu vào sheet CT mà em có danh sách sẵn từ copy - pate vào nó ko chạy được anh ạ, phải nhấn F2 sửa rồi enter nó mới ra. Bác xem giúp em sửa thế nào với ạ
 
mò mấy ngày rồi cũng chưa hiểu gì, tuy nhiên xào nấu mò theo ý được rồi, chỉ còn 1 thắc mắc là cái library mình để ở 1 workbook khác được không? vì cái đó thường liên quan đến dữ lieu giá của công ty, không tiện gửi file lên, các anh chị thhông cảm cho hỏi chay thôi ạ
 
mò mấy ngày rồi cũng chưa hiểu gì, tuy nhiên xào nấu mò theo ý được rồi, chỉ còn 1 thắc mắc là cái library mình để ở 1 workbook khác được không? vì cái đó thường liên quan đến dữ lieu giá của công ty, không tiện gửi file lên, các anh chị thhông cảm cho hỏi chay thôi ạ
Tôi chưa hiểu ý bạn muốn hỏi j
thôi thì đoán mò, có phải bạn có 1 thư viện (trong 1 workbook), yêu câu tìm kiếm các mã theo thư viện đó?
vậy từ workbook đó có thể xây dựng 1 hàm tự tạo rồi biến nó thành addins, rồi sau cứ thế sử dụng.
 
chính xác vậy đó bạn cá ngừ F1, nhưng do không biết viết nên đành nhờ mọi người giúp
 
mình chỉnh lại cái nguồn vì lí do cá nhân nha, @#!^%, chỉ là mỗi lần tính giá xong lại phải ngồi xóa công thức, xóa bang giá ....,
giờ trước tiên chỉ muốn vlookup cái diễn giải trước thôi
 
Lần chỉnh sửa cuối:
mình chỉnh lại cái nguồn vì lí do cá nhân nha, @#!^%, chỉ là mỗi lần tính giá xong lại phải ngồi xóa công thức, xóa bang giá ....,
giờ trước tiên chỉ muốn vlookup cái diễn giải trước thôi
Bạn thử dùng code này xem sao:
Mã:
Sub TimKiem()


    Dim i&, Rng As Range, Data(), DienGiai()
    
    Data = Range(Sheet9.[A24], Sheet9.[A1000].End(3))
    ReDim DienGiai(1 To UBound(Data), 1 To 1)
    
    For i = 1 To UBound(Data)
    
        Set Rng = Sheet11.[B2:B50].Find(Data(i, 1), , , 1)
        
        If Not Rng Is Nothing Then
            
            DienGiai(i, 1) = Rng.Offset(, 2)
        
        End If
    
    Next
    Sheet9.[B24].Resize(i - 1, 1) = DienGiai


End Sub

P/s: bạn nghiên cứu để tìm kiếm thêm các cột khác, chúc bạn thành công...
 
Em thử áp dụng các code trong bài nhưng vẫn chưa dùng được như hàm vlookup

Em có 1 sheet khai báo nhân viên tương ứng ở nhóm nào

Em muốn khi nhập liệu chỉ nhập tên nhân viên thì cột nhóm tự động lấy bên sheet khai báo

Chi tiết ở file đính kèm

Kính nhờ anh chị hỗ trợ giúp em với ah

Em cám ơn
 

File đính kèm

  • Ham Vlookup.xlsm
    10.6 KB · Đọc: 88
Em thử áp dụng các code trong bài nhưng vẫn chưa dùng được như hàm vlookup

Em có 1 sheet khai báo nhân viên tương ứng ở nhóm nào

Em muốn khi nhập liệu chỉ nhập tên nhân viên thì cột nhóm tự động lấy bên sheet khai báo

Chi tiết ở file đính kèm

Kính nhờ anh chị hỗ trợ giúp em với ah

Em cám ơn

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
If Not Intersect(Target, [b4:b100]) Is Nothing Then
 Set rng = Sheets("Boloc").[b:b].Find(Target, , , 1)
 If Not rng Is Nothing Then Target.Offset(, 1) = rng.Offset(, 1)
End If
End Sub
chép vào sheet 2
 
Nhờ các bạn rành VBA giúp dùm cái này chút nha @$@!^%, trình của mình chỉ dừng ở record macro thôi nên array đọc không hiểu gì hết +-+-+-+, với file VD gửi kèm với các yêu cầu sau@#!^%

1. Vlookup chu vi của sheet data vào các sheet tổng hợp của từng dự án (ở đây mình xin xóa bớt thông tin nhé), thực sự thì số sheet dự án sẽ được thêm dần, số dòng của dự án lớn hơn VD rất nhiều

2. sheet data và các dòng code có thể chỉ lưu ở dạng .xla được không? vì yêu cầu công việc thôi, nếu không được cũng không sao vì sẽ xóa tay sheet data

3. khi có dự án mới thì add sheet dự án mới vào file VD và chạy code để vlookup chu vi

cám ơn mọi người?>
 
Macro của bạn đây:
PHP:
Option Explicit
Sub VLookUp()
 Dim Sh As Worksheet, CSDL As Range, Cls As Range
 Dim Rws As Long
 
 Set Sh = ThisWorkbook.Worksheets("DATA")
 
 Set CSDL = Sh.[B2].CurrentRegion
 If [B2].Parent.Name = "DATA" Then
    MsgBox "Hay Chon Trang Khác!":                  Exit Sub
 End If
 For Each Cls In Range([c4], [c4].End(xlDown))
    Cls.FormulaR1C1 = _
        "=IF(TYPE(VLOOKUP(RC[-1],DATA!R2C1:R27C4,2,0))=16,"""",VLOOKUP(RC[-1],DATA!R2C1:R27C4,2,0))"
 Next Cls
End Sub

Những mong là bạn biết chạy macro này ở các trang tính cần thiết cho bạn.
Bổ sung: Khi nào CSDL ở trang 'DATA' tăng bạn sẽ fải sửa lại các số đang là 27 tăng tương ứng.
 
Chỉnh sửa lần cuối bởi điều hành viên:
tình hình là rất tình hình bạn HYen17 ạ
mình chép cái code của bạn vào, đứng ở sheet dự án, chạy êm ru nhưng không ra kết quả
đứng ở sheet data chạy ra thông báo chọn sheet khác, ok xong vẫn êm ru?
bạn có thể viết giúp mình dạng array phía trên không?

làm phiền bạn quá.+-+-+-+
 
Web KT
Back
Top Bottom