根据分配中的通配符分配类别值 table

Assign Category Values according to wildcards in assignment table

我无法根据另一个 table 中的通配符在 table 中分配类别值。 calc 中似乎没有可以帮助我解决这个问题的功能。

示例:

数据Table(类别列中的粗体值由函数插入)

一句话 类别
这是宝马车型 汽车
这个菲利普斯是厨房用的 厨具
这是 Synology 设备 不适用

赋值Table

搜索字词 类别
宝马车型 汽车
富艺斯 厨房用具
* 不适用

所以我想实现的是类似于VLOOKUP但是搜索词(查找值)和文本必须在相反的tables.

这是仅使用 calc 函数就可以实现的,还是我需要一个宏来实现?

非常感谢任何帮助、提示或现有解决方案的链接!

更新:那些table在单独的表格上。

假设“This is an BMW model”在单元格 A2 中,“BMW model”在单元格 C2 中。在单元格 B2 中输入以下公式并拖动以向下填充。

=IFERROR(INDIRECT("R"&SUMPRODUCT(COUNTIF(A2:A2;"*"&C:C&"*")*ROW(D:D))&"C"&COLUMN(D1);0);"NA")

结果:

Car
Kitchen applience
NA

细分:

  • IFERROR(...;"NA") - 如果找不到匹配项,则该行将为 0,导致 INDIRECT 出错。
  • INDIRECT("R"&...)&"C"&COLUMN(D1);0) - 使用 R1C1 表示法,获取类别列中单元格的值。
  • SUMPRODUCT(...) - 获取数组计算的结果并将它们组合成一个值。
  • COUNTIF(A2:A2;"*"&C:C&"*")*ROW(D:D) - 这是我们公式的核心。如果 A2"*" & C2 & "*" 等正则表达式匹配,则将其乘以包含行号的数组。因此,匹配项会将 1 乘以搜索词的行号,而其他行号将乘以 0,因此在 SUMPRODUCT.
  • 的最终总和中将被忽略

如果一个句子中可能有多个匹配项,则需要修改公式来处理。