有没有办法从 OpenOffice Calc 中的单元格中提取子字符串?

Is there a way to extract a substring from a cell in OpenOffice Calc?

我有数万行 csv 格式的非结构化数据。我需要从一长串文本中提取某些产品属性。给定一组 acceptable 属性,如果有匹配项,我需要它用匹配项填充单元格。

示例数据:
"[ROOT];耳环;品牌;品牌>JeweleryExchange;耳环>性别;耳环>宝石;耳环>金属;耳环>场合;耳环>款式;耳环>性别>女士;耳环>宝石>锆石;耳环>金属>白色金色;耳环>场合>只想说:我爱你;耳环>款式>Drop/Dangle;耳环>款式>时尚;不可见;礼品;礼品>价格>$500 - $1000;礼品>商店>耳环;礼品>Occasion;Gifts>Occasion>Christmas;Gifts>Occasion>只想说:我爱你;Gifts>For>Her

查找 table 个值:
锆石、钻石、珍珠、Ruby

输出:
锆石

我尝试使用 VLOOKUP() 函数,但它需要匹配整个单元格并且更适合翻译首字母缩略词。还没有真正找到一个内置函数来完成我需要的。数据完全是非结构化的,即使在同一产品的变体中,数据也会逐行变化且不一致。有谁知道如何做到这一点?或者如何编写 OpenOffice Calc 函数来完成此操作?如果有人对如何处理此问题有任何经验或想法,也可以接受其他更好的方法...

好的,所以我自己想出了如何做到这一点...我创建了许多不同的列,每个列都有一个我希望提取为 header 的关键字。 Spreadsheet solution for structured data extraction 然后我使用这个公式将关键字提取到 header 列下方的正确行中。 =IF(ISERROR(SEARCH(CF$1,$D769)),"",CF$1) 搜索函数 returns 搜索字符串位置的数值,否则会产生错误。我使用 iserror 函数来确定是否存在错误条件,如果存在错误,则 if 语句将单元格留空,否则它采用 header 的值。有超过 100 列的特定信息要提取到最后一列中,我将行中所有先前的单元格连接在一起以获得最终列表。工作起来很有魅力。向必须执行类似任务的任何人推荐此方法。