给出以下excel表:
Sheet01 字符串:A 输出:B
+---------------------+--------------+
| String | Output |
+---------------------+--------------+
| ABC Test01 | It is Test01 |
| DEF Test01 | It is Test01 |
| Test01 GHI | It is Test01 |
| Hellow Test02 World | Wow Test02 |
| Test02 Sum Sing | Wow Test02 |
+---------------------+--------------+
Sheet02 搜索标准:A 输出:B
+-----------------+--------------+
| Search Criteria | OutputThis |
+-----------------+--------------+
| Test01 | It is Test01 |
| Test02 | Wow Test02 |
+-----------------+--------------+
所以基本上我想知道Sheet02中的字符串中是否可以找到Sheet02中的搜索条件。 如果是,则显示OutputThis(Sheet02)的Output(Sheet01)值。
以下作品完全匹配:
=INDEX(Sheet02!B:B,MATCH(A2,Sheet02!A:A,0))
现在我只是尝试放入没有任何意义的类似操作符。因为excel现在无法在搜索条件中找到String的哪个部分。
我正在寻找的是什么
=New_Function(SearchCriteriaMatrix, SearchCell, OutputMatrix)
编辑:
我只是使用以下代码,它以某种方式工作:
=INDEX(Sheet02!B:B,Match(A2,Sheet02!A:A,-1))
关键是“-1”。它会将标准从完全匹配更改为广泛匹配。至少这是我想要它做的,但它不能很好地锻炼。也许有人可以使用它并提供帮助。
这是一个单元格数组公式:
Sheet01!B2
类型:
=INDEX(Sheet02!B:B,MATCH(1,IF(ISERROR(SEARCH(Sheet02!A:A,A2)),0,1),0))
Sheet01!B3:B6
注意:它给出匹配的第一个Sheet02
搜索条件的输出,而不是字符串中找到的第一个。所以字符串Test02 and Test01
将输出It is Test01
,因为Test01
在Test02
之前列出Sheet02
。
SEARCH
或FIND
可以在字符串中找到子字符串。所以类似于:
=LOOKUP(2,1/SEARCH(srchCritTbl[Search Criteria],A2),srchCritTbl[OutputThis])
将工作。
我将你的sheet2表变成了一个“真正的”表,我正在使用结构化引用,但它也适用于离散引用,但引用应该只包含数据表的活动部分,而不是整个列。
这是一个显示结果的屏幕截图:
如果您对Sheet02上的表使用直接引用,它将如下所示:
=LOOKUP(2,1/SEARCH(Sheet02!$A$2:$A$3,
Sheet01!$A2),Sheet02!$B$2:$B$3)
这种方式的工作方式:
SEARCH
返回一个数字或错误的数组,具体取决于是否在表1中的引用单元格中找到table2的内容。1/Search(...
将返回错误或某个必须不大于1的数字。2
作为LOOKUP
中的查找标准可以保证它将大于lookup_vector
中返回的任何值。result_vector
引用了OutputThis
列,因此将返回该列中的匹配条目。在这种情况下,人们还可以保证lookup_value
将大于lookup_vector
中的任何值,使用非常大的数字,并消除1/...
部分:
=LOOKUP(9.9E+307,SEARCH(srchCritTbl[Search Criteria],Sheet01!$A2),srchCritTbl[OutputThis])
我习惯使用另一种形式,因为它更有用。