首页 > 解决方案 > 查找其他范围内的匹配行

问题描述

我正在尝试创建一个包含基于一组类别的类别和来自另一个范围的匹配/正则表达式字符串的列。我的例子是:

例子

我在这里找不到任何已回答的问题,可以向我解释如何做到这一点,如果可以的话。所以在这里问是否有人可以帮助或指出我可能错过的答案!

类别或数据范围都不是静态行数。我想要一个公式,它可以简单地产生这样的东西:

在此处输入图像描述

非常感谢任何帮助!

标签: google-sheets

解决方案


尝试:

=ARRAYFORMULA(IFNA(REGEXEXTRACT(E2:E, "["&TEXTJOIN( , 1, B2:B)&"]")))

在此处输入图像描述


更新1:

=INDEX(IFNA(REGEXEXTRACT(E2:E, "["&TEXTJOIN( , 1, 
 REGEXREPLACE(C2:C, "[\.\*]", ))&"]")))

在此处输入图像描述

或者:

=INDEX(IFNA(VLOOKUP(IFNA(REGEXEXTRACT(E2:E, "["&TEXTJOIN( , 1, 
 REGEXREPLACE(C2:C, "[\.\*]", ))&"]")), {
 REGEXREPLACE(C2:C, "[\.\*]", ), B2:B}, 2, 0)))

在此处输入图像描述



更新 2

首先,学习你的正则表达式:https ://github.com/google/re2/wiki/Syntax

将您的 C 列更改为:

.*(A).*
.*(B).*
.*(C).*

然后使用:

=ARRAYFORMULA(IFNA(VLOOKUP(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IFNA(REGEXEXTRACT(E3:E, TEXTJOIN("|", 1, C3:C)))),,9^9))), {
 IFNA(REGEXEXTRACT(C3:C, TEXTJOIN("|", 1, TRIM(FLATTEN(QUERY(TRANSPOSE(
 IFNA(REGEXEXTRACT(E3:E, TEXTJOIN("|", 1, C3:C)))),,9^9)))))), B3:B}, 2, 0)))

在此处输入图像描述

或更短:

=INDEX(IFNA(VLOOKUP(
 IFNA(REGEXEXTRACT(E3:E, "["&TEXTJOIN("|", 1, C3:C)&"]")), { 
 IFNA(REGEXEXTRACT(C3:C, TEXTJOIN("|", 1, 
 IFNA(REGEXEXTRACT(E3:E, "["&TEXTJOIN("|", 1, C3:C)&"]"))))), B3:B}, 2, 0)))

在此处输入图像描述


推荐阅读