Xin giúp đỡ lọc dữ liệu (1 người xem)

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

tientn

Thành viên mới
Tham gia
20/7/10
Bài viết
20
Được thích
0
cháo các bạn, minh đang có 1 file gồm 2 sheet dữ liệu về bảo hiểm, mình muốn hỏi cách lọc dữ liệu từ côt NGAY_KQ_YL trong sheet BH lây sang cho sheet 15301, yêu cầu phải lấy đúng theo họ tên, mã bệnh nhân và dữ lệu theo các cột
NGAY_YLMA_BSI_THUC_HIENNGAY_TH_YLNGAY_KQ_YL
hiện tại mình đang dùng hàm index math nhưng chưa chính xác, nhờ các bạn chỉ giúp, cám ơn các bạn
 
cháo các bạn, minh đang có 1 file gồm 2 sheet dữ liệu về bảo hiểm, mình muốn hỏi cách lọc dữ liệu từ côt NGAY_KQ_YL trong sheet BH lây sang cho sheet 15301, yêu cầu phải lấy đúng theo họ tên, mã bệnh nhân và dữ lệu theo các cột
NGAY_YLMA_BSI_THUC_HIENNGAY_TH_YLNGAY_KQ_YL
hiện tại mình đang dùng hàm index math nhưng chưa chính xác, nhờ các bạn chỉ giúp, cám ơn các bạn
Cái NGAY_KQ_YL VÀ Sheet 15301 nó đang ở đâu ? Mặt mũi nó thế nào bạn ơi ?
 
Cái NGAY_KQ_YL VÀ Sheet 15301 nó đang ở đâu ? Mặt mũi nó thế nào bạn ơi ?
Câu này trong tiếng Việt đồng nghĩa với câu"
"Hãy đưa file, dù là giả lập lên ngay đi bạn hiền; Còn không thì đợi mùng 7 nghe!
 
Dùng Xlookup kết hợp dò tìm các điều kiện thì cho kết quả nhưng không ổn vì xử lý nhiều dữ liệu dẫn đến Excel bị treo. Bạn dùng code này thử xem.
Mình đang để điều kiện tìm kiếm là: Điều kiện - Cột trong bảng 15301 - Cột trong bảng BH đang, cụ thể:
Điều kiện 1: Tên bệnh nhân - Cột L - B
Điều kiện 2: Mã bệnh nhân - Cột N - A
Điều kiện 3: Ngày YL - Cột C - H
Bạn có thể đổi điều kiện tìm kiếm bằng cách sửa các cột tương ứng.

PHP:
Sub abc()
    Dim wsBH As Worksheet, ws15301 As Worksheet
    Dim arrBH As Variant, arr15301 As Variant, arrKQ As Variant
    Dim dict As Object
    Dim lastBH As Long, last15301 As Long
    Dim i As Long, key As String

    Set wsBH = Sheets("BH")
    Set ws15301 = Sheets("15301")
    Set dict = CreateObject("Scripting.Dictionary")

    '--- Lay du lieu:
    lastBH = wsBH.Cells(wsBH.Rows.Count, "B").End(xlUp).Row
    arrBH = wsBH.Range("A2:J" & lastBH).Value  ' Du lieu chua ket qua
   
    last15301 = ws15301.Cells(ws15301.Rows.Count, "L").End(xlUp).Row
    arr15301 = ws15301.Range("A2:N" & last15301).Value ' Du lieu chua dieu kien
    ReDim arrKQ(1 To UBound(arr15301), 1 To 1) 'Ket qua

    '--- Tao dictionary: key = dk1 & "|" & dk2 & "|" & dk3
    '    Giá tri = cot J (cot thu 10 trong BH)
    For i = 1 To UBound(arrBH, 1)
        key = CStr(arrBH(i, 2)) & "|" & CStr(arrBH(i, 1)) & "|" & CStr(arrBH(i, 8))  ' B, A, H
        If Not dict.exists(key) Then
            dict.Add key, arrBH(i, 10) ' Cot J la cot ket qua
        End If
    Next i

    '--- Tim va dien ket qua
    For i = 1 To UBound(arr15301, 1)
        key = CStr(arr15301(i, 12)) & "|" & CStr(arr15301(i, 14)) & "|" & CStr(arr15301(i, 3)) ' L, N, C
        If dict.exists(key) Then
            arrKQ(i, 1) = dict(key)
        Else
            arrKQ(i, 1) = CVErr(xlErrNA)
        End If
    Next i

    '--- Ghi ket qua ra sheet
    ws15301.Range("F2").Resize(UBound(arrKQ), 1).Value = arrKQ

    MsgBox "Hoàn thành, da xu ly " & last15301 - 1 & " dong.", vbInformation
End Sub
 
Lần chỉnh sửa cuối:

Bài viết mới nhất

Back
Top Bottom