我的问题是我想过滤掉不同列表中的特定值,我尝试了记录宏,但记录功能似乎只支持选择要保留的特定值而不是取出。
例如,如果列中填充了事先未知的每周数据,我想确保特定类别不在那里。如果工作表每周填写一次数据,列表标题如公司,产品,标识,制造日期,经理名称等等。
从我想要取出的公司专栏" ABC公司" ,“FAST ltd”,“WIN公司”无需知道其他公司名单。另外我想拿出一些产品,如“电脑”,“手机”,“笔记本电脑”,“SIM”。宏中的记录功能似乎只是说要保留什么,而不是要带走什么。我必须选择除了我要过滤的3家公司以外的所有公司。
请帮助我使用多个条件获取VBA代码以过滤掉。
我已尝试过此代码
ActiveSheet.Range("$A$1:$G$24").AutoFilter Field:=2, Criteria1:="<>ABC ccompany", _
Operator:=xlAnd, Criteria2:="<>WIN company", Operator:=xlAnd, Criteria3:="<>FAST ltd"
但我得到&#34;运行时错误1004&#34;。我认为Criteria方法一次只允许两个标准。
任何帮助都会很棒。
答案 0 :(得分:0)
Option Explicit
Sub hide_values(Company As Variant, Product As Variant)
On Error GoTo hell
Dim myList As ListObject, myLine As Range, myValues As Variant
Set myList = Me.ListObjects(1) ' assuming you have just one table on your page
For Each myLine In myList.DataBodyRange.Rows
myValues = myLine.Value
myLine.EntireRow.Hidden = False
If myValues(1, 1) = Company Then
myLine.EntireRow.Hidden = True
End If
Else If myValues(1, 2) = Product Then
myLine.EntireRow.Hidden = True
End If
Next myLine
End
hell:
Debug.Assert False
Resume
End Sub
Sub test_it()
ActiveSheet.hide_values "FAST ltd", "computer"
End Sub
此解决方案不完整,因为它只排除了一个公司和一个产品,但可以通过为每个公司传递一组字符串并循环遍历这些集合来扩展它。
答案 1 :(得分:0)
作为AutoFilter的替代品,我从@ Gary的学生那里找到了隐藏或显示工作表上的整行的信息。非常简单,易于修改。
Sub ThreeWay()
Dim rng As Range, r As Range
Set rng = Range("A2:A25")
For Each r In rng
v = Left(r.Value, 1)
If v = "A" Or v = "D" Or v = "M" Then
r.EntireRow.Hidden = False
Else
r.EntireRow.Hidden = True
End If
Next r
End Sub
答案 2 :(得分:0)
Sub hide_values(Company As Variant, Product As Variant)
On Error GoTo hell
Dim myList As ListObject, myLine As Range, myValues As Variant
Set myList = Me.ListObjects(1) ' assuming you have just one table on your page
myList.Range.AutoFilter Field:=1, Criteria1:="<>" & Company
' , Operator:=xlAnd, Criteria2:="<"&OtherCompany
myList.Range.AutoFilter Field:=1, Criteria1:="<>" & Product
hell:
Debug.Assert False
Resume
End Sub
Sub test_it()
ActiveSheet.hide_values "FAST ltd", "computer"
End Sub
此解决方案不完整,因为它仅排除了一家公司和一种产品。将其扩展到排除两个产品和公司是显而易见的(参见注释掉的代码),但进一步扩展它需要完全不同的代码来设置过滤器。 (如果您需要我详细说明,请告诉我。)
此选项的优点是:用户在子程序运行后保持对选择的控制。