Google 表格循环 VLOOKUP 并连接结果

Posted

技术标签:

【中文标题】Google 表格循环 VLOOKUP 并连接结果【英文标题】:Google Sheets loop VLOOKUP and concatenate results 【发布时间】:2021-11-06 07:49:51 【问题描述】:

我想遍历列中的值列表(即:Value1|Value2|Value3),使用这些值来 VLOOKUP 列,然后将连接的值返回到单元格中。

工作表示例:BUSINESSES.csv

ID Business Name Services Tags (Expected Outcome)
6259 22Handy Business Test1|Test2
6260 AAFMAA Wealth Business|Financial Management Test1|Test2|Finances|Accounting|Budgeting

请注意,“TAGS”列是空的。这是我要返回结果(并输入公式)的地方。

目标是获取每个“服务”并查看以下单独的工作表示例:

示例:SERVICES.csv

Service Name Tags to add
Financial Management Finances|Accounting|Budgeting
Business Test|Test2

所以如果一个企业有一个“企业”的服务,那么它应该返回“Test1|Test2”

如果企业拥有“Business|Financial Management”服务,那么它应该返回“Test1|Test2|Finances|Accounting|Budgeting”,因为它正在从分配给该企业的两个服务中提取标签。

我尝试了 INDEXVLOOKUPFILTERREGEXMATCH 的不同组合,但无济于事。

类似:=INDEX( FILTER( Services!A2:A, IF( REGEXMATCH( Services!A2:A, C2,))))......

【问题讨论】:

您是否尝试过 TextJoin 或 Join 与您的过滤器? @ScottCraner 我没有。我对FILTER 的经验不够,而且我一直遇到行/列不匹配错误。一旦完成所有循环,JOIN/TEXTJOIN 将非常适合编写最终输出 你有没有包含空格的标签? @player0 是的,有些标签包含空格。不过,如果这样可以更轻松地创建公式,我可以将空格查找/替换为破折号或下划线 【参考方案1】:

尝试:

=ARRAYFORMULA(SUBSTITUTE(SUBSTITUTE(TRIM(FLATTEN(QUERY(TRANSPOSE(IFNA(VLOOKUP(
 IF(IFERROR(SPLIT(C2:C, "|"))="",, SPLIT(C2:C, "|")), 
 G:G, SUBSTITUTE(H:H, " ", "×"), 2, 0))),,9^9))), " ", "|"), "×", " "))

【讨论】:

难以置信!我暂时使用=textjoin("|",true,filter(Services!$C2:$C, REGEXMATCH(Services!$A$2:$A, C2) )) 来解决这个问题——但它并不完美(主要是因为没有考虑到“整个单词”。但你的公式是完美的。它显示值大约需要 45 秒,因为工作表是如此巨大的,但它的工作。非常感谢你,我的男人!

以上是关于Google 表格循环 VLOOKUP 并连接结果的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Google 的连接表中编写 vlookup 函数?

将VLOOKUP的结果加入Google表格中的一个字符串中

Google 电子表格 ArrayFormula + VLookup 转换

Google 表格 - 返回包含特定文本的单元格的列号

Google 电子表格 - 来自另一个工作簿的 VLookup 值

EXCEL VLOOKUP函数怎么返回多列结果