Jay需要确定其中出现特定文本值的单元格。

他知道他可以使用Excel的“查找和替换”功能来手动确定包含文本值的单元格的地址,但是他正在寻找公式来确定单元格的地址。他想知道是否有一种方法可以搜索范围内的一段文本,并让Excel返回在其中找到该文本的单元格的地址。

您可以尝试两种方法。首先,如果要查找与单元格内容完全匹配的内容,则可以使用公式。基本公式是:

=ADDRESS(MATCH(C2,A:A,0),1)

在此示例中,单元格C2包含您要查找的值,列A是要搜索的单元格范围。

||无论C2的大写字母还是A列中的值,该公式都返回结果。因此,如果C2包含“苹果”,则该公式将与包含“苹果”,“苹果”或“苹果”的单元格正匹配。实际上,任何大小写混合都将匹配。

此公式将不会返回包含您要在其他文本中搜索的内容的单元格的地址。因此,如果您要搜索“苹果”(单元格C2),它将不会返回包含短语“苹果酥”的单元格的地址。您可以通过将通配符添加到搜索单元来稍微修改此行为。例如,如果您搜索“ apple”,则该公式将返回包含“ apple”的单元格的地址,即使该地址位于其他字符之前或之后。

应该指出的是,该公式仅返回满足条件的范围内第一个单元格的地址。如果您实际上想要满足条件的所有单元格的地址,则需要依赖宏。以下是一个很好的示例:

Function FindMe(x As Range, y As String) As String     Dim r As Range     Dim sResults As String     Dim sSearch As String

Application.Volatile     sSearch = LCase(y)

For Each r In x         If InStr(1, LCase(CStr(r.Value)), sSearch) > 0 Then             sResults = sResults & r.Address & ", "

End If     Next r     If Len(sResults) > 2 Then         FindMe = Left(sResults, Len(sResults) - 2)

Else         FindMe = ""

End If End Function

您可以通过简单地提供要搜索的范围以及要搜索的内容来使用该功能:

=FindMe(A:A, "apple")

如果您使用的范围较大(如本例中A列的全部),那么该函数花费大量时间返回结果就不会感到惊讶。这很有意义,因为它必须搜索范围内的每个单元格,而不管该单元格中是否有任何东西。

您也不需要为此功能使用任何通配符。如果您要查找的内容位于单元格内的任何位置,则假定发生匹配。它也不会注意您要查找的内容的大写或搜索范围内任何内容的大写。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10083)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: