[Hỏi] Nhờ cao thủ giúp dò tìm dữ liệu nhiều điều kiện

Liên hệ QC

phananhvusv

Thành viên chính thức
Tham gia
28/3/17
Bài viết
72
Được thích
13
Chào các bác! Xin các bác giúp đỡ em dò tìm nhiều điều kiện ạ.
Hiện em có 1 file dữ liệu gồm 2 sheet "danh sach" và "thong tin". Bên sheet "danh sach" là dữ liệu của người đi khám chữa bệnh từ 2016 đến 2018; bên sheet "thong tin" là dữ liệu thẻ BHYT của những người đó.
Vấn đề ở đây là mỗi 1 người có 1 mã BHXH nhưng có nhiều mã thẻ BHYT. Mỗi mã thẻ ứng với thời hạn sử dụng thẻ được thể hiện "từ ngày" "đến ngày".
Yêu cầu đặt ra cho em là: Điền vào cột "mã thẻ BHYT" bằng cách vừa dò từ mã số BHXH, vừa phải đảm bảo "ngày hưởng" (yyyymmdd) nằm trong hạn thẻ BHYT đó.
 

File đính kèm

  • Book1.xlsx
    986.5 KB · Đọc: 13
Lần chỉnh sửa cuối:
Chào các bác! Xin các bác giúp đỡ.
Hiện em có 1 file dữ liệu gồm 2 sheet "danh sach" và "thong tin". Bên sheet "danh sach" là dữ liệu của người đi khám chữa bệnh từ 2016 đến 2018; bên sheet "thong tin" là dữ liệu thẻ BHYT của những người đó.
Vấn đề ở đây là mỗi 1 người có 1 mã BHXH nhưng có nhiều mã thẻ BHYT. Mỗi mã thẻ ứng với thời hạn sử dụng thẻ được thể hiện "từ ngày" "đến ngày".
Yêu cầu đặt ra cho em là: Điền vào cột "mã thẻ BHYT" bằng cách vừa dò từ mã số BHXH, vừa phải đảm bảo "ngày hưởng" (yyyymmdd) nằm trong hạn thẻ BHYT đó.
Bạn sửa lại tiêu đề đi không bài bị khóa bây giờ.
 
em lần đầu post bài, không biết phải sửa thế nào ạ? mong bác hướng dẫn.
Bạn sửa lại theo yêu cầu của bạn ấy.Nó đúng nội dụng mình cần.Đây là bài mình làm bằng VBA bạn xem có đúng không nhé.
Mã:
Sub diendulieu()
Dim arr, darr, i As Long, lr As Long, lr1 As Long, dk As String, dic As Object, ngay As Long, b As Long, s As String, s1 As String, T, T1
Dim j As Long
Set dic = CreateObject("scripting.dictionary")
With Sheets("Danh sach")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 2 Then Exit Sub
     arr = .Range("B2:E" & lr).Value
     For i = 1 To UBound(arr, 1)
         dk = arr(i, 1)
          ngay = CLng(CDate(Left(arr(i, 4), 4) & "/" & Mid(arr(i, 4), 5, 2) & "/" & Right(arr(i, 4), 2)))
         If Not dic.exists(dk) Then
             dic.Item(dk) = Array(i, ngay)
         Else
            s = dic.Item(dk)(0)
            s1 = dic.Item(dk)(1)
            s = s & ";" & i
            s1 = s1 & ";" & ngay
            dic.Item(dk) = Array(s, s1)
         End If
     Next i
End With
With Sheets("thong tin")
     lr1 = .Range("A" & Rows.Count).End(xlUp).Row
     If lr < 2 Then Exit Sub
     darr = .Range("A2:e" & lr1).Value
     For i = 1 To UBound(darr, 1)
         dk = darr(i, 1)
         If dic.exists(dk) Then
            T = Split(";" & dic.Item(dk)(0), ";")
            T1 = Split(";" & dic.Item(dk)(1), ";")
            For j = 1 To UBound(T)
                If CLng(CDate(darr(i, 4))) <= T1(j) And CLng(CDate(darr(i, 5))) >= T1(j) Then
                    arr(T(j), 3) = darr(i, 2)
                End If
            Next j
         End If
    Next i
End With
With Sheets("Danh sach")
      .Range("B2:E" & lr).Value = arr
End With
End Sub
 

File đính kèm

  • Book1.xlsm
    102.5 KB · Đọc: 14
em chạy được rồi, cám ơn bác nhiều lắm.
em muốn học VBA để viết code như bác thì bắt đầu từ đâu ạ?
 
Lần chỉnh sửa cuối:
Lần chỉnh sửa cuối:
Nếu mình tăng thêm dữ liệu thì có cần chỉnh sửa gì thêm ko ạ?
 
Ơ bạn sửa tiêu đề đi kìa.Đừng để thế kia.Bỏ chữ cao thủ đi bạn à.
Cần gì phải sửa khi không sửa vẫn nhận được trả lời?

Người nóng ruột là người đang đói bài. Chả cần làm gì rồi anh ta cũng sẽ đưa bài giải ngay tắp lự. :D

Đã muốn làm mà bất chấp tất cả thì đừng nói về nội qui. Đã nói về nội qui thì chịu khó đợi cho tới khi nội qui được thỏa mãn.
 
Các bạn ơi giúp mình dò tìm cho trường hợp này với, mà không dùng VBA nhé! Dò tìm thời gian, mà mình không biết dùng cách gì. Mong mọi người giúp đỡ
 

File đính kèm

  • Book1.xlsx
    10 KB · Đọc: 4
Đừng đăng 1 nội dung vào nhiều nơi nhe bạn, BQT thấy sẽ xóa bài đó.
Bài của bạn có thể dùng công thức mảng =MIN(IF(A2:A10="B",B2:B10,"")) (Ctrl+Shift+Enter)
 
Web KT
Back
Top Bottom