我有一个userform,它使用一个复选框来过滤某个列的空白。要过滤的范围是Sheet 1 A1:C10,标准范围是Sheet 2 A1:C2。
如果选中:不要过滤C列 如果未选中:过滤掉C列上的空白
我环顾四周,发现在高级过滤器上过滤空白的操作员是" ="。因此,当我按下用户窗体上的按钮处理过滤器时,我将Sheet 2 C2设置为" ="
If Checkbox1.Value Then
Sheets(2).Range("C2").Value = ""
Else
Sheets(2).Range("C2").Value = "="
End If
Sheets(1).Range("A1:C10").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sheets(2).Range("A1:C2"), Unique:=False
当我处理这个时,所有条目都会消失,甚至是空白。如果我使用:
,情况也是如此Else
Sheets(2).Range("C2").Value = "<>"
这应显示非空白,但它会隐藏所有行。
这里是踢球者;为了排除故障,我录制了一个自动过滤空白的宏,它给了我这个:
ActiveSheet.Range("$A$1:$C$2").AutoFilter Field:=3, Criteria1:="="
所以,似乎过滤&#34; =&#34;是正确的,但它并不想与我合作。
旁注:只是为了踢,我认为标准单元格需要显示=&#34;&#34;,这意味着公式会读取=&#34; =& #34;&#34;&#34;&#34;&#34;,这意味着VBA会读取:
Else
Sheets(2).Range("C2").Value = "=""="""""""""""
这也行不通。
编辑: @Scott,我有以下四行。这似乎都不起作用。链接页面显示了删除空白的示例,而不是仅显示它们。因此除了&gt; 0之外,我尝试了= 0.
Else
Sheets(2).Range("C2").Value = "=LEN(Sheet1!C2)=0"
Else
Sheets(2).Range("C2").Value = "=""=LEN(Sheet1!C2)=0"""
Else
Sheets(2).Range("C2").Value = "=LEN(Sheet1!C2)>0"
Else
Sheets(2).Range("C2").Value = "=""=LEN(Sheet1!C2)>0"""
答案 0 :(得分:1)
好的,我们错过了一步。
sheet 2上的C1必须为空。
公式将处理过滤器部分。
然后代码是:
If Checkbox1.Value Then
Sheets(2).Range("C2").Value = ""
Else
Sheets(2).Range("C2").Formula = "=LEN(Sheet1!C2)=0"
End If
Sheets(1).Range("A1:C10").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sheets(2).Range("A1:C2"), Unique:=False