根据分配中的通配符分配类别值 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
. 的最终总和中将被忽略
如果一个句子中可能有多个匹配项,则需要修改公式来处理。
我无法根据另一个 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
. 的最终总和中将被忽略
如果一个句子中可能有多个匹配项,则需要修改公式来处理。