对包含逗号分隔值的单元格使用 VLOOKUP 或 MATCH

Using VLOOKUP or MATCH for cells that contain comma separated values

我正在尝试将 VLOOKUPINDEXMATCH 的组合用于我正在 Google 表格中进行的一个小项目,但我运行 当单元格包含逗号分隔值时会遇到麻烦。我在下面提供了一个示例:

A列B列组成搜索范围,C列包含搜索键。 D栏使用VLOOKUP方法,E栏使用INDEXMATCH方法。第一行单元格的公式如下:

=VLOOKUP("*"&$C1&"*", A:B, 2, FALSE)

=INDEX($B:$B, MATCH("*"&$C1&"*", $A:$A, 0))
如果一切正常,

列 DE 应该垂直拼写 "SUCCESS",但显然存在一些问题.当我最初开始寻求帮助时,我找到了在搜索键的开头和结尾附加通配符 (*) 的方法,以便忽略我正在搜索的值之前或之后的文本。这有效,除非一个搜索键的条件可以匹配不同的搜索键,例如,当我在 Row 1 中搜索 "Pg 3" 但 "Pg 32" 和"Pg 33"也存在。只有当我要搜索的值本身不在单元格中并且在前面的行中有 "matching" 值时(例如 "Pg 33" 匹配 "Pg 3" 第 1 行 和 "Pg 64" 中的键匹配 第 7 行 中的 "Pg 6" 键。

不幸的是,在我正在处理的项目中,我无法将范围排序为字母数字顺序,因此我们将不胜感激任何解决方法的帮助,最好只使用公式而不是深入研究 Google应用程序脚本。希望我的解释足够清楚,我没有偏好使用 VLOOKUP 还是 MATCH.

=ARRAYFORMULA(IFERROR(VLOOKUP(C1:C, 
 TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(IFERROR(SPLIT(A1:A, ","))<>"", "♦"&SPLIT(A1:A, ",")&"♠"&B1:B, ))
 ,,999^99)),,999^99), "♦")), "♠")), 2, 0)))