excel 是否有一种方法可以搜索并隐藏所有不包含输入到给定单元格中的值的列?

vbopmzt1  于 2022-12-14  发布在  其他
关注(0)|答案(3)|浏览(168)

我需要隐藏不包含键入特定单元格的部分值的所有行,但无法确定如何使用Excel中的VBA将单元格定义为搜索值而不是特定字符串。
我已经能够隐藏包含键入到单元格中的确切值的所有行,但还需要匹配所有部分值。

For a = 2 To 200
If Worksheets("Purchase Log").Cells(a, 2).Value = Cells(1, 35) Then    
Worksheets("Purchase Log").Rows(a).Hidden = False 
Else
Worksheets("Purchase Log").Rows(a).Hidden = True
End If

如果我在单元格(1,35)中键入5555并单击按钮,则所有不包含序列5555的单元格都将隐藏,而包含(例如)1555522的所有行将保持未隐藏状态。

hlswsv35

hlswsv351#

我添加了这个非VBA答案,因为对某些用户来说可能更容易。
可以使用集成的查找和替换工具根据单元格值隐藏行/列。
1.选择要搜索的单元格
1.打开“查找和替换”(CTRL+H)
1.选择“查找”选项卡并输入要搜索和隐藏的内容。
1.按“查找全部”
1.选择“查找所有结果”表中的所有结果(CTRL-A)
1.按下右侧的向下滚动按钮,使控件返回主窗口,而不会丢失所选内容
1.选择所有结果单元格的行(Shift-Space)
1.选择所有结果单元格的列(CTRL-SPACE)
1.右键单击将突出显示的选定行(标题)或列(标题)
1.按下隐藏
我认为这是一个非常有用的解决方案,因为它不需要添加VBA,宏,函数,过滤器等
祝你有美好的一天丹

zy1mlcev

zy1mlcev2#

使用Like应该可以达到这个目的:

For a = 2 To 200
    If Worksheets("Purchase Log").Cells(a, 2).Value Like "*" & Cells(1, 35) & "*" Then
        Worksheets("Purchase Log").Rows(a).Hidden = False
    Else
        Worksheets("Purchase Log").Rows(a).Hidden = True
    End If
Next
1szpjjfi

1szpjjfi3#

对部分匹配使用InStr():

For a = 2 To 200
    If InStr(Worksheets("Purchase Log").Cells(a, 2).Value, Cells(1, 35).Value) Then 
        Worksheets("Purchase Log").Rows(a).Hidden = False
    Else
        Worksheets("Purchase Log").Rows(a).Hidden = True
    End If
Next a

相关问题