有没有办法从 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 时间转换

在 OpenOffice Calc/Excel 中格式化 #N/A

如何根据公式自动选择 OpenOffice Calc 单元格?

使用 xslt 过滤器从 Calc 导出时出现 OpenOffice 错误

使用 c# 在 OpenOffice calc 中的超链接

将单元格中的数据拆分为新列 Openoffice Calc