给出了以下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中 String 中是否可以找到Sheet02中的搜索条件。
如果是这样,请在 OutputThis (Sheet02)的输出(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"。它会将标准从完全匹配更改为广泛匹配。至少这是我想要它做的,但它并没有很好的锻炼。也许有人可以使用它并提供帮助。
答案 0 :(得分:1)
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])
部分:
4
/ \
2 6 ---------> output of DLL: 4<->2<->1<->3<->6<->5<->7.
/ \ / \
1 3 5 7
我习惯使用另一种形式,因为它通常更有用。
答案 1 :(得分:0)
这是一个单元格数组公式:
Sheet01!B2
中输入:=INDEX(Sheet02!B:B,MATCH(1,IF(ISERROR(SEARCH(Sheet02!A:A,A2)),0,1),0))
Sheet01!B3:B6
注意:它提供匹配的第一个Sheet02
搜索条件的输出,而不是字符串中找到的第一个。{1}}搜索条件的输出。因此字符串Test02 and Test01
将输出It is Test01
,因为Test01
列在Test02
Sheet02
之前。