Code lọc dữ liệu trùng lặp theo điều kiện (1 người xem)

Liên hệ QC

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

Anhduong2015

Thành viên chính thức
Tham gia
29/7/21
Bài viết
53
Được thích
12
Xin chào anh/chị
Nhờ anh/chị trên diễn đàn trợ giúp em đoạn code liên quan đến việc lọc dữ liệu trùng lặp theo điều kiện ngày và copy sang bảng báo cáo.
Các bước em đang làm thủ công là:
B1: Lọc dữ liệu cột ngày tháng sheet DATA theo điều kiện ô D3 Sheet KQ
B2: Copy toàn bộ cột Ngày tháng sheet DATA dán vào một vùng trống
B3: Sử dụng chức năng Remove Duplicates
B4: Copy sau đó Paste vào ô F4 Sheet KQ
Tuy nhiên việc này em làm rất mất thời gian nhờ các anh/chị trợ giúp em đoạn code để tiết kiệm thời gian và chính xác hơn
Em có gửi hình kèm theo file Demo đính kèm (file thực em rất nặng hơn 100.000 dòng)
Capture.PNG
Xin cám ơn.
 

File đính kèm

Xin chào anh/chị
Nhờ anh/chị trên diễn đàn trợ giúp em đoạn code liên quan đến việc lọc dữ liệu trùng lặp theo điều kiện ngày và copy sang bảng báo cáo.
Các bước em đang làm thủ công là:
B1: Lọc dữ liệu cột ngày tháng sheet DATA theo điều kiện ô D3 Sheet KQ
B2: Copy toàn bộ cột Ngày tháng sheet DATA dán vào một vùng trống
B3: Sử dụng chức năng Remove Duplicates
B4: Copy sau đó Paste vào ô F4 Sheet KQ
Tuy nhiên việc này em làm rất mất thời gian nhờ các anh/chị trợ giúp em đoạn code để tiết kiệm thời gian và chính xác hơn
Em có gửi hình kèm theo file Demo đính kèm (file thực em rất nặng hơn 100.000 dòng)
View attachment 263268
Xin cám ơn.
Bạn thử đoạn code sau:
Mã:
Option Explicit
Sub LSX_No()
    Dim data(), r As Long, iDate As Date, dic As Object, sLSX As String
    Set dic = CreateObject("Scripting.Dictionary")
    With ThisWorkbook.Worksheets("DATA")
        .AutoFilterMode = False
        data = .Range("C6").CurrentRegion.Value
    End With
    With ThisWorkbook.Worksheets("KQ")
        iDate = .Range("D3")
        For r = 3 To UBound(data, 1)
            If data(r, 1) = iDate Then
                sLSX = data(r, 5)
                If Len(sLSX) <> Empty And Not dic.Exists(sLSX) Then dic.Add sLSX, iDate
            End If
        Next r
        r = dic.Count
        .Range("F4").Resize(100000).ClearContents
        If r Then .Range("F4").Resize(r) = WorksheetFunction.Transpose(dic.Keys)
    End With
End Sub
 
Upvote 0
Bạn thử đoạn code sau:
Mã:
Option Explicit
Sub LSX_No()
    Dim data(), r As Long, iDate As Date, dic As Object, sLSX As String
    Set dic = CreateObject("Scripting.Dictionary")
    With ThisWorkbook.Worksheets("DATA")
        .AutoFilterMode = False
        data = .Range("C6").CurrentRegion.Value
    End With
    With ThisWorkbook.Worksheets("KQ")
        iDate = .Range("D3")
        For r = 3 To UBound(data, 1)
            If data(r, 1) = iDate Then
                sLSX = data(r, 5)
                If Len(sLSX) <> Empty And Not dic.Exists(sLSX) Then dic.Add sLSX, iDate
            End If
        Next r
        r = dic.Count
        .Range("F4").Resize(100000).ClearContents
        If r Then .Range("F4").Resize(r) = WorksheetFunction.Transpose(dic.Keys)
    End With
End Sub
Híc! Cái này dùng Advanced Filter, code "gọn hơ".
Không biết với 100 ngàn dòng như tác giả nói có chạy được không.
PHP:
Sub GPE()
    Sheets("DATA").Range("C6", Sheets("DATA").Range("G1000000").End(xlUp)).AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("D2:D3"), CopyToRange:=Range("F3"), Unique:=True
End Sub
 

File đính kèm

