谷歌表格公式获取冒号之间的文本

Posted

技术标签:

【中文标题】谷歌表格公式获取冒号之间的文本【英文标题】:Google Sheets formula to get text between colons 【发布时间】:2021-02-08 11:15:28 【问题描述】:

我正在寻找一个公式,它可以从单元格中获取冒号之间的文本和数字。我已经尝试过 regexreplace 标点符号,但是我需要版本号之间的句点,还尝试了一些 regex 并找到公式,但遗憾的是无法弄清楚,非常感谢一些帮助。

Input Expected output
cpe:2.3:a:caldera:openlinux_server:3.1:::::::* cpe 2.3 a caldera openlinux server 3.1
cpe:2.3:a:immunix:immunix:6.2:::::::* cpe 2 3 a immunix immunix 6.2
cpe:2.3:o:mandrakesoft:mandrake_linux:7.1:::::::* cpe 2.3 o mandrakesoft mandrake linux 7.1

理想情况下,这将删除所有星号 (*) 和下划线 (_),并删除“cpe 2 3 a”,但这不是完全必要的。

提前谢谢你!

【问题讨论】:

【参考方案1】:

尝试:

=ARRAYFORMULA(TRIM(REGEXREPLACE(A2:A, "_|:|\*", " ")))

=ARRAYFORMULA(IFNA(REGEXEXTRACT(TRIM(REGEXREPLACE(A2:A, 
 "_|:|\*", " ")), ".+\d+.\d+ . (.+)")))

【讨论】:

非常感谢,这正是我想要的。作为后续,是否可以从第四个冒号开始解析?所以在第一个例子中,我想要火山口之后的输出。 "感谢您的反馈!声望低于 15 人的投票将被记录,但不要更改公开显示的帖子得分。"我确实认为它很有帮助:)【参考方案2】:

我想提出一个更简单的替代方案,让您可以了解正在发生的一切。

解决方案:

=ARRAYFORMULA(TRIM(TRIM(RIGHT(SUBSTITUTE(REGEXREPLACE(A1:A3, "_|:|\*", " ")," ","@",4),LEN(SUBSTITUTE(SUBSTITUTE(REGEXREPLACE(A1: A3, "_|:|\*", " ")," ","@",4))- FIND("@",SUBSTITUTE(REGEXREPLACE(A1:A3, "_|:|\*", "_|:|\*", " " ")," ","@",4)))))

一步一步来。

您可以尝试将每个步骤的结果保存在 B 列的单元格中,以查看解决方案是如何构建的。

    用REGEXREPLACE 替换所有不需要的字符: =REGEXREPLACE(A1,"_|:|\*", " ") 用SUBSITUTE 替换用特殊字符(在本例中为@)的第四个空格: =SUBSTITUTE(B1," ","@",4) 通过获取特殊字符之后的所有字符来获取所需的子字符串。结合RIGHT 和FIND 来实现: =RIGHT(B2,LEN(B2)- FIND("@",B2)) 使用TRIM 删除尾随空格: =TRIM(B3) 应用ARRAYFORMULA 在第一步中修改范围而不是特定单元格。 将所有步骤放在一个函数中

【讨论】:

以上是关于谷歌表格公式获取冒号之间的文本的主要内容,如果未能解决你的问题,请参考以下文章

谷歌表格(公式) - 如果一个单元格等于某个值,它将向相邻单元格返回另一个值

在谷歌表格中提取特定单元格的公式

谷歌表格,将公式输出用于下一个公式

谷歌表格 - 根据公式内的另一个单元格值设置行号?

谷歌表格卡在“工作”上,公式工作异常

使用 python xlrd 从 Excel 单元格中获取公式