我有个问题。我们有编码的项目名称,其中有某些值,我需要做计算。例如,ASG-120U9624M我只需要提取120,96,24,因为它们是计算所需的参数。96也可以是220(2-3位数字)。24可能只有12或24。我知道你可以在某些符号之后得到值,例如(-,u),但是你能检测到值在12/24之前结束吗?如果96的值只能是两位数,那就很容易了,但现在我不知道该怎么做。我需要一些帮助。
发布于 2020-12-30 21:35:00
B1:
=ARRAYFORMULA(IFNA(REGEXEXTRACT(A1:A, "-(\d+)U")))C1:
=ARRAYFORMULA(IFNA(REGEXEXTRACT(A1:A, "U(\d+)..M")))D1:
=ARRAYFORMULA(IFNA(REGEXEXTRACT(A1:A, ".+(\d{2})M")))

发布于 2020-12-30 22:15:36
试试这个:
=ARRAYFORMULA(IFNA(IF(IFERROR(LEN(REGEXEXTRACT(A1:A, ".*U(\d{4})M")), 5) = 4, REGEXEXTRACT(A1:A, "^ASG-(\d{3})U(\d{2})(\d{2})M$"), REGEXEXTRACT(A1:A, "^ASG-(\d{3})U(\d{3})(\d{2})M$"))))LEN(REGEXEXTRACT(A1:A, ".*U(\d{4})M")), 5) = 4 -确定U-M中的位数
REGEXEXTRACT(A1:A, "^ASG-(\d{3})U(\d{2})(\d{2})M$") -如果位数为4,则使用此正则表达式。
REGEXEXTRACT(A1:A, "^ASG-(\d{3})U(\d{3})(\d{2})M$") -如果位数为5,则使用此正则表达式。
样本表:

发布于 2020-12-31 04:01:13
假设您的原始数据运行A2:A。在B2中放置以下内容:
=ArrayFormula(IF(A2:A="",,REGEXEXTRACT(A2:A,"(\d+)\D(\d+)(12|24)")))
这一个公式将提取所有三列数字。
正则表达式捕获三个组,每个组都包含在括号中。它是这样写的:“任何数字后面跟着一个非数字,后面跟着任何数字,直到12或24。”
https://stackoverflow.com/questions/65507438
复制相似问题