有没有办法从 OpenOffice Calc 中的单元格中提取子字符串?
Posted
技术标签:
【中文标题】有没有办法从 OpenOffice Calc 中的单元格中提取子字符串?【英文标题】:Is there a way to extract a substring from a cell in OpenOffice Calc? 【发布时间】:2020-09-25 16:58:43 【问题描述】:我有数万行 csv 格式的非结构化数据。我需要从一长串文本中提取某些产品属性。给定一组可接受的属性,如果有匹配项,我需要它用匹配项填充单元格。
示例数据: “[ROOT];耳环;品牌;品牌>珠宝交换;耳环>性别;耳环>宝石;耳环>金属;耳环>场合;耳环>款式;耳环>性别>女士;耳环>宝石>锆石;耳环>金属>白色金;耳环>场合>只是说:我爱你;耳环>款式>吊坠/吊坠;耳环>款式>时尚;不可见;礼物;礼物>价格>$500 - $1000;礼物>商店>耳环;礼物>场合;礼物>场合>圣诞节;礼物>场合>只是说:我爱你;礼物>送给>她”
查找值表: 锆石、钻石、珍珠、红宝石
输出: 锆石
我尝试使用 VLOOKUP() 函数,但它需要匹配整个单元格并且更适合翻译首字母缩略词。还没有真正找到完成我需要的内置函数。数据完全是非结构化的,即使在同一产品的变体中,数据也会随着行的变化而不一致。有谁知道如何做到这一点?或者如何编写一个 OpenOffice Calc 函数来完成这个?如果有人对如何解决这个问题有任何经验或想法,也可以接受其他更好的方法......
【问题讨论】:
一些问题:(1)您所说的“用匹配项填写单元格”是什么意思 - 是否应该返回从[ROOT]
到Gifts>For>Her
的完整字符串? (2) 条目如何用换行符分隔? (3) 需要哪种输出格式?
@tohuwawohu 上面是实际数据......那是一行。输出为 csv 格式
【参考方案1】:
好的,所以我自己想出了如何做到这一点...我创建了许多不同的列,每个列都有一个我希望提取为标题的关键字。 Spreadsheet solution for structured data extraction 然后我使用这个公式将关键字提取到列标题下方的正确行中。 =IF(ISERROR(SEARCH(CF$1,$D769)),"",CF$1) 搜索函数返回搜索字符串位置的数值,否则会产生错误。我使用 iserror 函数来确定是否存在错误条件,并且 if 语句的方式是,如果有错误,它将单元格留空,否则它采用标题的值。有超过 100 列的特定信息要提取到最后一列,我将行中所有先前的单元格连接在一起作为最终列表。像魅力一样工作。向必须执行类似任务的任何人推荐这种方法。
【讨论】:
以上是关于有没有办法从 OpenOffice Calc 中的单元格中提取子字符串?的主要内容,如果未能解决你的问题,请参考以下文章
在 OpenOffice Calc/Excel 中格式化 #N/A
如何根据公式自动选择 OpenOffice Calc 单元格?