Google 工作表查找范围内的子字符串
Google sheets lookup with substring on range
我正在尝试使用 Google 表格进行子字符串查找。
当子字符串应用于查找字符串时,我能够做到这一点:
Match = VLOOKUP("*"&A2&"*",$C:$C,1,FALSE)
但是,在将子字符串逻辑应用于范围时我遇到了困难:
知道如何实现吗?
注意:为了示例,我使用了简单的值,实际上 search/range
值并不总是遵循 [0-9][a-z][0-9] / [a-z]
模式,因此删除来自搜索的数字然后执行搜索不是我正在寻找的解决方案。
将下面的公式放到B2中,然后需要复制下来(唉,我在FILTER中没有找到将ARRAYFORMULA应用于第二个范围的方法)。
=filter(C:C, regexmatch(A2, C:C))
=TEXTJOIN(",",1,QUERY(C:C,"select C where '"&A2&"' contains C"))
- QUERY 查找匹配的子字符串
- TEXTJOIN 连接匹配的子字符串,如果找到多个。
@ttarchala 的回答有效。如果您的范围包含多个匹配项但只需要 1 个,请用 INDEX
:
包装它
=INDEX(FILTER(C:C, regexmatch(A2, C:C)),1)
另一种方法是使用以下内容,它允许范围内的值是正则表达式:
=REGEXEXTRACT(A2,JOIN("|",C:C))
例如,看看 3c3
如何因为 \b
字边界而无法匹配 c\b
而 c
匹配它。
我正在尝试使用 Google 表格进行子字符串查找。
当子字符串应用于查找字符串时,我能够做到这一点:
Match = VLOOKUP("*"&A2&"*",$C:$C,1,FALSE)
但是,在将子字符串逻辑应用于范围时我遇到了困难:
知道如何实现吗?
注意:为了示例,我使用了简单的值,实际上 search/range
值并不总是遵循 [0-9][a-z][0-9] / [a-z]
模式,因此删除来自搜索的数字然后执行搜索不是我正在寻找的解决方案。
将下面的公式放到B2中,然后需要复制下来(唉,我在FILTER中没有找到将ARRAYFORMULA应用于第二个范围的方法)。
=filter(C:C, regexmatch(A2, C:C))
=TEXTJOIN(",",1,QUERY(C:C,"select C where '"&A2&"' contains C"))
- QUERY 查找匹配的子字符串
- TEXTJOIN 连接匹配的子字符串,如果找到多个。
@ttarchala 的回答有效。如果您的范围包含多个匹配项但只需要 1 个,请用 INDEX
:
=INDEX(FILTER(C:C, regexmatch(A2, C:C)),1)
另一种方法是使用以下内容,它允许范围内的值是正则表达式:
=REGEXEXTRACT(A2,JOIN("|",C:C))
例如,看看 3c3
如何因为 \b
字边界而无法匹配 c\b
而 c
匹配它。