Lấy ra giá trị không trùng ở cột 1, tương ứng ngày phát sinh gần nhất ở cột 2, kèm theo giá trị tương ứng ở cột 3

Liên hệ QC

phuongc5

Thành viên hoạt động
Tham gia
26/10/07
Bài viết
146
Được thích
71
Nghề nghiệp
Kế toán
Kính chào các anh, chị, các bạn trong diễn đàn!
Mình có tra Google cũng như tìm trên trang này vấn đề của mình nhưng thật sự chưa thấy kết quả mong muốn. Vì vậy, mình mạo muội viết bài này xin được giúp đỡ. Đề bài của mình như sau:
* Mình có một Data gồm 3 cột. Cột 1 là tên các nhân viên (với giả thiết không có ai trùng tên ai), trong cột này tên nhân viên sẽ lặp lại nhiều lần, tương ứng với các ngày phát sinh khác nhau được ghi ở Cột 2 (Cột ngày tháng phát sinh) và giá trị phát sinh tương ứng được ghi ở Cột 3 (Cột giá trị tiền phát sinh).
Yêu cầu: Lọc ra danh sách (sử dụng VBA) cũng có 3 cột như ở Data gốc, với điều kiện, Cột 1 là tên không lặp lại. Cột 2 là ngày phát sinh gần nhất (so với hiện tại) tương ứng với tên của Cột 1. Cột 3 là số tiền tương ứng phát sinh.
Rất mong nhận được sự giúp đỡ!
Trân trọng,

P/S: Mình có tìm thấy code VBA 1 bài giống 2/3 yêu cầu của mình (lọc ra cột 1 và 2), nhưng từ 3 cột trở lên thì chưa thấy có.
 

File đính kèm

  • GPE_VD1.xls
    65.5 KB · Đọc: 25
  • AnhVD.JPG
    AnhVD.JPG
    158.2 KB · Đọc: 18
Kính chào các anh, chị, các bạn trong diễn đàn!
Mình có tra Google cũng như tìm trên trang này vấn đề của mình nhưng thật sự chưa thấy kết quả mong muốn. Vì vậy, mình mạo muội viết bài này xin được giúp đỡ. Đề bài của mình như sau:
* Mình có một Data gồm 3 cột. Cột 1 là tên các nhân viên (với giả thiết không có ai trùng tên ai), trong cột này tên nhân viên sẽ lặp lại nhiều lần, tương ứng với các ngày phát sinh khác nhau được ghi ở Cột 2 (Cột ngày tháng phát sinh) và giá trị phát sinh tương ứng được ghi ở Cột 3 (Cột giá trị tiền phát sinh).
Yêu cầu: Lọc ra danh sách (sử dụng VBA) cũng có 3 cột như ở Data gốc, với điều kiện, Cột 1 là tên không lặp lại. Cột 2 là ngày phát sinh gần nhất (so với hiện tại) tương ứng với tên của Cột 1. Cột 3 là số tiền tương ứng phát sinh.
Rất mong nhận được sự giúp đỡ!
Trân trọng,

P/S: Mình có tìm thấy code VBA 1 bài giống 2/3 yêu cầu của mình (lọc ra cột 1 và 2), nhưng từ 3 cột trở lên thì chưa thấy có.
Thử code.
Mã:
Sub laygiatri()
   Dim i As Long, lr As Long, dic As Object, kq, a As Long, dk As String, b As Long, arr
   Set dic = CreateObject("scripting.dictionary")
   With Sheets("data")
       lr = .Range("A" & Rows.Count).End(xlUp).Row
       arr = .Range("A2:C" & lr).Value
       ReDim kq(1 To UBound(arr), 1 To 3)
       For i = 1 To UBound(arr)
           dk = arr(i, 1)
           If Not dic.exists(dk) Then
              a = a + 1
              dic.Add dk, a
              kq(a, 1) = arr(i, 1)
              kq(a, 2) = arr(i, 2)
              kq(a, 3) = arr(i, 3)
           Else
             b = dic.Item(dk)
             If CLng(arr(i, 2)) >= CLng(kq(b, 2)) Then
                kq(b, 2) = arr(i, 2)
                kq(b, 3) = arr(i, 3)
             End If
           End If
     Next i
     lr = .Range("F" & Rows.Count).End(xlUp).Row
     If lr > 2 Then .Range("F2:H" & lr).ClearContents
     .Range("F2:H2").Resize(a).Value = kq
