【问题标题】:How to search a Cell Content within a Range in different Excel Sheets如何在不同的 Excel 工作表中搜索范围内的单元格内容
【发布时间】:2015-06-16 16:29:08
【问题描述】:
我正在搜索以下场景的公式(如果存在):
在工作簿中,我有工作表“A”和“B”
在工作表“A”中,在单元格“A1”上,我有“Rogers”
在工作表“B”中,在单元格“B1”:“B20”上,我有一系列“FirstName LastNames”
我正在寻找的是在书“B”的“B1:B2O”范围内搜索“A”书的“A1”单元格,如果在其中找到单元格“A1”的内容范围,返回“是”,如果没有找到,返回“否”。
我尝试了 SEARCH、FIND、ISNUMBER、IF、IF ERROR 公式的几种组合,但没有一个对我有用,这让我相信,我可能不会输入正确的公式。
非常感谢任何帮助。
【问题讨论】:
标签:
excel
search
range
cell
worksheet
【解决方案1】:
可能有更漂亮的方法可以做到这一点,但是使用数组公式(CSE 公式)你可以做到:
=IF(SUM(IF(NOT(ISERROR(FIND(A1,Sheet2!B1:B20))),1,0))>0, "Yes", "No")
输入时按 Ctrl+Shift+Enter。这将测试B1:B20 范围内的每个单元格,看它是否包含A1。如果是这样,它不会抛出 #VALUE 错误。然后内部IF 将报告1,当发现更多时,将对其进行汇总。最后,外部IF 会查看数字是否大于0,并会说Yes 或No。
【解决方案2】:
也可以使用 VBA 方法。您将创建一个子例程(通过在工作簿打开时键入 ALT+F11)并以编程方式告诉宏要搜索什么以及返回什么。与公式相比,编码方法的唯一真正优势是更容易阅读和理解应该发生的事情,但效率不高。
例子:
Sub FindLast()
Dim EApp as Excel.Application
Dim ThisBook as Excel.Workbook
Dim ShtA as Excel.Worksheet
Dim ShtB as Excel.Worksheet
Dim SrchR as Excel.Range
Dim srchStr as String
Dim FindR as Excel.Range
Dim foundVal as Boolean
foundVal = False
Set EApp = GetObject("Excel.Application")
Set ThisBook = EApp.ActiveWorkbook
Set ShtA = ThisBook.Worksheets("A")
Set ShtB = ThisBook.Worksheets("B")
Set SrchR = ShtA.Range("$A$1")
srchStr = SrchR.Value
Set FindR = ShtB.Range("$B$1:$B$20")
For Each VarRange in FindR
If InStr(VarRange.Value, srchStr) > 0 Then
foundVal = True
End If
Next
If foundVal = True Then
SrchR.Offset(0,1).Value = "Yes"
Else
SrchR.Offset(0,1).Value = "No"
End If
End Sub