在INDEX MATCH函数中使用子字符串

时间:2014-05-28 17:36:25

标签: excel google-sheets

我尝试使用INDEX MATCH函数自动使用另一个电子表格填充一个电子表格。然而,我填写的表单中有人名列在两个单独的单元格中(例如" John"在A1中," Doe"在B1中),而我填写的表单从他们被列为" DOE,JOHN Q。"在一个牢房里。常规的INDEX MATCH函数永远不会给出结果,因为域中没有单元格只包含字符串" Doe。"有没有办法为单元格中具有查找值的单元格执行函数作为子字符串?

作为参考,这是我对此问题的尝试,当然会返回错误:

=INDEX(Sheet2!G2:Sheet2!G2340,MATCH(B3,ISNUMBER(SEARCH(B3,Sheet2!C2:Sheet2!C2340)),0))

2 个答案:

答案 0 :(得分:1)

我认为你正走在正确的轨道上。我认为您的初始公式应该有效,但您需要进行两项更改:

  1. 匹配标准应为" TRUE"而不是" B3",因为ISNUMBER()函数的结果为TRUE或FALSE
  2. 输入公式时,按CTRL + SHIFT + ENTER而不是ENTER,使其成为数组函数
  3. 公式:

    =INDEX(Sheet2!G2:Sheet2!G2340,MATCH(TRUE,ISNUMBER(SEARCH(B3,Sheet2!C2:Sheet2!C2340)),0))
    

    如果要搜索名字和姓氏,可以将两个ISNUMBER()数组相乘,并搜索1而不是TRUE。这将使它与A3和B3相匹配:

    =INDEX(Sheet2!G2:Sheet2!G2340,MATCH(1,ISNUMBER(SEARCH(A3,Sheet2!C2:Sheet2!C2340))*ISNUMBER(SEARCH(B3,Sheet2!C2:Sheet2!C2340)),0))
    

    或者,您可以尝试将名字和姓氏一起匹配:

    =INDEX(Sheet2!G2:Sheet2!G2340,MATCH(TRUE,ISNUMBER(SEARCH(B3&", "&A3,Sheet2!C2:Sheet2!C2340)),0))
    

    希望这会有所帮助。如果我错过了什么,请告诉我!

答案 1 :(得分:0)

您可以连接字符串并将其作为 MATCH INDEX 函数的参数提供。它仍然无法正常工作,因为你没有像

这样的第二个名字/首字母
MATCH(B1 & ", "& A1, Sheet2!C2:C2340, -1)

虽然,您需要提供更多详细信息,以便从StackOverflow社区获得更多信息。