如何在不同的Excel工作表中搜索范围内单元格内容



我正在为以下场景搜索公式(如果存在):在工作簿中,我有工作表"A"和"B"在工作表"A"中,在单元格"A1"上,我有"罗杰斯"在工作表"B"中,在单元格"B1":"B20"上,我有一系列"名字姓氏"

我正在寻找的是搜索书"B"中"B1:B2O"范围内的"A1"中的单元格"A1",如果单元格"A1"的内容在该范围内找到,则返回"

是",如果未找到,则返回"否"。

我已经尝试了搜索,查找,ISNUMBER,IF,IF错误公式的几种组合,但没有一个对我有用,这让我相信,我可能没有输入正确的公式。

任何帮助都非常感谢。

可能有一个更漂亮的方法可以做到这一点,但是使用数组公式(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,并会说 YesNo .

也可以

使用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

最新更新