Xem giúp giùm đoạn code lọc file duy nhất

Liên hệ QC

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia
18/3/08
Bài viết
8,309
Được thích
15,867
Giới tính
Nam
Nghề nghiệp
Làm ruộng.
Gửi các anh chị trên GPE và anh SeaLand
Em đã từng được anh Sealand chỉ tận tình về những thắc mắc của em, file đính kèm là 1 trong những thắc mắc đó.
- Nhờ anh chi xem lại đoạn code trong file đính kèm có vấn đề gì không mà sau khi chạy nó cho ra kết quả không như ý muốn, so với kết quả làm bằng thủ công thì nó loại bỏ mất đi những dữ liệu không nên loại bỏ...
Cám ơn các anh chị
 

File đính kèm

Bạn nên khai báo tường minh các biến trong sub.
Càng rõ ràng bao nhieu càng tôt bấy nhiêu. Việc này giúp ta dễ kiểm soát code và thực thi của code.
Đôi khi chỉ vì không khai báo biến thì phát sinh lỗi trong quá trình thực thi code. Biến có thể được gán bởi 1 Giá trị củ chuối nào đó nằm trong ô nhớ dẫn đến kết quả sai là chuyện có thể xảy ra.
Vài lời mong bạn xử lý tốt vấn đề.
Thân
 
Upvote 0
Tôi thắc mắc rằng: Bạn làm bằng tay có lẽ là dùng Advanced Filter ---> Vậy sao bạn không record macro trên cơ sở AF mà lại dùng FOR ---> File chạy chậm lắm!
 
Upvote 0
Gửi các anh chị trên GPE và anh SeaLand
Em đã từng được anh Sealand chỉ tận tình về những thắc mắc của em, file đính kèm là 1 trong những thắc mắc đó.
- Nhờ anh chi xem lại đoạn code trong file đính kèm có vấn đề gì không mà sau khi chạy nó cho ra kết quả không như ý muốn, so với kết quả làm bằng thủ công thì nó loại bỏ mất đi những dữ liệu không nên loại bỏ...
Cám ơn các anh chị

Mình sửa lại code của bạn như ý của bạn. Mình đã test kết quả rồi, ok
Bạn nên tham khảo bài viết trích lọc duy nhất dùng Advandfilter nha. Vừa ngắn gọn lại nhanh nữa.
PHP:
Sub Material()
Dim Dong As Long, i As Long, j As Long, Ch As String, C As Range
Application.ScreenUpdating = False
Dong = Sheet4.[D65500].End(xlUp).Row
With Sheet1
    .[C4:D2000].ClearContents
    i = 4
    For j = 2 To Dong
        Ch = Sheet4.Cells(j, 4).Value
        Set C = .Range("D3:D2000").Find(what:=Ch, LookIn:=xlValues, lookat:=xlWhole)
        If C Is Nothing Then
            .Cells(i, 4) = Ch
            .Cells(i, 3) = i - 3
            i = i + 1
        End If
    Next
    .Range("D4:D" & i - 1).Name = "Materials"
    With .Range("C3:D" & i - 1).Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
End With
Set C = Nothing
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Không hiểu sao lại cần phải For ---> Làm sao nó nhanh được như AF chứ
Bạn xem code này:
PHP:
Sub Material()
  Sheet1.[C4:D2000].ClearContents
  With Range(Sheet4.[D1], Sheet4.[D65536].End(xlUp))
    .AdvancedFilter 1, , , True
    .Offset(1).Copy: Sheet1.Range("D4").PasteSpecial 3
  End With
  Sheet4.ShowAllData
  With Range(Sheet1.[D4], Sheet1.[D4].End(xlDown))
    .Offset(, -1).Value = Evaluate("=Row(R1:R2000)")
  End With
End Sub
Tốc độ "thần sầu" luôn
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
mình mới làm quen với excel. giải thích giúp mình: code là gì? làm thế nào để xem code trong trong file? Cảm ơn thật nhiều
 
Upvote 0
Web KT

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

Back
Top Bottom