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

时间:2019-08-14 22:11:38

标签: google-sheets google-sheets-formula array-formulas google-sheets-query gs-vlookup

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

Example

列A 列B 构成搜索范围,并且列C 包含搜索关键字。 列D 使用VLOOKUP方法,而列E 使用INDEXMATCH方法。第一行中的单元格的公式如下:

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

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

列D E 应垂直拼写“成功”,但是显然存在一些问题。最初开始寻求帮助时,我发现了在搜索关键字的开头和结尾添加通配符(*)的方法,以便忽略我要搜索的值之前或之后的文本。除了一个搜索键的条件可以与另一个搜索键匹配(例如,当我在第1行中搜索“ Pg 3”但“ Pg 32”和“ Pg 33”也可以)时,此方法有效存在。仅当我要搜索的值本身不在单元格中并且在其前面带有较早行中的“ matching”值(例如,与第1行和与“ <第7行”中的“ Pg 6”键匹配的“第64页”。

不幸的是,在我正在从事的项目中,我将无法按字母数字顺序对范围进行排序,因此,希望获得任何解决方法的帮助,最好仅使用公式而不是深入研究Google Apps脚本。希望我的解释很清楚,并且我不愿意使用VLOOKUP还是MATCH

1 个答案:

答案 0 :(得分:1)

=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)))

0