End With
Set dic = Nothing
End Sub
 
Upvote 0
Thử code.
Mã:
Sub laygiatri()
   Dim i As Long, lr As Long, dic As Object, kq, a As Long, dk As String, b As Long, arr
   Set dic = CreateObject("scripting.dictionary")
   With Sheets("data")
       lr = .Range("A" & Rows.Count).End(xlUp).Row
       arr = .Range("A2:C" & lr).Value
       ReDim kq(1 To UBound(arr), 1 To 3)
       For i = 1 To UBound(arr)
           dk = arr(i, 1)
           If Not dic.exists(dk) Then
              a = a + 1
              dic.Add dk, a
              kq(a, 1) = arr(i, 1)
              kq(a, 2) = arr(i, 2)
              kq(a, 3) = arr(i, 3)
           Else
             b = dic.Item(dk)
             If CLng(arr(i, 2)) >= CLng(kq(b, 2)) Then
                kq(b, 2) = arr(i, 2)
                kq(b, 3) = arr(i, 3)
             End If
           End If
     Next i
     lr = .Range("F" & Rows.Count).End(xlUp).Row
     If lr > 2 Then .Range("F2:H" & lr).ClearContents
     .Range("F2:H2").Resize(a).Value = kq
End With
Set dic = Nothing
End Sub
Cám ơn bạn nhiều! Nó rất đúng ý mình. Cho mình hỏi thêm một chút nữa là, với trường hợp trong vùng kết quả, Cột 1 đã cho trước, hãy điền Cột 2 và 3 cũng với điều kiện là ngày gần nhất?
 
Upvote 0
Góp vui, làm lệnh Sort trước rồi mới lọc duy nhất
Mã:
Sub GPE()
Dim i&, k&, sArr(), dArr(), dic As Object
With Sheet1
    .[A1:C1000].Sort .[A1], 1, .[B2], Order2:=2, Header:=xlYes
    sArr = .Range("A1", .Range("C" & Rows.Count).End(3)).Value
    ReDim dArr(1 To UBound(sArr), 1 To 3)
    Set dic = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(sArr)
        If Not dic.exists(sArr(i, 1)) Then
            k = k + 1
            dic(sArr(i, 1)) = k
            dArr(k, 1) = sArr(i, 1)
            dArr(k, 2) = sArr(i, 2)
            dArr(k, 3) = sArr(i, 3)
        End If
    Next
    .[F1].Resize(i - 1, 3) = dArr
End With
End Sub
Bài đã được tự động gộp:

Cám ơn bạn nhiều! Nó rất đúng ý mình. Cho mình hỏi thêm một chút nữa là, với trường hợp trong vùng kết quả, Cột 1 đã cho trước, hãy điền Cột 2 và 3 cũng với điều kiện là ngày gần nhất?
Thử click GPE xem đúng ý của bạn không nhé.
 

File đính kèm

  • GPE_VD1.xls
    94 KB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Kính chào các anh, chị, các bạn trong diễn đàn!
Mình có tra Google cũng như tìm trên trang này vấn đề của mình nhưng thật sự chưa thấy kết quả mong muốn. Vì vậy, mình mạo muội viết bài này xin được giúp đỡ. Đề bài của mình như sau:
* Mình có một Data gồm 3 cột. Cột 1 là tên các nhân viên (với giả thiết không có ai trùng tên ai), trong cột này tên nhân viên sẽ lặp lại nhiều lần, tương ứng với các ngày phát sinh khác nhau được ghi ở Cột 2 (Cột ngày tháng phát sinh) và giá trị phát sinh tương ứng được ghi ở Cột 3 (Cột giá trị tiền phát sinh).
Yêu cầu: Lọc ra danh sách (sử dụng VBA) cũng có 3 cột như ở Data gốc, với điều kiện, Cột 1 là tên không lặp lại. Cột 2 là ngày phát sinh gần nhất (so với hiện tại) tương ứng với tên của Cột 1. Cột 3 là số tiền tương ứng phát sinh.
Rất mong nhận được sự giúp đỡ!
Trân trọng,

P/S: Mình có tìm thấy code VBA 1 bài giống 2/3 yêu cầu của mình (lọc ra cột 1 và 2), nhưng từ 3 cột trở lên thì chưa thấy có.
Thêm 1 cách cho bạn tham khảo nhé:

