Làm sao rút gọn câu lệnh .AutoFilter Field:=4, Criteria1:=Array(A1:A20) mà không bị lỗi ?

  • Thread starter Thread starter senhui
  • Ngày gửi Ngày gửi
Liên hệ QC

senhui

Thành viên mới
Tham gia
15/6/10
Bài viết
1
Được thích
0
Xin cao thủ VBA giúp đở !!!
Em có đoạn code như thế này :

Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( _
Sheets("NPT").Range("BW10").Value, Sheets("NPT").Range("BW11").Value, Sheets("NPT").Range("BW12").Value, _
Sheets("NPT").Range("BW13").Value, Sheets("NPT").Range("BW14").Value, Sheets("NPT").Range("BW15").Value, _
Sheets("NPT").Range("BW16").Value, Sheets("NPT").Range("BW17").Value, Sheets("NPT").Range("BW18").Value, _
Sheets("NPT").Range("BW19").Value, Sheets("NPT").Range("BW20").Value, Sheets("NPT").Range("BW21").Value, _
Sheets("NPT").Range("BW22").Value, Sheets("NPT").Range("BW23").Value, Sheets("NPT").Range("BW24").Value, _
Sheets("NPT").Range("BW25").Value, Sheets("NPT").Range("BW26").Value, Sheets("NPT").Range("BW27").Value, _
Sheets("NPT").Range("BW28").Value, Sheets("NPT").Range("BW29").Value), Operator:=xlFilterValues

làm cách nào để rút gọn Sheets("NPT").Range("BW10:BW29").Value lại được mà không phải điền vào thủ công như trên.
VD: Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( _ Sheets("NPT").Range("BW10:BW29").Value")
, Operator:=xlFilterValues 'viết vậy sẽ bị lỗi

Hay: Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( Sheets("NPT").Range("BW10:BW29").Value")
, Operator:=xlFilterValues 'cũng bị lỗi

Cao thủ có cách nào hay xin chỉ giúp e!!!
 
Xin cao thủ VBA giúp đở !!!
Em có đoạn code như thế này :

Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( _
Sheets("NPT").Range("BW10").Value, Sheets("NPT").Range("BW11").Value, Sheets("NPT").Range("BW12").Value, _
Sheets("NPT").Range("BW13").Value, Sheets("NPT").Range("BW14").Value, Sheets("NPT").Range("BW15").Value, _
Sheets("NPT").Range("BW16").Value, Sheets("NPT").Range("BW17").Value, Sheets("NPT").Range("BW18").Value, _
Sheets("NPT").Range("BW19").Value, Sheets("NPT").Range("BW20").Value, Sheets("NPT").Range("BW21").Value, _
Sheets("NPT").Range("BW22").Value, Sheets("NPT").Range("BW23").Value, Sheets("NPT").Range("BW24").Value, _
Sheets("NPT").Range("BW25").Value, Sheets("NPT").Range("BW26").Value, Sheets("NPT").Range("BW27").Value, _
Sheets("NPT").Range("BW28").Value, Sheets("NPT").Range("BW29").Value), Operator:=xlFilterValues

làm cách nào để rút gọn Sheets("NPT").Range("BW10:BW29").Value lại được mà không phải điền vào thủ công như trên.
VD: Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( _ Sheets("NPT").Range("BW10:BW29").Value")
, Operator:=xlFilterValues 'viết vậy sẽ bị lỗi

Hay: Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( Sheets("NPT").Range("BW10:BW29").Value")
, Operator:=xlFilterValues 'cũng bị lỗi

Cao thủ có cách nào hay xin chỉ giúp e!!!
Bạn tham khảo chủ đề này xem có giúp gì được không:
https://www.giaiphapexcel.com/diend...ia-array-trong-autofilter.140069/#post-899978
 
Upvote 0
kiểu thế này ,
Mã:
With Sheets("NPT")
    Sheets("LBTPH").[$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( _
    .[BW10], .[BW11], .[BW12], .[BW13], .[BW14], .[BW15], .[BW16], .[BW17] _
    ,.[BW18], .[BW19], .[BW20], .[BW21], .[BW22], .[BW23], .[BW24], .[BW25], _
    .[BW26], .[BW27], .[BW28], .[BW29]), Operator:=xlFilterValues
End With

hoặc dùng biến array, và dùng For chuyển thành mảng 1 chiều tham số cho Auto Filter
 
Upvote 0
Xin cao thủ VBA giúp đở !!!
Em có đoạn code như thế này :

Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( _
Sheets("NPT").Range("BW10").Value, Sheets("NPT").Range("BW11").Value, Sheets("NPT").Range("BW12").Value, _
Sheets("NPT").Range("BW13").Value, Sheets("NPT").Range("BW14").Value, Sheets("NPT").Range("BW15").Value, _
Sheets("NPT").Range("BW16").Value, Sheets("NPT").Range("BW17").Value, Sheets("NPT").Range("BW18").Value, _
Sheets("NPT").Range("BW19").Value, Sheets("NPT").Range("BW20").Value, Sheets("NPT").Range("BW21").Value, _
Sheets("NPT").Range("BW22").Value, Sheets("NPT").Range("BW23").Value, Sheets("NPT").Range("BW24").Value, _
Sheets("NPT").Range("BW25").Value, Sheets("NPT").Range("BW26").Value, Sheets("NPT").Range("BW27").Value, _
Sheets("NPT").Range("BW28").Value, Sheets("NPT").Range("BW29").Value), Operator:=xlFilterValues

làm cách nào để rút gọn Sheets("NPT").Range("BW10:BW29").Value lại được mà không phải điền vào thủ công như trên.
VD: Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( _ Sheets("NPT").Range("BW10:BW29").Value")
, Operator:=xlFilterValues 'viết vậy sẽ bị lỗi

Hay: Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter Field:=4, Criteria1:=Array( Sheets("NPT").Range("BW10:BW29").Value")
, Operator:=xlFilterValues 'cũng bị lỗi

Cao thủ có cách nào hay xin chỉ giúp e!!!
Dùng vòng lặp để lấy giá trị vào mảng là được.
 
Upvote 0
Nếu duyệt theo cột thì bạn dùng phương thức chuyển đổi mảng Application.Transpose
Để ngắn gọn hơn thì bỏ đi các tên biến đối chiếu.
Để ngắn gọn hơn nữa thì đổi CodeName của Worksheet thành LBTPH và NPT, Range đổi về dấu ngoặc Vuông
PHP:
Sheets("LBTPH").Range("$B$9:$E$9").AutoFilter 4, Application.Transpose(Sheets("NPT") .Range("BW10:BW29").Value), 7
'LBTPH.[$B$9:$E$9].AutoFilter 4, Application.Transpose(NPT.[BW10:BW29].Value), 7
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom