Vba 使用自动筛选条件时出错
我有一张床单。在这张表中,我总是检查S、T和U列 第一个案例是 I列S有“invalid”,那么我想隐藏整行 此外,如果列T和U都已填充,那么我还希望该行被隐藏 我执行了下面的代码Vba 使用自动筛选条件时出错,vba,excel,Vba,Excel,我有一张床单。在这张表中,我总是检查S、T和U列 第一个案例是 I列S有“invalid”,那么我想隐藏整行 此外,如果列T和U都已填充,那么我还希望该行被隐藏 我执行了下面的代码 Sub fc() Dim totalrows As Long totalrows = Range("A5").End(xlDown).Row With Sheets("FC").Range("Z5:Z" & totalrows) sformula = "=AND(S5<>""Inval
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
再次出现的问题是,即使在取消过滤代码后,第一次按下,我得到了结果,第二步,我所有的数据都被隐藏,在第三次按下时,我可以看到结果
有人能帮我解决这个问题吗。我相信问题出在我的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
Sub-fc()
所有行的长度相同
将FC设置为工作表:设置FC=此工作簿。工作表(“FC”)
totalrows=FC.Range(“A”&FC.Rows.Count).End(xlUp).Row
sformula=“=和(S6”“无效”“或(ISBLANK(T6)、ISBLANK(U6)))
FC.范围(“Z6:Z”和totalrows)。公式=s公式
带FC.范围(“Z5:Z”和totalrows)
.AutoFilter 26,正确
.Value=.Value2
以
端接头
我假设您在第5行有一个标题。您必须交换行,因为在输入公式之前,单元格在
之后根本没有值。AutoFilter
之后,它们被过滤(vbNullString,“,0等。True)。您可以在第二次迭代中看到正确的结果,因为单元格要求值(变为True),并且由于
。AutoFilter
只需更改筛选条件,即可重新筛选列并获得所需的结果。尝试以下操作:
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
Sub-fc()
所有行的长度相同
将FC设置为工作表:设置FC=此工作簿。工作表(“FC”)
totalrows=FC.Range(“A”&FC.Rows.Count).End(xlUp).Row
sformula=“=和(S6”“无效”“或(ISBLANK(T6)、ISBLANK(U6)))
FC.范围(“Z6:Z”和totalrows)。公式=s公式
带FC.范围(“Z5:Z”和totalrows)
.AutoFilter 26,正确
.Value=.Value2
以
端接头
我假设您在第5行有一个标题。您必须交换行,因为在输入公式之前,单元格在
之后根本没有值。AutoFilter
之后,它们被过滤(vbNullString,“,0等。True)。您可以在第二次迭代中看到正确的结果,因为单元格需要值(变为True)由于
.AutoFilter
只需更改筛选条件,他就重新筛选了列并得到了所需的结果。Value=.Value背后的意图是什么?@DavidG要隐藏公式并将其作为值进行交换,请尝试交换。AutoFilter 26,True
和。formula=sformula
(公式一,过滤器二). 另外,请注意,您有一个标题。@AntiDrondert它有效:)您可以发布,我会将其标记为答案。但我想知道交换的原因。你能解释一下.Value=.Value
背后的意图吗?@DavidG隐藏公式并将其作为值尝试交换.AutoFilter 26,True
和.formula=sformula
(公式第一,过滤器第二)。另外,请注意,您有一个标题。@AntiDrondert它有效:)您可以发布,我会将其标记为答案。但我想知道交换的原因。你能explain@could请你解释一下交换线路的原因。这将有助于我在未来的回答,解释below@could请你解释一下交换线路的原因。这将有助于我在未来的答案,解释如下