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

Liên hệ QC
Chào các bác.
Nhờ các bác thêm giúp e đoạn code để có thể tìm từ cột MA sang nhiều sheet với ạ.
Hiện tại ở File e đã lấy từ một bác ở trên, chạy khá ổn, giờ e muốn nó chạy thêm vài sheet nữa để.
Bạn thử Code.
Mã:
Sub laydulieu()
    Dim i As Long, lr As Long, dic As Object, a As Long, sh As Worksheet, kq, arr, dk As String
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("Ma")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr < 3 Then Exit Sub
         arr = .Range("B3:E" & lr).Value
         For i = 1 To UBound(arr)
             dk = arr(i, 1)
             If Not dic.exists(dk) Then
                dic.Add dk, arr(i, 4)
             End If
         Next i
    End With
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "MA" Then
           With sh
                lr = .Range("B" & Rows.Count).End(xlUp).Row
                If lr > 3 Then
                   arr = .Range("B4:C" & lr).Value
                   ReDim kq(1 To UBound(arr), 1 To 1)
                   For i = 1 To UBound(arr)
                       dk = arr(i, 1)
                       If dic.exists(dk) Then
                          kq(i, 1) = dic.Item(dk)
                       End If
                   Next i
                End If
                .Range("G4:G" & lr).Value = kq
         End With
     End If
   Next
End Sub
 
Bạn thử Code.
Mã:
Sub laydulieu()
    Dim i As Long, lr As Long, dic As Object, a As Long, sh As Worksheet, kq, arr, dk As String
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("Ma")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr < 3 Then Exit Sub
         arr = .Range("B3:E" & lr).Value
         For i = 1 To UBound(arr)
             dk = arr(i, 1)
             If Not dic.exists(dk) Then
                dic.Add dk, arr(i, 4)
             End If
         Next i
    End With
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "MA" Then
           With sh
                lr = .Range("B" & Rows.Count).End(xlUp).Row
                If lr > 3 Then
                   arr = .Range("B4:C" & lr).Value
                   ReDim kq(1 To UBound(arr), 1 To 1)
                   For i = 1 To UBound(arr)
                       dk = arr(i, 1)
                       If dic.exists(dk) Then
                          kq(i, 1) = dic.Item(dk)
                       End If
                   Next i
                End If
                .Range("G4:G" & lr).Value = kq
         End With
     End If
   Next
End Sub
Bác Coppy đoạn code này và chạy thử trong file đính kèm giúp em. e đã thử mà không được ạ.
 

File đính kèm

  • vlookup (2) (1).xls
    48 KB · Đọc: 14

File đính kèm

  • MASTER ĐỊNH MỨC.xlsm
    166.2 KB · Đọc: 12
Bác quick87 em thấy file bác rất hay. em muốn áp dụng vào file cửa em nhưng không rõ phải sửa đổi chỗ nào nào mò mãi không được. bác giúp em với.
Không chỉ riêng mình mà rất nhiều thành viên khác sẽ giúp được bạn nhưng file như thế này thì sao giúp được bạn đây:

1624694509042.png

Thêm nữa, không nên nhờ đích danh một cá nhân thì kết quả bạn sẽ nhận được nhiều hơn bạn mong đợi đó!
 
Không chỉ riêng mình mà rất nhiều thành viên khác sẽ giúp được bạn nhưng file như thế này thì sao giúp được bạn đây:

View attachment 261339

Thêm nữa, không nên nhờ đích danh một cá nhân thì kết quả bạn sẽ nhận được nhiều hơn bạn mong đợi đó!
chết em quên mất bỏ cái mật khẩu. Tại em thấy code cửa bác hay đúng mình đang cần nên nếu được bác trực tiếp chỉ giáo thì thật tốt. bác xem giúo em với!
 

File đính kèm

  • MASTER ĐỊNH MỨC.xlsm
    162.6 KB · Đọc: 8
chết em quên mất bỏ cái mật khẩu. Tại em thấy code cửa bác hay đúng mình đang cần nên nếu được bác trực tiếp chỉ giáo thì thật tốt. bác xem giúo em với!
các bác cho em hỏi. em làm nhưng sao nó cú chạy là các dữ liệu ở sheet khác bị xóa sạch. các giúp em với?
 
chết em quên mất bỏ cái mật khẩu. Tại em thấy code cửa bác hay đúng mình đang cần nên nếu được bác trực tiếp chỉ giáo thì thật tốt. bác xem giúo em với!
Nếu bạn vẫn còn quan tâm và muốn dùng code thì thử xem sao.
Ở sh MASTER Danpla mình đã làm Data validation cho bạn rồi, cứ kích chọn một mã trong danh sách sổ xuống và xem diễn biến ở các ô cần lấy dữ liệu. Có điều danh sách sổ xuống cõ chữ nhỏ quá mà mình tìm mãi để nó to lên mà không được.
 

File đính kèm

  • MASTER ĐỊNH MỨC.xlsm
    179.6 KB · Đọc: 15
Nếu bạn vẫn còn quan tâm và muốn dùng code thì thử xem sao.
Ở sh MASTER Danpla mình đã làm Data validation cho bạn rồi, cứ kích chọn một mã trong danh sách sổ xuống và xem diễn biến ở các ô cần lấy dữ liệu. Có điều danh sách sổ xuống cõ chữ nhỏ quá mà mình tìm mãi để nó to lên mà không được.
Bạn đã chạy thử chưa. nếu thấy ưng ý thì nhờ mọi người giúp đỡ cái vụ Data Validation có cỡ chữ nhỏ muốn phóng to lên hơn thì phải làm thế nào , Cỡ chữ của Data validation to lên thì xem dễ hơn và thao tác chọn cũng dễ hơn.
 