Mã:
Sub LayDL_HLMT()
    With CreateObject("ADODB.Connection")
         .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0"
         Sheet1.Range("M2").CopyFromRecordset .Execute("SELECT t.Employee, t.Date, t.Money FROM [Data$A1:C] AS t INNER JOIN (SELECT Employee, Max(Date) AS NgayCuoi FROM [Data$A1:C] GROUP BY Employee)  AS a ON (t.Employee = a.Employee) AND (t.Date = a.NgayCuoi) ORDER BY t.Employee")
    End With
End Sub
 
Upvote 0
Thêm 1 cách cho bạn tham khảo nhé:

Mã:
Sub LayDL_HLMT()
    With CreateObject("ADODB.Connection")
         .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0"
         Sheet1.Range("M2").CopyFromRecordset .Execute("SELECT t.Employee, t.Date, t.Money FROM [Data$A1:C] AS t INNER JOIN (SELECT Employee, Max(Date) AS NgayCuoi FROM [Data$A1:C] GROUP BY Employee)  AS a ON (t.Employee = a.Employee) AND (t.Date = a.NgayCuoi) ORDER BY t.Employee")
    End With
End Sub
Cám ơn anh đã quan tâm giúp đỡ! Cách của anh ngắn gọn nhưng em thấy nó hàn lâm quá, em ngoại đạo không hiểu được để áp dụng cho các trường hợp tương tự về sau ạ.
Bài đã được tự động gộp:

Góp vui, làm lệnh Sort trước rồi mới lọc duy nhất
Mã:
Sub GPE()
Dim i&, k&, sArr(), dArr(), dic As Object
With Sheet1
    .[A1:C1000].Sort .[A1], 1, .[B2], Order2:=2, Header:=xlYes
    sArr = .Range("A1", .Range("C" & Rows.Count).End(3)).Value
    ReDim dArr(1 To UBound(sArr), 1 To 3)
    Set dic = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(sArr)
        If Not dic.exists(sArr(i, 1)) Then
            k = k + 1
            dic(sArr(i, 1)) = k
            dArr(k, 1) = sArr(i, 1)
            dArr(k, 2) = sArr(i, 2)
            dArr(k, 3) = sArr(i, 3)
        End If
    Next
    .[F1].Resize(i - 1, 3) = dArr
End With
End Sub
Bài đã được tự động gộp:


Thử click GPE xem đúng ý của bạn không nhé.
Cảm ơn anh đã giúp đỡ ạ! Trong trường hợp mình không muốn can thiệp vào Data gốc (không sắp xếp lại thứ tự) thì có thể giải quyết ý 2 như thế nào ạ?
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn anh đã quan tâm giúp đỡ! Cách của anh ngắn gọn nhưng em thấy nó hàn lâm quá, em ngoại đạo không hiểu được để áp dụng cho các trường hợp tương tự về sau ạ.
Bài đã được tự động gộp:


Cảm ơn anh đã giúp đỡ ạ! Trong trường hợp mình không muốn can thiệp vào Data gốc (không sắp xếp lại thứ tự) thì có thể giải quyết ý 2 như thế nào ạ?
Dữ liệu gốc của bạn cột ngày có được sắp xếp không nhỉ? Hay ngày xáo trộn không theo thứ tự. Giả sử có 2 ngày gần nhất trùng nhau nữa thì lấy theo cái nào?
 
Upvote 0
Dữ liệu gốc của bạn cột ngày có được sắp xếp không nhỉ? Hay ngày xáo trộn không theo thứ tự. Giả sử có 2 ngày gần nhất trùng nhau nữa thì lấy theo cái nào?
Dạ, mỗi người chỉ 1 lần 1 ngày ạ. Về lý thuyết, ngày nào mình nhập ngày ấy thì cột ngày tháng đương nhiên theo thứ tự từ xa đến gần (so với ngày hiện tại). Nhưng em muốn có trường hợp tổng quát là có thể mình nhập bổ sung ngày quá khứ xa hơn thì vẫn có thể nằm ở dòng phía dưới. Khi đó, em không can thiệp sắp xếp lại (giữ nguyên hiện trường của người nhập) và lấy dữ liệu đó để đưa ra kết quả ạ.
 
