只显示包含特定文本string的行,在任何列中

我的挑战: 只显示包含特定文本string的行,不pipe文本string出现在哪个列中 ,即使string被其他文本包围(如在“aac,mnd,jxt”中查找“mnd”。这是一个简单的例子:

我有一个音乐家的电子表格,他们注册了一些歌曲。 每一行都是一首歌。 每列是一个乐器(吉他,贝司等)。

他们将首字母加到单元格中。 如果其他人已经在他们之前注册,他们可以添加一个逗号,并在他们的首字母缩写到底。 所以,一首歌的两个吉他手看起来就像是“aac,mnd”。

我只需要显示具有“mnd”(例如)的行,所以我可以看到她注册的所有歌曲。 但是“mnd”可能出现在任何列中。 也许在一些歌曲中,她弹低音,但在其他人中,她弹吉他。

如果她稍后报名,她的名字首字母就会这样写:“aac,mnd,joe”

我需要查看所有具有“mnd”的行,即使有逗号,空格和其他文本。

可能吗? 我使用Excel或Google电子表格(我不在乎)。 我find了根据单列过滤行的方法,但是我需要根据可能在任何列中的文本string进行过滤。 怎么样?

假设我们有ABC列的数据

我们只想看到行中某处包含qwerty的行。

D2中input:

 =A2 &" "& B2 & " " & C2 

并抄下来。 在E2中input:

 =IFERROR(SEARCH("qwerty",D2,1),"") 

并抄下来。

然后在列E上设置自动筛选以隐藏空白行:

在这里输入图像描述

在VBA中你可以做这样的事情(brucewayne已经评论过这个方法)

 Sub FindAndHide(LookingFor As String) Dim i As Long, j As Long Dim Rng As Range Dim Arr As Variant Dim RowContainsString As Boolean Set Rng = ActiveSheet.UsedRange Arr = Rng.Value LookingFor = LCase(LookingFor) For i = LBound(Arr, 1) To UBound(Arr, 1) RowContainsString = False For j = LBound(Arr, 2) To UBound(Arr, 2) If InStr(LCase(Arr(i, j)), LookingFor) > 0 Then RowContainsString = True Exit For End If Next j If Not RowContainsString Then Rng.Rows(i).Hidden = True Next i End Sub Sub Test() FindAndHide LookingFor:="A" End Sub 

如果工作表有大量的数据,那么你可以closures屏幕更新或使用联盟来build立你想隐藏的范围,并隐藏一切。