Upvote 0
Xin chào anh/chị
Nhờ anh/chị trên diễn đàn trợ giúp em đoạn code liên quan đến việc lọc dữ liệu trùng lặp theo điều kiện ngày và copy sang bảng báo cáo.
Các bước em đang làm thủ công là:
B1: Lọc dữ liệu cột ngày tháng sheet DATA theo điều kiện ô D3 Sheet KQ
B2: Copy toàn bộ cột Ngày tháng sheet DATA dán vào một vùng trống
B3: Sử dụng chức năng Remove Duplicates
B4: Copy sau đó Paste vào ô F4 Sheet KQ
Tuy nhiên việc này em làm rất mất thời gian nhờ các anh/chị trợ giúp em đoạn code để tiết kiệm thời gian và chính xác hơn
Em có gửi hình kèm theo file Demo đính kèm (file thực em rất nặng hơn 100.000 dòng)
View attachment 263268
Xin cám ơn.
Thêm 1 cách cho bạn tham khảo:

Mã:
Sub LayDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No""")
        Sheet2.Range("F4:F100").ClearContents
        Sheet2.Range("F4").CopyFromRecordset .Execute("Select Distinct F5 From [Data$C8:G] Where F1 = #" & Format(Sheet2.Range("D3"), "yyyy-MMM-dd") & "#")
    End With
End Sub
Ngoài ra bạn có thể dùng PivotTable để lấy dữ liệu duy nhất nhé.
 
Upvote 0
Lời đầu tiên em xin gửi lời cám ơn chân thành đến tất cả các anh/chị đã quan tâm đến bài viết và giúp đỡ nhiệt tình.
Tuy nhiên có một số điều em còn đang vướng hoặc chưa rõ xin phép được trình bày thêm
1. Bài trợ giúp của anh/chị @Hoàng Nhật Phương kết quả đúng như em mong đợi tuy nhiên nếu được cho em hỏi thêm số 1 có ý nghĩa là gì để e học thêm kiến thức.

1.PNG
2. Bài trợ giúp của anh/chị @Ba Tê code rất đơn giản và dễ hiểu tuy nhiên khi em run thì nó lấy luôn dòng tiêu đề là số 5, thông tin này em để hiển thị cột và không muốn lấy và LSX ạ, đồng thời em mong muốn chỉ Paste Value không cần phải Paste cả định dạng.
Capture.PNG
3. Bài trợ giúp của anh/chị @Hai Lúa Miền Tây thì em run bị lỗi Open có thể là máy em còn thiếu cài đặt gì đó cũng rất mong anh/chị hướng dẫn thêm đồng thời em cũng xin cám ơn gợi ý về cách sử dụng PivotTable để lấy dữ liệu duy nhất
2.PNG
 
Upvote 0
Lời đầu tiên em xin gửi lời cám ơn chân thành đến tất cả các anh/chị đã quan tâm đến bài viết và giúp đỡ nhiệt tình.
Tuy nhiên có một số điều em còn đang vướng hoặc chưa rõ xin phép được trình bày thêm
1. Bài trợ giúp của anh/chị @Hoàng Nhật Phương kết quả đúng như em mong đợi tuy nhiên nếu được cho em hỏi thêm số 1 có ý nghĩa là gì để e học thêm kiến thức.

View attachment 263306
2. Bài trợ giúp của anh/chị @Ba Tê code rất đơn giản và dễ hiểu tuy nhiên khi em run thì nó lấy luôn dòng tiêu đề là số 5, thông tin này em để hiển thị cột và không muốn lấy và LSX ạ, đồng thời em mong muốn chỉ Paste Value không cần phải Paste cả định dạng.
View attachment 263307
3. Bài trợ giúp của anh/chị @Hai Lúa Miền Tây thì em run bị lỗi Open có thể là máy em còn thiếu cài đặt gì đó cũng rất mong anh/chị hướng dẫn thêm đồng thời em cũng xin cám ơn gợi ý về cách sử dụng PivotTable để lấy dữ liệu duy nhất
View attachment 263310
Báo lỗi tại dòng nào bạn?
 
Upvote 0
Lời đầu tiên em xin gửi lời cám ơn chân thành đến tất cả các anh/chị đã quan tâm đến bài viết và giúp đỡ nhiệt tình.
Tuy nhiên có một số điều em còn đang vướng hoặc chưa rõ xin phép được trình bày thêm
1. Bài trợ giúp của anh/chị @Hoàng Nhật Phương kết quả đúng như em mong đợi tuy nhiên nếu được cho em hỏi thêm số 1 có ý nghĩa là gì để e học thêm kiến thức.

View attachment 263306
Tôi giải thích theo cách hiểu của mình có thể dùng từ không được chính xác, bạn tham khảo nhé:
Mã:
Option Explicit

Sub LSX_No()
    Dim data(), r As Long, iDate As Date, dic As Object, sLSX As String ' khai bao bien (tham so)de truyen du lieu
    Set dic = CreateObject("Scripting.Dictionary") 'Khoi tao Dic tudien(chi chap nhan gia tri dua vao phai duy nhat)
    With ThisWorkbook.Worksheets("DATA")
        .AutoFilterMode = False 'Bo filter
        data = .Range("C6").CurrentRegion.Value ' gan du lieu tren bang tinh vao mang data
        'Bat dau tu cot c(1) den cot R(16)
    End With
    With ThisWorkbook.Worksheets("KQ")
        iDate = .Range("D3")
        'LBound(data, 1): gioi han duoi cua mang data = 1
        'UBound(data, 1): gioi han duoi cua mang data = 786 (hieu theo cach khac la so dong du lieu)
        For r = LBound(data, 1) + 2 To UBound(data, 1)
        'du lieu se bat dau chay tu LBound(data, 1)=1 +2 = 3 (chay tu dong 3 tuong ung voi dong 8 tren bang tinh)
        ' r bat dau chay tu 3 den 786
            If data(r, 1) = iDate Then ' neu cot 1 = ngay can loc
                sLSX = data(r, 5) ' cot 5 LSX_So
                If Len(sLSX) <> Empty Then ' chi chap nhan gia tri LSX_So <> rong
                    If Not dic.Exists(sLSX) Then 'kiem tra neu gia LSX_So da co trong tu dien DIC hay chua
                        dic.Add sLSX, iDate 'Neu gia tri LSX_So chua ton tai trong Dic thi dua vao trong Dic
                    End If
                End If
            End If
        Next r
        r = dic.Count 'dem so gia tri duoc dua vao dic
        .Range("F4").Resize(100000).ClearContents ' xoa du lieu cu tu F4 den 100K dong
        ' neu trong dic co gia tri (r> 0), ghi tat ca cac gia tri xuong sheet tu F4
        If r Then .Range("F4").Resize(r) = WorksheetFunction.Transpose(dic.Keys)
        'dic.Keys la kieu du lieu mang 1 chieu (kieu giong nhu A1,B1,C1...)
        ' muon xoay lai dang A1,A2,A3 thi phai dung Transpose
    End With
End Sub
 
Upvote 0
Tôi giải thích theo cách hiểu của mình có thể dùng từ không được chính xác, bạn tham khảo nhé:
Chân thành cám ơn bạn đã giúp đỡ và hướng dẫn tận tình có thể mình chưa hiểu hết nhưng sẽ lưu lại để thực hành và mài mò nghiên cứu thêm, về mảng và Dictionary mình tự học mãi mà vẫn chưa hiểu rõ được. Chúc bạn và gia đình nhiều sức khỏe.
Bài đã được tự động gộp:

Capture.PNGBáo lỗi tại dòng nào bạn?
Dạ ở ngay dòng Open ạ.
 
Upvote 0
Chân thành cám ơn bạn đã giúp đỡ và hướng dẫn tận tình có thể mình chưa hiểu hết nhưng sẽ lưu lại để thực hành và mài mò nghiên cứu thêm, về mảng và Dictionary mình tự học mãi mà vẫn chưa hiểu rõ được. Chúc bạn và gia đình nhiều sức khỏe.
Bài đã được tự động gộp:


Dạ ở ngay dòng Open ạ.
Bạn chép code của tôi vào file bạn gửi trên bài 1 hay là bạn chạy với file khác?
 
Upvote 0
..................................
2. Bài trợ giúp của anh/chị @Ba Tê code rất đơn giản và dễ hiểu tuy nhiên khi em run thì nó lấy luôn dòng tiêu đề là số 5, thông tin này em để hiển thị cột và không muốn lấy và LSX ạ, đồng thời em mong muốn chỉ Paste Value không cần phải Paste cả định dạng.
View attachment 263307

Nếu nó lấy luôn dòng tiêu đề là số 5, thì thử thêm dòng code này vào cuối cùng (code của Ba Tê).
Mã:
Sheet2.Range("F4").Delete Shift:=xlUp
 
Lần chỉnh sửa cuối:
Upvote 0
Từ đoan code trợ giúp của anh/chị @Hoàng Nhật Phương theo yêu cầu sử dụng em có tinh chỉnh lại là:
1. Bổ sung lọc thêm một điều kiện là ca tổng cộng có 02 điều kiện là ngày tháng và ca.
2. Báo cáo theo dạng dòng thay cho dạng cột bỏ hàm Transpose.
Tuy nhiên em mong muốn chỉ điền các giá trị vào 01 ô phân cách nhau bởi dấu phẩy và sắp xếp từ bé đến lớn nhưng không biết sử dụng code như thế nào vì vậy hy vọng tiếp tục nhận được sự quan tâm và giúp đỡ từ tất cả anh/chị.
Em có gửi lại file cập nhật
Untitled.png
 

File đính kèm

Upvote 0
Từ đoan code trợ giúp của anh/chị @Hoàng Nhật Phương theo yêu cầu sử dụng em có tinh chỉnh lại là:
1. Bổ sung lọc thêm một điều kiện là ca tổng cộng có 02 điều kiện là ngày tháng và ca.
2. Báo cáo theo dạng dòng thay cho dạng cột bỏ hàm Transpose.
Tuy nhiên em mong muốn chỉ điền các giá trị vào 01 ô phân cách nhau bởi dấu phẩy và sắp xếp từ bé đến lớn nhưng không biết sử dụng code như thế nào vì vậy hy vọng tiếp tục nhận được sự quan tâm và giúp đỡ từ tất cả anh/chị.
Em có gửi lại file cập nhật
View attachment 263379
Bạn thử sửa dòng:
Mã:
If r Then .Range("F4").Resize(r) = WorksheetFunction.Transpose(dic.Keys)
thành:
Mã:
If r Then .Range("F4") = Join(dic.Keys, ",") 'chú ý trên bảng tính F4 phải format kiểu text nếu nối các con số bởi dấu ","
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử sửa dòng:
Mã:
If r Then .Range("F4").Resize(r) = WorksheetFunction.Transpose(dic.Keys)
thành:
Mã:
If r Then .Range("F4") = Join(dic.Keys, ",") 'chú ý trên bảng tính F4 phải format kiểu text nếu nối các con số bởi dấu ","
Xin cám ơn anh/chị kết quả gần như mong đợi, tuy nhiên mình có thể sắp xếp được theo thứ tự từ bé đến lớn không ạ? cụ thể là: 160,326,327 (kết quả theo đoạn code là (327,326,160)
 
Lần chỉnh sửa cuối:
Upvote 0
Xin cám ơn anh/chị kết quả gần như mong đợi, tuy nhiên mình có thể sắp xếp được theo thứ tự từ bé đến lớn không ạ? cụ thể là: 160,326,327 (kết quả theo đoạn code là (327,326,160)

Bạn thử lại đoạn code sau:
Mã:
Option Explicit

Sub RemoveduplicatesAndSort_LSX()
    Dim data As Variant, Temp As Variant, sLSX As String, r As Long, i As Long, j As Long, iDate As Date, ca As Integer
    Dim dic As New Scripting.Dictionary 'Tools/References: "Microsoft Scripting Runtime"
    With ThisWorkbook.Worksheets("DATA")
        .AutoFilterMode = False
        r = .Range("C" & .Rows.Count).End(xlUp).Row
        If r < 8 Then
            MsgBox "Khong tim thay du lieu phu hop", vbCritical + vbOKOnly: Exit Sub
        End If
        data = .Range("C8:G" & r).Value
    End With
    With ThisWorkbook.Worksheets("KQ")
        iDate = .Range("D3"): ca = .Range("D4")
        .Range("F4").ClearContents
        .Range("F4").NumberFormat = "@"
        For r = LBound(data, 1) To UBound(data, 1)
            If data(r, 1) = iDate Then
                If data(r, 2) = ca Then
                    sLSX = data(r, 5)
                    If Not dic.Exists(sLSX) Then
                        dic.Add sLSX, iDate
                    End If
                End If
            End If
        Next r
        r = dic.Count
        If r = 0 Then
            MsgBox "Khong tim thay du lieu phu hop", vbCritical + vbOKOnly: Exit Sub
        End If
        ReDim data(0 To r - 1)
        For i = 0 To r - 1
            data(i) = dic.Keys(i)
        Next i
        If r = 1 Then GoTo ghiketqua_xuong_sheet
        For i = LBound(data) To UBound(data) - 1
           For j = i + 1 To UBound(data)
              If UCase(data(i)) > UCase(data(j)) Then
                 Temp = data(j)
                 data(j) = data(i)
                 data(i) = Temp
              End If
          Next j
        Next i
ghiketqua_xuong_sheet:
        .Range("F4") = Join(data, ",")
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu dữ liệu đã được sắp xếp như trong bài ( cột [C} ) thì dù dữ liệu có là 100.000 dòng hay hơn nữa thì khi chạy code ta cũng chỉ làm việc với vài ngàn hay chục ngàn dòng thoả 2 điều kiện mà thôi, không lo chuyện code chạy ì ạch
Thân
 
Upvote 0
Nếu dữ liệu đã được sắp xếp như trong bài ( cột [C} ) thì dù dữ liệu có là 100.000 dòng hay hơn nữa thì khi chạy code ta cũng chỉ làm việc với vài ngàn hay chục ngàn dòng thoả 2 điều kiện mà thôi, không lo chuyện code chạy ì ạch
Thân
Đúng rồi Bác ạ,mới đầu con cũng định có ý tưởng dùng sort trước tìm đến ngày theo điều kiện rồi chạy đến khi nó lớn hơn thì thoát vòng lặp.
Nhưng con không làm vì rút kinh nghiệm, trong chủ đề:

Không nên làm thay đổi đảo lộn dữ liệu gốc, bài này mà dùng sort từ đầu thì bài 22 còn gọn hơn nhiều ạ:"'
 
Upvote 0
Đúng rồi Bác ạ,mới đầu con cũng định có ý tưởng dùng sort trước tìm đến ngày theo điều kiện rồi chạy đến khi nó lớn hơn thì thoát vòng lặp.
Nhưng con không làm vì rút kinh nghiệm, trong chủ đề:

Không nên làm thay đổi đảo lộn dữ liệu gốc, bài này mà dùng sort từ đầu thì bài 22 còn gọn hơn nhiều ạ:"'
Hai bài này dữ liệu và yêu cầu khác nhau mà bạn, bài trong "thớt" này chắc chắn dữ liệu đã được sắp xếp, còn bài kia tại bạn muốn gọn nên sort dữ liệu gốc của người ta, người ta hông la sao được. Híc
Bài này dùng MATCH kiếm NGÀY thoả điều kiện, chạy tới lúc không thoả điều kiện NGÀY thì thoát ra thôi, mình nghĩ vài ngàn dòng thì nhằm nhò gì
Thân
 
Upvote 0
Hai bài này dữ liệu và yêu cầu khác nhau mà bạn, bài trong "thớt" này chắc chắn dữ liệu đã được sắp xếp, còn bài kia tại bạn muốn gọn nên sort dữ liệu gốc của người ta, người ta hông la sao được. Híc
Bài này dùng MATCH kiếm NGÀY thoả điều kiện, chạy tới lúc không thoả điều kiện NGÀY thì thoát ra thôi, mình nghĩ vài ngàn dòng thì nhằm nhò gì
Thân
Con làm thử theo gợi ý của Bác:
Mã:
Sub DuLieuKhongNhamNhoGi()
    Dim data As Variant, Temp As Variant, sLSX As String, r As Long, k As Long, iDate As Long, ca As Integer
    Dim dic As New Scripting.Dictionary 'Tools/References: "Microsoft Scripting Runtime"
    With ThisWorkbook.Worksheets("DATA")
        .AutoFilterMode = False
        r = .Range("C" & .Rows.Count).End(xlUp).Row
        If r < 8 Then Exit Sub
        .Range("C7:R" & r).Sort key1:=.Range("C7"), order1:=xlAscending, Key2:=.Range("D7"), Order2:=xlAscending, Key3:=.Range("G7"), Order3:=xlAscending, Header:=xlYes
        iDate = ThisWorkbook.Worksheets("KQ").Range("D3")
        k = Application.Match(iDate, .Range("C8:C" & r), 0)
        data = .Range("C" & k & ":G" & r).Value
    End With
    With ThisWorkbook.Worksheets("KQ")
         ca = .Range("D4")
        .Range("F4").ClearContents
        .Range("F4").NumberFormat = "@"
        For r = LBound(data, 1) To UBound(data, 1)
            If data(r, 1) = iDate Then
                If data(r, 2) = ca Then
                    sLSX = data(r, 5)
                    If Not dic.Exists(sLSX) Then
                        dic.Add sLSX, iDate
                    End If
                End If
                If data(r, 2) <> ca Then Exit For
            End If
            If data(r, 1) > iDate Then Exit For
        Next r
        r = dic.Count
        If r = 0 Then Exit Sub
        .Range("F4") = Join(dic.Keys, ",")
    End With
End Sub
 
Upvote 0
Hihi, mình không dám hướng dẫn hay gợi ý cho bạn viết đâu, vì mình không đủ trình độ để làm việc đó, mình cũng học viết code kiểu "giang hồ" thôi, Thầy của mình là tất cả anh chị em trên diễn đàn.
Thân
 
Upvote 0
1. Chân thành cám ơn sự quan tâm và giúp đỡ nhiệt tình của anh/chị @Hoàng Nhật Phương@concogia
2. Em đã chạy thử code trợ giúp của bài 22 và 26 thì kết quả đúng như mong đợi, về thời gian xử lý thì không quá chênh lệch còn theo kiến thức cá nhân non nớt thì em xem code #26 cảm thấy dễ hiểu hơn.
3. Thật sự rất trân quý sự nhiệt tình của tất cả anh/chị trên diễn đàn đặc biệt gửi lời cám ơn sâu sắc đến bạn @Hoàng Nhật Phương đã giúp đỡ em nhiệt tình trong bài này. Đồng thời cũng rất ngưỡng mộ kiến thức và sự khiêm tốn của anh/chị.
4. Qua đây em cảm thấy sự mạnh mẽ của mảng và Dictionary rất muốn được tìm hiểu, học hỏi nhờ các anh/chị nếu tiện xin giới thiệu giúp khóa học/tài liệu/link vài chủ đề trong diễn đàn GPE để em nắm nền tảng và từng bước học hỏi thực hành nhiều hơn.
Xin cám ơn !
 
Upvote 0
1. Chân thành cám ơn sự quan tâm và giúp đỡ nhiệt tình của anh/chị @Hoàng Nhật Phương@concogia
2. Em đã chạy thử code trợ giúp của bài 22 và 26 thì kết quả đúng như mong đợi, về thời gian xử lý thì không quá chênh lệch còn theo kiến thức cá nhân non nớt thì em xem code #26 cảm thấy dễ hiểu hơn.
3. Thật sự rất trân quý sự nhiệt tình của tất cả anh/chị trên diễn đàn đặc biệt gửi lời cám ơn sâu sắc đến bạn @Hoàng Nhật Phương đã giúp đỡ em nhiệt tình trong bài này. Đồng thời cũng rất ngưỡng mộ kiến thức và sự khiêm tốn của anh/chị.
4. Qua đây em cảm thấy sự mạnh mẽ của mảng và Dictionary rất muốn được tìm hiểu, học hỏi nhờ các anh/chị nếu tiện xin giới thiệu giúp khóa học/tài liệu/link vài chủ đề trong diễn đàn GPE để em nắm nền tảng và từng bước học hỏi thực hành nhiều hơn.
Xin cám ơn !
Bạn có thể tham khảo link: Index - Các bài viết về VBA
 
Upvote 0
Nếu mình làm bài này mình sẽ dùng thêm hàm Countifs, cho nó đủ bộ âm dương.
Mới đầu mình định tính theo cách này nhưng nếu đưa 'Countifs' vào nữa khi còn chậm hơn, vì dù sao đến khi không thỏa mãn điều kiện nữa thì code cũng tự thoát rồi mà nhỉ, hihi:
Mã:
If data(r, 1) > iDate Then Exit For
 
Upvote 0
Mới đầu mình định tính theo cách này nhưng nếu đưa 'Countifs' vào nữa khi còn chậm hơn, vì dù sao đến khi không thỏa mãn điều kiện nữa thì code cũng tự thoát rồi mà nhỉ, hihi:
Mã:
If data(r, 1) > iDate Then Exit For
Chị OT chưa bao giờ làm em thất vọng !hi
 
Upvote 0
Mới đầu mình định tính theo cách này nhưng nếu đưa 'Countifs' vào nữa khi còn chậm hơn, vì dù sao đến khi không thỏa mãn điều kiện nữa thì code cũng tự thoát rồi mà nhỉ, hihi:
Mã:
If data(r, 1) > iDate Then Exit For
Đúng rồi, code có thêm phần check điều kiện sẽ chặt chẽ chạy nhanh.
 
Upvote 0

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

Back
Top Bottom