Excel 从非结构化信息中读出一些术语

Excel 从非结构化信息中读出一些术语,excel,excel-formula,office365,Excel,Excel Formula,Office365,我有一个文件名列表。大约有100万条线路。 在这些行中,我有一个从58开始的值。这个值。从58开始,我想读出以下所有数字。通常是8个字符。但是,它也可以是9 这些文件的名称非常不同 我曾考虑过搜索/查找函数或零件,但不幸的是,我对Excel不太熟悉 010 AHKG100 58098085 70085-DIS-0082.pdf 002 AHMQ32X32 58098524.pdf AHSG160-58098564(=A-3129)_01.dwg 003 MVTA_78_ 58098861.pdf

我有一个文件名列表。大约有100万条线路。 在这些行中,我有一个从58开始的值。这个值。从58开始,我想读出以下所有数字。通常是8个字符。但是,它也可以是9

这些文件的名称非常不同

我曾考虑过搜索/查找函数或零件,但不幸的是,我对Excel不太熟悉

010 AHKG100 58098085 70085-DIS-0082.pdf
002 AHMQ32X32 58098524.pdf
AHSG160-58098564(=A-3129)_01.dwg
003 MVTA_78_ 58098861.pdf
这些是文件名的一些变体

在新列中,执行结果如下所示:

58098085
58098524
58098564
58098861

假设数据从单元格
A1
开始,在单元格
B1
中输入以下数组公式

=LARGE(IFERROR(--MID(A1,FIND("58",A1,ROW($Z$1:INDEX($Z:$Z,LEN(A1)))),{8,9}),0),1)
在公式栏中完成公式后,必须按Ctrl+Shift+Enter键,否则它们将无法正常工作。然后,只需将公式向下拖动,即可将其应用于各个方向

逻辑是使用FIND函数在字符串中找到
58
的起点,然后使用MID函数从字符串中返回
8字符
9字符
,并使用
-
检查它们是否为数值,如果没有,则使用IFERROR函数返回
0
。最后,使用LARGE函数返回范围中的最大数值,该数值应仅包含数值和
0
(如果有)

编辑#2

您还可以使用以下两个公式,这两个公式不需要通过Ctrl+Shift+Enter输入:

这一个基本上与第一个相同,但用能够忽略范围内错误值的聚合替换了LARGE+IFERROR

该方法直接从主字符串中提取每个
8字符
9字符
子字符串,然后使用
--
检查子字符串是否为数值,最后使用聚合返回范围中的最大值


如果你有任何问题,请告诉我。干杯:)

是否可以让
58
在一个字符串中显示不止一次,例如
058 MVTA_58_58098861.pdf
?嘿,是的,可以
001 AHGL320X190 58054687 60058_01.pdf(最后到60058)
001 AHAS200-58100769(B-2058).dwg(最后到2058)
058 AHBQ250×35°58039773.s(开头)@MCH不客气。我刚刚编辑了我的答案,加入了另外两个公式,这些公式不需要CSE输入,但本质上都是数组公式。请查看它们并选择最适合您的公式。干杯:)
=AGGREGATE(14,6,--MID(A1,FIND("58",A1,ROW($Z$1:INDEX($Z:$Z,LEN(A1)))),{8,9}),1)
=AGGREGATE(14,6,--MID(A1,ROW($Z$1:INDEX($Z:$Z,LEN(A1))),{8,9}),1)