将 6 位代码提取到 excel 中的单独列

Extract 6 digit codes to a separate columns in excel

在 Whosebug 上有很多很多关于如何从字符串中提取数字的问题和高质量的答案,但是我找不到要找的那个,所以我有一个电子表格,其中一列描述是那里还有每个单元格中的特定代码。

这些是 6 位代码,应将其提取到单独的列中。如果一个单元格中只有 1 个代码,我可以借助 filterxml 函数来做到这一点。但是,如果每个单元格中的代码超过 1 个,我应该使用什么公式?

参考下面,我需要提取两个代码。

Advance payment based on contract # 990|33 dated 19.04.22 Invoice # HF 450|39 324500 526 324719 965

使用这个公式

=FILTERXML("<t><s>"&SUBSTITUTE(C3," ","</s><s>")&"</s></t>","//s[string-length()=6]")

所以它需要是 324500 和 324719 但它会溢出字符串长度为 6 的任何内容

一种方法是更改​​ xPath 参数以包含仅用于数字数据的参数。

//s[number(.)=. and string-length()=6]

例如:

=FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[number(.)=. and string-length()=6]")

如果任何 6 位数字可能有一个或多个前导零,则还使用 TEXT 函数:

=TEXT(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[number(.)=. and string-length()=6]"),"000000")

您可以尝试以下任何一项,

• 单元格 B3

中使用的公式
=AGGREGATE(15,6,MID(SUBSTITUTE(A1," ","x"),SEQUENCE(LEN(A1)-5),6)+0,{1,2})

或者,如果您正在使用 O365 并且目前在 Office 预览体验成员Beta 频道版本, 那么也可以试试这个

• 单元格 B2

中使用的公式
=AGGREGATE(14,6,--TEXTSPLIT(A1," "),{2,1})