Lỗi dò tìm khi sử dụng chế độ filter

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

lp0072021

Thành viên chính thức
Tham gia
23/8/22
Bài viết
60
Được thích
3
Em nhờ các anh/chị diễn đàn GPE.
Em có sheet "nhap lieu" khi đánh mã vào cột A thì sẽ áp tên từ sheet "danh muc", nhưng khi sheet" nhap lieu" ở chế độ lọc thì áp tên bị sai. nhờ anh chị xem giúp em code để khi ở chế độ lọc vẫn áp tên đúng với ạ.
 

File đính kèm

  • Saiapma.xlsm
    242.8 KB · Đọc: 8
Tại sao bạn không lồng hàm VLOOKUP vào code cho nhanh nhỉ?
Mỗi khi nhập vào cột A thì cột B và C tự động tìm
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim danhmuc As Range
Set danhmuc = Sheets("danhmuc").Range("A2:C10000")
If Intersect(Target, Range("A11:A10000")) Is Nothing Or Target = "" Or Target.Count > 1 Then Exit Sub
With WorksheetFunction
    If .CountIf(danhmuc.Columns(1), Target) Then
        Target.Offset(0, 1).Value = .VLookup(Target, danhmuc, 2, 0)
        Target.Offset(0, 2).Value = .VLookup(Target, danhmuc, 3, 0)
    End If
End With
End Sub
[/code]
 

File đính kèm

  • Saiapma.xlsm
    25.2 KB · Đọc: 4
Upvote 0
Tại sao bạn không lồng hàm VLOOKUP vào code cho nhanh nhỉ?
Mỗi khi nhập vào cột A thì cột B và C tự động tìm
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim danhmuc As Range
Set danhmuc = Sheets("danhmuc").Range("A2:C10000")
If Intersect(Target, Range("A11:A10000")) Is Nothing Or Target = "" Or Target.Count > 1 Then Exit Sub
With WorksheetFunction
    If .CountIf(danhmuc.Columns(1), Target) Then
        Target.Offset(0, 1).Value = .VLookup(Target, danhmuc, 2, 0)
        Target.Offset(0, 2).Value = .VLookup(Target, danhmuc, 3, 0)
    End If
End With
End Sub
[/code]
Còn dùng theo như mình thì sửa như thế nào bạn. bạn giúp mình với ạ.
Bài đã được tự động gộp:

Bạn tìm hiểu thêm cách sử dụng Find để ứng dụng vào bài của bạn xem
Còn dùng theo như mình thì sửa như thế nào bạn. bạn giúp mình với ạ.
 
Upvote 0
Còn dùng theo như mình thì sửa như thế nào bạn. bạn giúp mình với ạ.
Bài đã được tự động gộp:


Còn dùng theo như mình thì sửa như thế nào bạn. bạn giúp mình với ạ.
Tham khảo phương thức Find
 
Upvote 0
Tham khảo phương thức Find
Mình có sử dụng Find nhưng cũng bị sai bạn. bạn xem giúp mình với.
 

File đính kèm

  • Saiapma_2.xlsm
    241.2 KB · Đọc: 1
Upvote 0
Mình có sử dụng Find nhưng cũng bị sai bạn. bạn xem giúp mình với.
Thực ra nếu bạn cứ nhất quyết sử dụng theo code cũ. Thì trước khi dán kết quả xuống sheet. Hãy bung lọc ra rồi hãy dán thì sẽ sử dụng được code cũ
 
Upvote 0
Thực ra nếu bạn cứ nhất quyết sử dụng theo code cũ. Thì trước khi dán kết quả xuống sheet. Hãy bung lọc ra rồi hãy dán thì sẽ sử dụng được code cũ
Vì hay dùng lọc nhiều dòng giống nhau để nhập liệu nên mỗi lần bung ra để dán kết quả rồi sau đó lại lọc trở lại để nhập thì lâu.
 
Upvote 0
Em nhờ các anh/chị diễn đàn GPE.
Em có sheet "nhap lieu" khi đánh mã vào cột A thì sẽ áp tên từ sheet "danh muc", nhưng khi sheet" nhap lieu" ở chế độ lọc thì áp tên bị sai. nhờ anh chị xem giúp em code để khi ở chế độ lọc vẫn áp tên đúng với ạ.
Code của bạn có nhiều lệnh không cần thiết cần tinh chỉnh lại cho gọn
Thay vì gán kết quả nguyên mảng: ThisWorkbook.Worksheets("nhaplieu").Range("B11").Resize(UBound(sArr, 1), 2).Value = KQ
Bạn gán kết quả váo từng cell trong vòng For

ví dụ:
For i = 1 To UBound(sArr, 1) - 1
. . .
Thay KQ(i, 2) = Dic.Item(ma)(1)
Bằng Cells(i + 10, 3) = Dic.Item(ma)(1)
. . .

Bạn dùng biến range phù hợp hơn biến sArr()
 
Upvote 0
Web KT

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

Back
Top Bottom