【发布时间】:2017-05-28 06:54:32
【问题描述】:
我有一个 excel 文件,其中有一列包含特定的字符串。该字符串不遵循任何特定模式。我的要求是提取一个子字符串(产品 ID),它是 8 个连续数字的集合,必须在前面/后面跟任何字符,或者必须在开头或结尾 的字符串。
以下是一些示例。
场景 1:
产品编号以#开头
Id#53298632/BS TVR:003519
excel中用到的函数
=MID(N88,FIND("#",N88)+1,8)
* 结果:53298632 *
场景 2:
产品ID在开头
53298632:003519
excel中用到的函数
=MID(A1,1,8)
* 结果:53298632 *
一开始我只需要处理场景 1,因此使用了指定的公式。现在有一天,字符串不遵循任何特定模式,但我的产品 ID 仍然是 8 位连续数字。我搜索了一个合适的解决方案,发现了这个公式(我不太清楚)。
=LOOKUP(10^8,MID(N132,ROW(INDIRECT("1:"&LEN(N132)-7)),8)+0)
这在大多数情况下确实有效,但在某些情况下会失败
例如
Pdr#53298632/数量编号 1031949
这里的结果是 1031949,这绝对不是我想要的。结果应该是 53298632
请帮我解决这个问题。这可以使用 VBA 宏来完成吗?我对此类 Excel 函数 VBA 和宏完全陌生。
任何帮助将不胜感激!
提前致谢。
【问题讨论】:
-
您对正则表达式 (regex) 的熟悉程度如何?
-
@gabor 谢谢我不熟悉 vba 中的正则表达式。根据你的建议,我查了一下,很有帮助
标签: vba excel excel-formula