Upvote 0
Dạ, mỗi người chỉ 1 lần 1 ngày ạ. Về lý thuyết, ngày nào mình nhập ngày ấy thì cột ngày tháng đương nhiên theo thứ tự từ xa đến gần (so với ngày hiện tại). Nhưng em muốn có trường hợp tổng quát là có thể mình nhập bổ sung ngày quá khứ xa hơn thì vẫn có thể nằm ở dòng phía dưới. Khi đó, em không can thiệp sắp xếp lại (giữ nguyên hiện trường của người nhập) và lấy dữ liệu đó để đưa ra kết quả ạ.
Tôi chỉ lấy code của anh @snow25 ở bài #2, chỉnh sửa chút xíu.
Mã:
Sub laygiatri01()
   Dim i As Long, lr As Long, dic As Object, kq, a As Long, dk As String, b As Long, arr, Emp(), KQ1()
   Set dic = CreateObject("scripting.dictionary")
   With Sheets("data")
       lr = .Range("A" & Rows.Count).End(xlUp).Row
       arr = .Range("A2:C" & lr).Value
       ReDim kq(1 To UBound(arr), 1 To 3)
       Emp = .Range("F2", .Range("F10000").End(3)).Value
       ReDim KQ1(1 To UBound(Emp), 1 To 2)
       For i = 1 To UBound(arr)
           dk = arr(i, 1)
           If Not dic.exists(dk) Then
              a = a + 1
              dic.Add dk, a
              kq(a, 1) = arr(i, 1)
              kq(a, 2) = arr(i, 2)
              kq(a, 3) = arr(i, 3)
           Else
             b = dic.Item(dk)
             If CLng(arr(i, 2)) >= CLng(kq(b, 2)) Then
                kq(b, 2) = arr(i, 2)
                kq(b, 3) = arr(i, 3)
             End If
           End If
     Next
     For i = 1 To UBound(Emp)
        KQ1(i, 1) = kq(dic.Item(Emp(i, 1)), 2)
        KQ1(i, 2) = kq(dic.Item(Emp(i, 1)), 3)
     Next
     .Range("G2").Resize(i - 1, 2).Value = KQ1
End With
Set dic = Nothing
End Sub

P/s: kể ra sắp xếp lại theo ngày thì dữ liệu sẽ đẹp hơn.
 
Upvote 0
Cám ơn bạn nhiều! Nó rất đúng ý mình. Cho mình hỏi thêm một chút nữa là, với trường hợp trong vùng kết quả, Cột 1 đã cho trước, hãy điền Cột 2 và 3 cũng với điều kiện là ngày gần nhất?
Chạy code
Mã:
Sub ABC()
  Dim sArr(), aEmp(), res(), dic As Object, sRow&, i&, ik&
 
  Set dic = CreateObject("scripting.dictionary")
  With Sheets("data")
    aEmp = .Range("F2", .Range("F" & Rows.Count).End(xlUp)).Value
    sRow = UBound(aEmp)
    ReDim res(1 To sRow, 1 To 2)
    For i = 1 To sRow
      dic.Item(aEmp(i, 1)) = i 'Dong ket qua
    Next i
    sArr = .Range("A2", .Range("C" & Rows.Count).End(xlUp)).Value
    sRow = UBound(sArr)
    For i = sRow To 1 Step -1
      ik = dic.Item(sArr(i, 1)) 'Dong ket qua
      If ik > 0 Then
        If res(ik, 1) < sArr(i, 2) Then
          res(ik, 1) = sArr(i, 2)
          res(ik, 2) = sArr(i, 3)
        End If
      End If
    Next i
     .Range("G2").Resize(UBound(aEmp), 2).Value = res
  End With
End Sub
 
Upvote 0
Chạy code
Mã:
Sub ABC()
  Dim sArr(), aEmp(), res(), dic As Object, sRow&, i&, ik&
 
  Set dic = CreateObject("scripting.dictionary")
  With Sheets("data")
    aEmp = .Range("F2", .Range("F" & Rows.Count).End(xlUp)).Value
    sRow = UBound(aEmp)
    ReDim res(1 To sRow, 1 To 2)
    For i = 1 To sRow
      dic.Item(aEmp(i, 1)) = i 'Dong ket qua
    Next i
    sArr = .Range("A2", .Range("C" & Rows.Count).End(xlUp)).Value
    sRow = UBound(sArr)
    For i = sRow To 1 Step -1
      ik = dic.Item(sArr(i, 1)) 'Dong ket qua
      If ik > 0 Then
        If res(ik, 1) < sArr(i, 2) Then
          res(ik, 1) = sArr(i, 2)
          res(ik, 2) = sArr(i, 3)
        End If
      End If
    Next i
     .Range("G2").Resize(UBound(aEmp), 2).Value = res
  End With
