Nhờ viết sub lọc dữ liệu từ nhiều sheet

Liên hệ QC

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,469
Nghề nghiệp
Công chức
Chào các bạn ! mình cần được giúp đỡ về viết sub lọc dữ liệu từ nhiều sheet với yêu cầu như sau: Có 1 file gồm nhiều Sheet (A), Sheet (B), Sheet (C), Sheet (…), và cuối cùng là Sheet (TongHop),
Mình muốn từ Sheet TongHop có một InBox để nhập điều kiện lọc, sau khi nhấn OK thì dữ liệu lọc từ các Sheet được đưa vào sheet(TongHop).

Nếu làm bằng tay thì như sau: dùng Autofilter lọc sheet(A), copy dữ liệu paste sang sheet(TongHop), tiếp đó lọc sheet(B) copy sang dán tiếp vào sheet(TongHop)…
giả định các bảng nguồn trong các sheet là giống nhau. Dữ liệu giả lập trong file đính kèm.

Rất mong các bạn quan tâm giúp đỡ, Xin cảm ơn !
 

File đính kèm

Chào các bạn ! mình cần được giúp đỡ về viết sub lọc dữ liệu từ nhiều sheet với yêu cầu như sau: Có 1 file gồm nhiều Sheet (A), Sheet (B), Sheet (C), Sheet (…), và cuối cùng là Sheet (TongHop),
Mình muốn từ Sheet TongHop có một InBox để nhập điều kiện lọc, sau khi nhấn OK thì dữ liệu lọc từ các Sheet được đưa vào sheet(TongHop).

Nếu làm bằng tay thì như sau: dùng Autofilter lọc sheet(A), copy dữ liệu paste sang sheet(TongHop), tiếp đó lọc sheet(B) copy sang dán tiếp vào sheet(TongHop)…
giả định các bảng nguồn trong các sheet là giống nhau. Dữ liệu giả lập trong file đính kèm.

Rất mong các bạn quan tâm giúp đỡ, Xin cảm ơn !

Gửi bạn !
PHP:
Sub LocDuLieu()
Dim Sh As Worksheet, VungDK As Range, Cell As Range, Data As Range
Dim DK As String, Rw As Long, R As Long
Application.ScreenUpdating = False
DK = InputBox("Nhap dieu kien loc", "LOC DU LIEU TU NHIEU SHEETS")
If Trim(DK) = "" Then MsgBox "Ban chua nhap du lieu!": Exit Sub
R = 2: [B2:E65536].Clear
For Each Sh In Worksheets
    With Sh
    If .Name <> ActiveSheet.Name Then
        Rw = .[F65536].End(xlUp).Row
        If Rw > 1 Then
        Set VungDK = .Range("F2:F" & Rw)
            For Each Cell In VungDK
            If InStr(1, Cell, DK, 1) > 0 Then
            Cell.Offset(0, -4).Resize(1, 4).Copy Destination:=Cells(R, 2): R = R + 1
            End If
            Next
        End If
    End If
    End With
Next
Set VungDK = Nothing: Set Cell = Nothing
Application.ScreenUpdating = True
End Sub
 

File đính kèm

Upvote 0
Cảm ơn hoangdanh282vn mình đã test thử chương trình chạy tốt nhưng chưa đủ yêu cầu đầu bài nêu vì còn thiếu đoạn code gán giá trị lọc và đặt Autofilter cho VungDK ("F2:F" & Rw)của các bảng nguồn.
Rất mong hoangdanh282vn và các bạn hoàn chỉnh giúp. Xin cảm ơn !
 
Upvote 0
Cảm ơn hoangdanh282vn mình đã test thử chương trình chạy tốt nhưng chưa đủ yêu cầu đầu bài nêu vì còn thiếu đoạn code gán giá trị lọc và đặt Autofilter cho VungDK ("F2:F" & Rw)của các bảng nguồn.
Rất mong hoangdanh282vn và các bạn hoàn chỉnh giúp. Xin cảm ơn !

Quả thật là khó để hiểu yêu cầu của bạn.
Bạn muốn là duyệt qua các sheet, dòng nào của sheet đang duyệt chứa điều kiện trong inputbox thì copy và dán vào sheet tổng hợp. Thế thì thỏa mãn yêu cầu rồi còn gì.
Còn cái vụ Autofillter thì có cần thiết không. Hay ý bạn là khi duyệt qua từng sheet thì chèn thêm cái autofillter vào đầu dữ liệu, lọc dữ liệu theo điều kiện trong input box để xem và so sánh với kết quả à.
 
