我的电子表格中有一列包含带有文本字符串的单元格,例如:
- Lorem ipsum blah blah category1
- Lorem ipsum blah blah 类别 2
我想要第二列来保存值,具体取决于字符串是否包含 category1、category2 等。我可以用类似的东西来做到这一点:
=arrayformula(if(H32:H="","",(iferror(if(search("category1",H32:H),"The First Category"),iferror(if(search("category2",H32:H),"The Second Category"))))))
但是,类别列表本身是动态的,因此我不想将它们硬编码到公式中,而是想从电子表格的其他地方检索它们,即:
| Category1 | "The First Category" |
| Category2 | "The Second Category" | // I want to be able to add to this list and have the formula retrieve the values.
有人知道我该怎么做吗?
编辑:请参阅样本表 here .如您所见,A2 中的 arrayforumula 查看 E2 - E4 中的前 3 个键值,并获取相应的替换值。但是,我希望能够添加到键/替换列表中,而不必每次都手动更改 A2 中的公式。
最佳答案
这对我有用:
=VLOOKUP(REGEXEXTRACT(C2,JOIN("|",INDIRECT("E2:E"&COUNTA(E:E)))),E:F,2,FALSE)
所以稍微解释一下,您看到的带有 join 函数和 indirect 的部分基本上是一个动态正则表达式,当您将新类别类型添加到源列表时,它会自动扩展自身(使用 counta 函数)
因此它执行 Vlookup,提取与动态正则表达式匹配的值,并返回相应的索引“2”
关于google-sheets - 谷歌电子表格 : if cell contains one of a list of predefined values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29649058/