End Sub
Trân trọng biết ơn các anh đã nhiệt tình giúp đỡ!
Em với tư cách là người được thụ hưởng thành quả, đã thử code của các anh và thấy có chút xíu vấn đề ở ý 2 (Cột 1 cho trước, điền Cột 2&3). Cụ thể là:
* Với code của anh Cá ngừ F1, nếu cột 1 ở vùng kết quả trống, hoặc có 1 dòng dữ liệu, hoặc có nhiều dòng nhưng không trùng với cột 1 ở Data gốc thì bị lỗi; ngoài ra không lỗi.
* Với code của anh HieuCD, nếu cột 1 ở vùng kết quả có 1 dòng dữ liệu (dù trùng hay không trùng với cột 1 Data gốc) thì báo lỗi; ngoài ra không lỗi.
 
Upvote 0
haha, nói chung muốn bẫy lỗi thì phải có dữ liệu thật. Còn không thì cử thêm "on error resume next" ở đầu code cho bỏ qua lỗi thì chạy phè phè hết à.
 
Upvote 0
haha, nói chung muốn bẫy lỗi thì phải có dữ liệu thật. Còn không thì cử thêm "on error resume next" ở đầu code cho bỏ qua lỗi thì chạy phè phè hết à.
Vâng anh, em cũng toàn cho "on error resume next" vào đầu vì không biết cách bẫy :D . Nhưng với trường hợp này mà cho vào thì sẽ bị bỏ qua 1 trường hợp là Cột 1 Vùng kết quả có 1 dòng dữ liệu, dù trùng khớp với cột 1 của Data gốc sẽ không được liệt kê ra ạ.
 
Upvote 0
Bạn viết 2 hàm sau:
Ngày Max:=max('Table1'[Date]) /* Lấy ngày gần nhất*/
Doanh_thu:=Calculate(sum('Table1'[Money]), Filter('Table1','Table1'[Date] = Max('Table1'[Date]))) /* Lấy giá trị Monney tương ứng */
 
Upvote 0
Trân trọng biết ơn các anh đã nhiệt tình giúp đỡ!
Em với tư cách là người được thụ hưởng thành quả, đã thử code của các anh và thấy có chút xíu vấn đề ở ý 2 (Cột 1 cho trước, điền Cột 2&3). Cụ thể là:
* Với code của anh Cá ngừ F1, nếu cột 1 ở vùng kết quả trống, hoặc có 1 dòng dữ liệu, hoặc có nhiều dòng nhưng không trùng với cột 1 ở Data gốc thì bị lỗi; ngoài ra không lỗi.
* Với code của anh HieuCD, nếu cột 1 ở vùng kết quả có 1 dòng dữ liệu (dù trùng hay không trùng với cột 1 Data gốc) thì báo lỗi; ngoài ra không lỗi.
Thêm lệnh bẩy lỗi
Mã:
Sub ABC()
  Dim sArr(), aEmp(), res(), dic As Object, sRow&, i&, ik&
 
  Set dic = CreateObject("scripting.dictionary")
  With Sheets("data")
    i = .Range("A" & Rows.Count).End(xlUp).Row
    ik = .Range("F" & Rows.Count).End(xlUp).Row
    If i < 2 Or ik < 2 Then MsgBox ("Khong co du lieu!"): Exit Sub
    sArr = .Range("A2:C" & i).Value
    aEmp = .Range("F2:G" & ik).Value
    sRow = UBound(aEmp)
    ReDim res(1 To sRow, 1 To 2)
    For i = 1 To sRow
      If aEmp(i, 1) <> Empty Then dic.Item(aEmp(i, 1)) = i 'Dong ket qua
    Next i
    sRow = UBound(sArr)
    For i = sRow To 1 Step -1
      ik = dic.Item(sArr(i, 1)) 'Dong ket qua
      If ik > 0 Then
        If res(ik, 1) < sArr(i, 2) Then
          res(ik, 1) = sArr(i, 2)
          res(ik, 2) = sArr(i, 3)
        End If
      End If
    Next i
     .Range("G2").Resize(UBound(aEmp), 2).Value = res
  End With
