Dựa vào mã để tra tên đơn vị giống như dùng hàm VLOOKUP

Liên hệ QC

hutieumi105

Thành viên mới
Tham gia
19/6/18
Bài viết
14
Được thích
2
Dear anh/chị thành viên diễn đàn GPE,

Tình hình là em mới tập tành làm quen với VBA và cũng viết được 1 số code đơn giản. Hôm nay em xin được nhờ mọi người giúp đỡ tư vấn code cho file bài tập của em như file đính kèm:
1. Summary sheet: Khi điền Customs Code (cột G) thì giá trị "Beneficiary Name" ở cột R sẽ tự cập nhật bằng cách lấy giá trị tương ứng ở sheet "Customs Data" (cột H); dạng vlookup. Theo em biết thì mình có thể dùng Private Sub Change trong worksheet để thực hiện thao tác này thay vì sử dụng hàm vlookup như thông thường.
2. Mình có thể sử dụng nhiều private sub để áp dụng tương ứng cho những giá trị ở các ô khác không vậy? Em đã thử thì không được vì chỉ cho 1 trong worksheet
3. Cột F (date), em muốn lấy tháng và năm thì có thể dùng hàm gì ạ? Ví dụ: 05/09/2018 > 05/18. Em thử lấy bằng hàm month và year nhưng chỉ ra dạng chuỗi.

Em xin cảm ơn nhiều
 

File đính kèm

  • Auto Update from another sheet.xls.xlsm
    27.2 KB · Đọc: 109
Lần chỉnh sửa cuối:
Bạn xài macro sự kiện này:
PHP:
Const SoDong As Long = 999              'Só Dòng Cuc Dai    '
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Sh As Worksheet, Rng As Range, sRng As Range
 Dim Rws As Long
 If Not Intersect(Target, [G5].Resize(SoDong)) Is Nothing Then
    Set Sh = ThisWorkbook.Worksheets("Customs Data")
    With Sh.[B1]
        Rws = .CurrentRegion.Rows.Count
        Set Rng = .Resize(Rws)
    End With
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        MsgBox "Nothing!", , "GPE.COM Xin Chào!"
    Else
        With Sh.Cells(sRng.Row, "H")
            If .Value <> "" Then
                Cells(Target.Row, "R").Value = .Value
            Else
                Cells(Target.Row, "R").Value = "GPE.COM Xin Chào!"
            End If
        End With
    End If
 End If
End Sub
 
Upvote 0
Em cảm ơn be09 nhiều ạ. Em đã sửa lại bài viết theo đúng yêu cầu...
Nếu đã sửa thì vào sheet Summary nhấn nút TRA TÊN ĐƠN VỊ và nhận lại kết quả.
Câu này cũng chẳng cần (Dear anh/chị thành viên diễn đàn GPE). Vì vậy nên xóa nó đi.

Lưu ý:
- Kiểm tra lại mã (cột B) sheet Customs Data (dòng tô màu xanh) bị trùng lắp mã nên kết quả tra chưa đảm bảo độ chính xác, theo quy định mã là duy nhất.
 

File đính kèm

  • TRA DON VI.xlsm
    36.2 KB · Đọc: 121
Upvote 0
Bạn xài macro sự kiện này:
PHP:
Const SoDong As Long = 999              'Só Dòng Cuc Dai    '
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim Rws As Long
If Not Intersect(Target, [G5].Resize(SoDong)) Is Nothing Then
    Set Sh = ThisWorkbook.Worksheets("Customs Data")
    With Sh.[B1]
        Rws = .CurrentRegion.Rows.Count
        Set Rng = .Resize(Rws)
    End With
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        MsgBox "Nothing!", , "GPE.COM Xin Chào!"
    Else
        With Sh.Cells(sRng.Row, "H")
            If .Value <> "" Then
                Cells(Target.Row, "R").Value = .Value
            Else
                Cells(Target.Row, "R").Value = "GPE.COM Xin Chào!"
            End If
        End With
    End If
End If
End Sub


Thanks anh SA_DQ nhé. Cái này đúng ý em nè
 
Upvote 0
Nếu đã sửa thì vào sheet Summary nhấn nút TRA TÊN ĐƠN VỊ và nhận lại kết quả.
Câu này cũng chẳng cần (Dear anh/chị thành viên diễn đàn GPE). Vì vậy nên xóa nó đi.

Lưu ý:
- Kiểm tra lại mã (cột B) sheet Customs Data (dòng tô màu xanh) bị trùng lắp mã nên kết quả tra chưa đảm bảo độ chính xác, theo quy định mã là duy nhất.


ý em là nó tự dò tìm khi mình gõ giá trị tham chiếu ở cột "Customs Code" thì sẽ có giá trị ở cột "Beneficiary Name" chứ ko cần dùng nút bấm
 
Upvote 0
ý em là nó tự dò tìm khi mình gõ giá trị tham chiếu ở cột "Customs Code" thì sẽ có giá trị ở cột "Beneficiary Name" chứ ko cần dùng nút bấm
Tôi chỉ đưa ra giải pháp và tôi chỉ thích nhấn nút khi nào cần dò tìm, còn chuyện dùng cách nào cái đó là tùy bạn.

Nhiều thành viên thích nhanh, lẹ, tốc độ.

Còn bạn thích chậm chạp và phải chờ đợi thì cứ sử dụng Worksheet_Change, mỗi khi thay đổi cái gì đó trong Cell thì chạy code, nếu dữ liệu lớn sẽ làm chậm tốc độ dò tìm và sẽ làm cho bảng tính chạy ì ạch.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi chỉ đưa ra giải pháp và tôi chỉ thích nhấn nút khi nào cần dò tìm, còn chuyện dùng cách nào cái đó là tùy bạn.

Nhiều thành viên thích nhanh, lẹ, tốc độ.

Còn bạn thích chậm chạp và phải chờ đợi thì cứ sử dụng Worksheet_Change, mỗi khi thay đổi cái gì đó trong Cell thì chạy code, nếu dữ liệu lớn sẽ làm chậm tốc độ dò tìm và sẽ làm cho bảng tính chạy ì ạch.
Có phương thức intersect mà bác Beo nhỉ
 
Upvote 0
Có phương thức intersect mà bác Beo nhỉ
Chủ Topic hỏi cái gì thì trả lời cái đó (mà còn bị chê).
Nếu đưa lên cách khác là tra bất kỳ cột hoặc tra nhiều cột cùng lúc với vòng lặp For cột (lộn xộn), chắc rối luôn quá.

A_Tra.JPG
 
Lần chỉnh sửa cuối:
Upvote 0
Chủ Topic hỏi cái gì thì trả lời cái đó (mà còn bị chê).
Nếu đưa lên cách khác là tra bất kỳ cột hoặc tra nhiều cột cùng lúc với vòng lặp For cột (lộn xộn), chắc rối luôn quá.

View attachment 197855


Dạ e đâu có chê, bác nói vậy tội nghiệp em. Chỉ là em biết có mỗi cách đó nên cứ xoáy vô cái đó mà hỏi thôi
 
Upvote 0
Web KT
Back
Top Bottom