使用自动筛选条件时出错

我有一个工作表FC。 在这张表中,我总是检查S,T和U列。

第一个案例是。

我列S有“无效”,那么我希望整行被隐藏。

另外如果列T和U都填满了,那么我也希望行被隐藏。

我执行了下面的代码。

Sub fc() Dim totalrows As Long totalrows = Range("A5").End(xlDown).Row With Sheets("FC").Range("Z5:Z" & totalrows) sformula = "=AND(S5<>""Invalid"",OR(ISBLANK(T5),ISBLANK(U5)))" .AutoFilter 26, True .Formula = sformula .Value = .Value End With End Sub 

用这个代码,我有一个额外的列Z用作帮助列。 所以如果列S是无效的,而且如果列T和列5都不是空白的,那么我在Z列中将它们表示为“真”。

这里的问题是,在第一次迭代中,它显示了完美的结果。 (它过滤正确,只是显示错误)。 第二次迭代,整个数据是隐藏的。

我有一个button调用这个函数。 为了不过滤,我正在使用下面的代码。

 Sub UnfilterColumn() With Worksheets("FC") If Not Worksheets("FC").AutoFilter Is Nothing Then ThisWorkbook.Sheets("FC").Range("A4").AutoFilter Field:=26 End If End With End Sub 

问题再次出现在未经过滤的代码之后,第一次按下,我得到结果,第二步,我的所有数据都隐藏起来,在第三次按下时,我可以看到结果。

有人能帮我解决这个问题吗? 我相信问题出在我的FC代码中。

有没有其他办法来执行我的要求? 任何潜在客户都会有帮助

尝试这个:

 Sub fc() Dim totalrows As Long Dim FC as Worksheet: Set FC=ThisWorkbook.Worksheets("FC") totalrows = FC.Range("A" & FC.Rows.Count).End(xlUp).Row sformula = "=AND(S6<>""Invalid"",OR(ISBLANK(T6),ISBLANK(U6)))" FC.Range("Z6:Z" & totalrows).Formula = sformula With FC.Range("Z5:Z" & totalrows) .AutoFilter 26, True .Value=.Value2 End With End Sub 

我假设你在第5行有一个标题。
你必须交换行,因为在input公式单元格之前,在.AutoFilter之后,它们被完全过滤(vbNullString,“”,0等等。
您可以在第二次迭代中看到正确的结果,因为单元格为所需值(成为True),因为.AutoFilter只是简单地更改过滤条件,所以他重新筛选了列并获得了所需的结果。