End Sub
 
Upvote 0
Kính chào các anh, chị, các bạn trong diễn đàn!
Mình có tra Google cũng như tìm trên trang này vấn đề của mình nhưng thật sự chưa thấy kết quả mong muốn. Vì vậy, mình mạo muội viết bài này xin được giúp đỡ. Đề bài của mình như sau:
* Mình có một Data gồm 3 cột. Cột 1 là tên các nhân viên (với giả thiết không có ai trùng tên ai), trong cột này tên nhân viên sẽ lặp lại nhiều lần, tương ứng với các ngày phát sinh khác nhau được ghi ở Cột 2 (Cột ngày tháng phát sinh) và giá trị phát sinh tương ứng được ghi ở Cột 3 (Cột giá trị tiền phát sinh).
Yêu cầu: Lọc ra danh sách (sử dụng VBA) cũng có 3 cột như ở Data gốc, với điều kiện, Cột 1 là tên không lặp lại. Cột 2 là ngày phát sinh gần nhất (so với hiện tại) tương ứng với tên của Cột 1. Cột 3 là số tiền tương ứng phát sinh.
Rất mong nhận được sự giúp đỡ!
Trân trọng,

P/S: Mình có tìm thấy code VBA 1 bài giống 2/3 yêu cầu của mình (lọc ra cột 1 và 2), nhưng từ 3 cột trở lên thì chưa thấy có.
Góp vui chống dịch.
Mã:
Sub ABC()
  Dim Arr(), KQ(), dic As Object, R&, i&, j&, t&, Lr&, k&
 
  Set dic = CreateObject("scripting.dictionary")
    With Sheets("Sheet1")    ' nếu tổng hợp ở ShDATA thì thay dòng này= With Sheets("Data")
    Lr = .Cells(Rows.Count, 1).End(xlUp).Row
   If Lr < 2 Then MsgBox ("Khong co du lieu!"): Exit Sub
    Arr = .Range("A2:C" & Lr).Value
    R = UBound(Arr)
    ReDim KQ(1 To R, 1 To 3)
    For i = 1 To R
        If Not dic.Exists(Arr(i, 1)) Then
            t = t + 1: dic.Add (Arr(i, 1)), t
            For j = 1 To 3
                KQ(t, j) = Arr(i, j)
            Next j
        Else
            k = dic.Item(Arr(i, 1))
            If Arr(i, 2) > KQ(k, 2) Then KQ(k, 2) = Arr(i, 2): KQ(k, 3) = Arr(i, 3)
        End If
        
    Next i
End With
   If t Then Sheets("Data").Range("J2").Resize(t, 3).Value = KQ
  Set dic = Nothing
End Sub
Nếu tổng hợp ở Sh Data thì thay dòng With Sheets(Sheet1) bằng With Sheets("Data")
 
Upvote 0
Kính chào các anh, chị, các bạn trong diễn đàn!
Mình có tra Google cũng như tìm trên trang này vấn đề của mình nhưng thật sự chưa thấy kết quả mong muốn. Vì vậy, mình mạo muội viết bài này xin được giúp đỡ. Đề bài của mình như sau:
* Mình có một Data gồm 3 cột. Cột 1 là tên các nhân viên (với giả thiết không có ai trùng tên ai), trong cột này tên nhân viên sẽ lặp lại nhiều lần, tương ứng với các ngày phát sinh khác nhau được ghi ở Cột 2 (Cột ngày tháng phát sinh) và giá trị phát sinh tương ứng được ghi ở Cột 3 (Cột giá trị tiền phát sinh).
Yêu cầu: Lọc ra danh sách (sử dụng VBA) cũng có 3 cột như ở Data gốc, với điều kiện, Cột 1 là tên không lặp lại. Cột 2 là ngày phát sinh gần nhất (so với hiện tại) tương ứng với tên của Cột 1. Cột 3 là số tiền tương ứng phát sinh.
Rất mong nhận được sự giúp đỡ!
Trân trọng,

P/S: Mình có tìm thấy code VBA 1 bài giống 2/3 yêu cầu của mình (lọc ra cột 1 và 2), nhưng từ 3 cột trở lên thì chưa thấy có.
Bạn thử tham khảo.
 

File đính kèm

  • GPE_VD1.xlsb
    33.2 KB · Đọc: 5
Upvote 0
Web KT

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

Back
Top Bottom