Nếu bạn vẫn còn quan tâm và muốn dùng code thì thử xem sao.
Ở sh MASTER Danpla mình đã làm Data validation cho bạn rồi, cứ kích chọn một mã trong danh sách sổ xuống và xem diễn biến ở các ô cần lấy dữ liệu. Có điều danh sách sổ xuống cõ chữ nhỏ quá mà mình tìm mãi để nó to lên mà không được.
file cửa bác rất hay, nhưng nó lại không cập nhật khi mình thay đổi nội dung ở sheet DMSP. em làm theo code bắc

quick87

ở trên thì mày mò ra được cho file cửa em ở dưới. nhưng cú 1 lần load là nó xóa xạch dữ liệu các sheet khác không liên quan. mà chưa biết sửa thế nào. các bác xem sửa giúp em!

 

File đính kèm

  • MASTER ĐỊNH MỨC 1-7.xlsm
    342.3 KB · Đọc: 11
file cửa bác rất hay, nhưng nó lại không cập nhật khi mình thay đổi nội dung ở sheet DMSP. em làm theo code bắc

quick87

ở trên thì mày mò ra được cho file cửa em ở dưới. nhưng cú 1 lần load là nó xóa xạch dữ liệu các sheet khác không liên quan. mà chưa biết sửa thế nào. các bác xem sửa giúp em!


1/ file bạn gửi có cấu trúc không giống với file ỏ bài #229 và file bạn gửi của sổ VBE có pass --> không mở được (bạn lưu ý lần sau nhé), và cứ bám vào bác Quick87 để hỏi nhé.
2/ file mình làm cho bạn đã Define name động phần mã sản phẩm (Thùng/mã vạch) cột (D sh DMSP Danpla )rồi. bạn thử thêm một mã mới vào chạy thử xem).
Nếu thay đổi lại nội dung của các cột khác (<> D) thì phải chạy lại dòng đó bên sh MASTER danpla.
 
1/ file bạn gửi có cấu trúc không giống với file ỏ bài #229 và file bạn gửi của sổ VBE có pass --> không mở được (bạn lưu ý lần sau nhé), và cứ bám vào bác Quick87 để hỏi nhé.
2/ file mình làm cho bạn đã Define name động phần mã sản phẩm (Thùng/mã vạch) cột (D sh DMSP Danpla )rồi. bạn thử thêm một mã mới vào chạy thử xem).
Nếu thay đổi lại nội dung của các cột khác (<> D) thì phải chạy lại dòng đó bên sh MASTER danpla.
1- vâng! fiile này em thây đổi cột mã đưa về đầu để làm cho dễ. nhưng nó chạy ra được nhưng các Sheet khách không liên quan bị xóa nội dùng, em cũng muốn bác Quick87 tư vấn nhưng forum không có phần chat riêng sao đó. các bác cao nhân hiểu về VBA giúp em với.
2- em biết file bác làm chạy được nhưng chỉ có nhược điểm việc cập nhật thông tin thay đổi ở sheet DMSP Danpla thì lại phải load lại hết mã ở sheet MASTER danpla. mà file cửa em nó phải để trên 18000 dòng, mà đôi khi mình quên dẫn đến sai. bác có cách nào khác phuc giúp em!
 
1- vâng! fiile này em thây đổi cột mã đưa về đầu để làm cho dễ. nhưng nó chạy ra được nhưng các Sheet khách không liên quan bị xóa nội dùng, em cũng muốn bác Quick87 tư vấn nhưng forum không có phần chat riêng sao đó. các bác cao nhân hiểu về VBA giúp em với.
2- em biết file bác làm chạy được nhưng chỉ có nhược điểm việc cập nhật thông tin thay đổi ở sheet DMSP Danpla thì lại phải load lại hết mã ở sheet MASTER danpla. mà file cửa em nó phải để trên 18000 dòng, mà đôi khi mình quên dẫn đến sai. bác có cách nào khác phuc giúp em!
Bạn up lại file của bạn có code của anh Quick87lên đi (nhớ là gỡ bỏ pass) nhé, để mình xem có giúp được không?
 
Bạn up lại file của bạn có code của anh Quick87lên đi (nhớ là gỡ bỏ pass) nhé, để mình xem có giúp được không?
Vâng bác. bài #233 em có up file mới bỏ pass và đưa được code cửa bác @quick87 vào thì chạy được như lại bị lỗi xóa nội dung ở các sheet khác (sheet "Bảng mã nguyên vật liệu"....). đang nhờ mọi người và bác ấy giúp ạ!
1625143667785.png
 
Lần chỉnh sửa cuối:
Mở ở của máy mình bình thường mà có sao đâu?
 

File đính kèm

  • Screenshot (8).png
    Screenshot (8).png
    471.7 KB · Đọc: 4
Bác phải thay đổi nội dung ở sheet DMSP hoặc nhập mã ở sheet MÁTER. Để nó chạy update dữ liệu thì mới bị ạ
Sheet MASTER có quan hệ thế nào với Sh Bang Ma NVL? mình nghi ngờ là sub Update ấy tác động đến Sh Bang ma NVL ở đoạn code trong sh DMSP Danpla
 
Web KT
Back
Top Bottom