Lần chỉnh sửa cuối:
Upvote 0
Nói theo cách mình hiểu

Trung Chính muốn, rằng tại 'TongHop' ta chọn tên xã trong danh sách duy nhất; sau đó bấm nút để tất cả các records từ các trang tính khác (hay tên các trang cho trước) được lọc vô 'TongHop'
Mình đang phân vân, liệu tác giả có yêu cầu tự động lập cái danh sách xã duy nhất này hay không nữa.

Nếu đúng thì hoan hô mình cái nha!)(&&@@
 
Upvote 0
Quả thật là khó để hiểu yêu cầu của bạn.
Bạn muốn là duyệt qua các sheet, dòng nào của sheet đang duyệt chứa điều kiện trong inputbox thì copy và dán vào sheet tổng hợp. Thế thì thỏa mãn yêu cầu rồi còn gì.
Còn cái vụ Autofillter thì có cần thiết không. Hay ý bạn là khi duyệt qua từng sheet thì chèn thêm cái autofillter vào đầu dữ liệu, lọc dữ liệu theo điều kiện trong input box để xem và so sánh với kết quả à.

Xin lỗi hoangdanh282vn ! mình vừa xem lại Code của Bạn đúng là cái vụ Autofillter không cần thiết (vì code không lọc bằng Autofillter).
Vậy có phải nhập dữ liệu vào cột F như trong ví dụ không ? vì khi mình xoá cột F và chạy lại thì không cho kết quả, bạn xem lại giúp nhé, ý mình là muốn tự động cả công việc này. Thanks !
 
Upvote 0
Xin lỗi hoangdanh282vn ! mình vừa xem lại Code của Bạn đúng là cái vụ Autofillter không cần thiết (vì code không lọc bằng Autofillter).
Vậy có phải nhập dữ liệu vào cột F như trong ví dụ không ? vì khi mình xoá cột F và chạy lại thì không cho kết quả, bạn xem lại giúp nhé, ý mình là muốn tự động cả công việc này. Thanks !

Đương nhiên rồi, cái này mình dùng cột F để lọc mà, nếu bạn muốn trích lọc và bỏ luôn cột F này thì phải chỉnh lại code.

Nhờ các Bạn giúp tiếp mình nhé, mình mới đầu tìm hiểu về VBA nên chưa biết viết như thế nào. Thanks

Bỏ luôn cột F
PHP:
Sub LocDuLieu()
Dim Sh As Worksheet, VungDK As Range, Cell As Range, Data As Range
Dim DK As String, Rw As Long, R As Long, CountR As Long
Application.ScreenUpdating = False
DK = InputBox("Nhap dieu kien loc", "LOC DU LIEU TU NHIEU SHEETS")
If Trim(DK) = "" Then MsgBox "Ban chua nhap du lieu!": Exit Sub
R = 2: [B2:E65536].Clear
For Each Sh In Worksheets
    With Sh
    If .Name <> ActiveSheet.Name Then
        Rw = .[D65536].End(xlUp).Row
        If Rw > 1 Then
            Set VungDK = .Range("E2:E" & Rw).SpecialCells(xlCellTypeConstants, 2)
            For Each Cell In VungDK
            If InStr(1, Cell, DK, 1) > 0 Then
                CountR = WorksheetFunction.Min(Rw, Cell.End(xlDown).Row) - Cell.Row
                Cell.Offset(0, -3).Resize(CountR, 4).Copy Destination:=Cells(R, 2)
                R = [D65536].End(xlUp).Row + 1
            End If
            Next
        End If
    End If
    End With
Next
Set VungDK = Nothing: Set Cell = Nothing
Application.ScreenUpdating = True
End Sub
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Thật ra bài này nếu làm bằng tay thì tôi sẽ làm như sau:
1> Ứng với mỗi sheet tôi sao lưu dử liệu vào 1 biến tạm... Tiếp theo fill cho đầy đủ cột E (bài toán fill các cell rổng này đã có 1 bạn hỏi, rất dể)
2> Dùng AutoFilter hoặc Advanced Filter để lọc dử liệu theo điều kiện
3> Copy vùng dử liệu Visible sang sheet TỔNG hợp
4> Trả mọi thứ về như ban đầu, tức xóa hết những cái ta đã fill thêm vào rồi Show all dử liệu
5> Chuyển sang sheet kế bên và tiếp tục như bước 1
Dùng VBA cũng sẽ theo hướng này... Sẽ có 2 vòng lập: 1 duyệt qua các sheet và 1 duyệt qua các cell rổng cột E (để fill)...
Có lẽ cái làm giãm tốc độ nhất là vòng lập thứ 2... Vậy ta đừng duyệt qua các cell rổng mà duyệt theo KHU VỰC như sau:
For i = 1 to TempRng.Areas.Count
Đại khái là vậy! (Giã sử có 100 cell rổng chia làm 5 vùng riêng thì vòng lập chỉ quét có 5 lần chứ ko phải 100 lần)
 
Upvote 0
Bỏ luôn cột F
PHP:
Sub LocDuLieu()
Dim Sh As Worksheet, VungDK As Range, Cell As Range, Data As Range
Dim DK As String, Rw As Long, R As Long, CountR As Long
Application.ScreenUpdating = False
DK = InputBox("Nhap dieu kien loc", "LOC DU LIEU TU NHIEU SHEETS")
If Trim(DK) = "" Then MsgBox "Ban chua nhap du lieu!": Exit Sub
R = 2: [B2:E65536].Clear
For Each Sh In Worksheets
    With Sh
    If .Name <> ActiveSheet.Name Then
        Rw = .[D65536].End(xlUp).Row
        If Rw > 1 Then
            Set VungDK = .Range("E2:E" & Rw).SpecialCells(xlCellTypeConstants, 2)
            For Each Cell In VungDK
            If InStr(1, Cell, DK, 1) > 0 Then
                CountR = WorksheetFunction.Min(Rw, Cell.End(xlDown).Row) - Cell.Row
                Cell.Offset(0, -3).Resize(CountR, 4).Copy Destination:=Cells(R, 2)
                R = [D65536].End(xlUp).Row + 1
            End If
            Next
        End If
    End If
    End With
Next
Set VungDK = Nothing: Set Cell = Nothing
Application.ScreenUpdating = True
End Sub

Trong Sub trên, ý nghĩa của 2 câu lệnh sau là gì ?
If InStr(1, Cell, DK, 1) > 0 Then
CountR = WorksheetFunction.Min(Rw, Cell.End(xlDown).Row) - Cell.Row
nhờ các bạn dịch giúp. Thanks !
 
Lần chỉnh sửa cuối:
Upvote 0
InStr(1, Cell, DK, 1): Nó giống như hàm find vậy, nó cũng trả về vị trí số ký tự tìm được trong Cell giống DK. Số 1 đầu là vị trí bắt đầu tìm, số 1 cuối là chỉ tìm suôi hay ngược. Nếu là 0 thì tìm ngược từ dưới lên. Ví dụ:
Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" 'String to search in. SearchChar = "P" ' Search for "P". ' A textual comparison starting at position 4. Returns 6. MyPos = Instr(4, SearchString, SearchChar, 1) ' A binary comparison starting at position 1. Returns 9. MyPos = Instr(1, SearchString, SearchChar, 0) ' Comparison is binary by default (last argument is omitted). MyPos = Instr(SearchString, SearchChar) ' Returns 9. MyPos = Instr(1, SearchString, "W") ' Returns 0.
Cái này lấy trong mục Help của hàm InStr đó. Bác thử vài lần sẽ hiểu thôi! Còn dòng lệnh dưới là lấy Min của (Rw: chỉ số dòng cuối cột D, chỉ số dòng cuối cùng Cell) trừ đi chỉ số dòng đầu của Cell. Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Giới thiệu bạn kiểu lọc như tôi nói ở trên (tôi nghĩ ko cần cái InputBox ấy đâu, vì quá dư thừa)
Làm thử 1 sheet! (Nếu lọc nhiều sheet thì cũng tương tự thế, các bạn tự chế lấy)... Ăn tiền ở đây là tốc độ:
PHP:
Sub Loc()
Sub Loc()
  Dim Rng As Range, BlankRng As Range, Des As Range
  On Error Resume Next
  Application.ScreenUpdating = False
  Set Rng = [A6].CurrentRegion: Rng.Interior.ColorIndex = 36
  Set BlankRng = Rng.Offset(, 3).Resize(, 1).SpecialCells(4)
  'Dien vao cac ô rong
  For i = 1 To BlankRng.Areas.Count
    With BlankRng.Areas(i)
      .Value = .Offset(-1).Resize(1).Value
    End With
  Next
  'Loc sang
  [F6].CurrentRegion.Clear
  Rng.AdvancedFilter Action:=1, CriteriaRange:=[E1:E2]
  BlankRng.ClearContents  '<=== Xoa du lieu da fill
  Rng.SpecialCells(12).Copy Destination:=[F6]
  Sheet1.ShowAllData
  BlankRng.ClearContents '<=== Xoa du lieu da fill
  Set Des = [F6].CurrentRegion
  Des.Interior.ColorIndex = 36
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thêm 1 đoạn code ngắn nữa để điền lại số thứ tự sau khi lọc ra kết quả:
PHP:
Option Explicit
Sub Loc()
  Dim Rng As Range, BlankRng As Range, Des As Range, Clls As Range
  Dim i As Long, j As Long
  On Error Resume Next
  Application.ScreenUpdating = False
  Set Rng = [A6].CurrentRegion
  Set BlankRng = Rng.Offset(, 3).Resize(, 1).SpecialCells(4)
  'Fill các cell rổng
  For i = 1 To BlankRng.Areas.Count
    With BlankRng.Areas(i)
      .Value = .Offset(-1).Resize(1).Value
    End With
  Next
  'Lọc sang
  [F6].CurrentRegion.Clear
  Rng.AdvancedFilter Action:=1, CriteriaRange:=[E1:E2]
  BlankRng.ClearContents  '<=== Xóa dử liệu đã fill
  Rng.SpecialCells(12).Copy Destination:=[F6]
  Sheet1.ShowAllData
  BlankRng.ClearContents '<=== Xóa dử liệu đã fill
  Set Des = [F6].CurrentRegion
  'Điền số thứ tự
  For Each Clls In Des.Offset(1, 1).Resize(, 1).SpecialCells(2, 23).Offset(, -1)
    Clls = j + 1: j = j + 1
  Next
End Sub
 

File đính kèm

Upvote 0
Nhờ viết sub lọc dữ liệu nhiều sheet theo điều kiện từ một danh sách

Chào các bạn ! Lần trước mình đã nhờ các bạn viết giúp Sub
Lọc dữ liệu nhiều sheet theo
điều kiện nhập từ Inbox (hoặc textbox)
mình đã vận dụng thành công. Nay do yêu cầu công việc phải
Lọc dữ liệu nhiều sheet theo
điều kiện từ một danh sách (điều kiện trong Sheet Loc). Mình đã tham khảo nhiều bài trên GPE và làm thử nhiều lần nhưng không thành công (do mình đang tập tẹ về VBA).
Dữ liệu giả lập và yêu cầu cụ thể trong file đính kèm. Rất mong được các bạn giúp đỡ. Xin cảm ơn !
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào các bạn ! Lần trước mình đã nhờ các bạn viết giúp Sub
Lọc dữ liệu nhiều sheet theo
điều kiện nhập từ Inbox (hoặc textbox)
mình đã vận dụng thành công. Nay do yêu cầu công việc phải
Lọc dữ liệu nhiều sheet theo
điều kiện từ một danh sách (điều kiện trong Sheet Loc). Mình đã tham khảo nhiều bài trên GPE và làm thử nhiều lần nhưng không thành công (do mình đang tập tẹ về VBA).
Dữ liệu giả lập và yêu cầu cụ thể trong file đính kèm. Rất mong được các bạn giúp đỡ. Xin cảm ơn !
Chưa hiểu lắm, bạn làm thử dữ liệu thô tại sheet TongHop. Cái này dùng Find là OK. Và hy vọng là cách hay nhất.

Hiểu như vậy có OK không. Trong DS2 Sh Loc gồm những tên nào thì lọc các sh Dulieu.. theo tên trong DS2 sang tong hop, chỉ lấy các cột TT, chủ hộ, hạng mục, DVT, SL.
 
Upvote 0
Chỉ có thể là phương thức FIND()!

Cái này dùng Find là OK. Và hy vọng là cách hay nhất.
Hiểu như vậy có OK không. Trong DS2 Sh Loc gồm những tên nào thì lọc các sh Dulieu.. theo tên trong DS2 sang tong hop, chỉ lấy các cột TT, chủ hộ, hạng mục, DVT, SL.
:-= :=\+
PHP:
Option Explicit
Sub Tong_Hop()
 Dim lRw As Long, Jf As Long
 Dim Sht As Worksheet, sRng As Range, Rng As Range, cRng As Range
 Dim sHo As String
 
 With Sheets("TongHop")
   Range(.[e3], Cells(.[f65500].End(xlUp).Row + 9, "H")).Clear
 End With
 
 Sheets("Loc").Select
 lRw = [b65500].End(xlUp).Row
 For Jf = 3 To lRw
   sHo = Cells(Jf, "B").Value
   If sHo <> "" Then
      For Each Sht In Worksheets
         With Sht
            If .Name <> "Loc" And .Name <> "TongHop" Then
               Set sRng = .Range(.[e4], .Cells(.[f65500].End(xlUp).Row, "E"))
               Set Rng = sRng.Find(what:=sHo, LookIn:=xlValues, lookat:=xlWhole)
               If Not Rng Is Nothing Then
                  If Rng.End(xlDown).Row < 65500 Then
                     Set cRng = Range(Rng, Rng.End(xlDown).Offset(-1, 3))
                  Else
                     Set cRng = Rng.Resize(789, 3)
                  End If
                  cRng.Copy Destination:=Sheets("TongHop"). _
                     Range("E" & Sheets("TongHop").[f65500].End(xlUp).Row + 1)
               End If
            End If
         End With
      Next Sht
   End If
 Next Jf
End Sub
 

File đính kèm

Upvote 0
Em cũng lỡ làm rồi nên up lên luôn, nhờ Bác Sa góp ý.
PHP:
Sub LayDL()
With Application
        .EnableEvents = False:       .DisplayAlerts = False:       .ScreenUpdating = False:       .Calculation = xlCalculationManual
End With
Dim RngFound As Range, SoTTrng As Range, TenHo As String, MyRng As Range, ShName As String
Dim eRow As Long, SoLan As Long, iR As Long, iL As Long, dmRng As Range, iSh As Long
Dim iTenHo As Long, rCount As Long, endR As Long
Sheet1.Select
Range(Cells(4, 4), Cells(20000, 8)).ClearContents
With Sheet4
    eRow = .Cells(1000, 2).End(xlUp).Row
    Set dmRng = .Range(.Cells(3, 2), .Cells(eRow, 2))
End With
endR = 4
For iSh = 1 To Sheets.Count
    ShName = Sheets(iSh).Name
    If InStr(ShName, "Dulieu") > 0 Then
        With Sheets(iSh)
            eRow = .Cells(1000, 4).End(xlUp).Row
            Set MyRng = .Range("E3:E" & eRow)
            Set SoTTrng = .Range("D3:D" & eRow)
            'SoTTrng.NumberFormat = "@"'
            Set RngFound = MyRng(1)
            With MyRng
                    For iTenHo = 1 To dmRng.Rows.Count
                    TenHo = dmRng(iTenHo)
                    If WorksheetFunction.CountIf(MyRng, TenHo) > 0 Then
                        Set RngFound = .Find(TenHo, After:=RngFound, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns)
                            iR = RngFound.Row
                            iL = RngFound.Offset(, -1)
                            rCount = WorksheetFunction.CountIf(SoTTrng, iL & "*") + 1
                            Range(Cells(endR, 4), Cells(endR - 1 + rCount, 8)).Value = RngFound.Offset(, -1).Resize(rCount, 5).Value
                            'Range(Cells(endR, 2), Cells(endR - 1 + rCount, 2)).Value = ShName'
                            endR = endR + rCount
                    End If
                  Next
                End With
        End With
     End If
     
Next

Set LastCell = Nothing: Set RngFound = Nothing: Set MyRng = Nothing
With Application
       .EnableEvents = True:       .DisplayAlerts = True:       .ScreenUpdating = True:       .Calculation = xlCalculationAutomatic
End With

End Sub
 

File đính kèm

Upvote 0
Cảm ơn 2 bác HYen va ThuNghi !
Em đã test cả 2 Sub kết quả đúng như yêu cầu
Riêng code của bác HYen kết quả tại cột H (cột số lượng) thì thiếu hộ cuối cùng của mỗi sheet và chiếm mất dòng tổng của Sheet TongHop. Em sửa số 3 thành số 4 trong đoạn code: Set cRng = Rng.Resize(789, 4) thì kết qủa đúng (em sửa thử thấy kết quả đúng chứ không biết tại sao ?) còn dòng tổng thì chưa sửa được.
 
Upvote 0
Nhờ sửa code sub lọc dữ liệu nhiều sheet

Chào các bạn! Mình viết sub lọc dữ liệu nhiều sheet với ý định dùng Autofilter lọc các sheet dữ liệu nguồn sau đó copy sang sheet TongHop nhưng không biết vì sao nó không Autofilter các sheet nguồn mà lại Autofilter chính sheet TongHop (mình đã đặt code trong vòng quét sh).
Mã:
Sub LocSheetTheoDs()
    With Application
            .ScreenUpdating = False
            .DisplayAlerts = False
            .Calculation = xlCalculationManual
    'On Error Resume Next
    
    Dim Sh As Worksheet, VungDK As Range, Cell As Range
    'Dim DK As String, Rw As Long, R As Long, CountR As Long
    R = 4: [D4:M65536].ClearContents
    For Each Sh In Worksheets
        With Sh
            If .Name <> "Loc" And .Name <> "TongHop" Then
                Rw = .[F65536].End(xlUp).Row
                If Rw > 1 Then
                Set VungDK = .Range("C4:C" & Rw)
                    For Each Cell In VungDK
                        Cell.FormulaR1C1 = "=IF(RC[2]=0,OFFSET(RC4,-1,-1),IF(ISERROR(VLOOKUP(RC5,Loc!C2,1,0)),"""",RC4))"
                        'Cell.Value = Cell
                    Next
                End If
    Columns("C:C"). AutoFilter Field:=1, Criteria1:="<>"
     'Selection.AutoFilter
            End If
        End With
            'Set VungDK = Nothing: Set Cell = Nothing
    Next
    End With
            Application.ScreenUpdating = True
            Application.DisplayAlerts = True
            Application.Calculation = xlCalculationAutomatic
End Sub
Nhờ các bạn vui lòng sửa giúp. xin cảm ơn!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào các bạn! Mình viết sub lọc dữ liệu nhiều sheet với ý định dùng Autofilter lọc các sheet dữ liệu nguồn sau đó copy sang sheet TongHop nhưng không biết vì sao nó không Autofilter các sheet nguồn mà lại Autofilter chính sheet TongHop (mình đã đặt code trong vòng quét sh).
Sub LocSheetTheoDs()
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
'On Error Resume Next

Dim Sh As Worksheet, VungDK As Range, Cell As Range
'Dim DK As String, Rw As Long, R As Long, CountR As Long
R = 4: [D4:M65536].ClearContents
For Each Sh In Worksheets
With Sh
If .Name <> "Loc" And .Name <> "TongHop" Then
Rw = .[F65536].End(xlUp).Row
If Rw > 1 Then
Set VungDK = .Range("C4:C" & Rw)
For Each Cell In VungDK
Cell.FormulaR1C1 = "=IF(RC[2]=0,OFFSET(RC4,-1,-1),IF(ISERROR(VLOOKUP(RC5,Loc!C2,1,0)),"""",RC4))"
'Cell.Value = Cell
Next
End If
.Columns("C:C"). AutoFilter Field:=1, Criteria1:="<>" ''<==Thêm một dấu chấm vào đây thử xem
'Selection.AutoFilter
End If
End With
'Set VungDK = Nothing: Set Cell = Nothing
Next
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub

Bạn thử thêm 1 dấu chấm ngay tại dòng này:
.Columns("C:C"). AutoFilter Field:=1, Criteria1:="<>"
 
Upvote 0
Đúng nó rồi Ca_difi ạ. Thanks
 
Upvote 0
Web KT

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

Back
Top Bottom