有没有办法在 Excel 公式中使用 Regex(或类似的解决方案)?

sgp*_*667 11 regex microsoft-excel microsoft-excel-2010

我有一个电子表格,需要我做一些匹配,也就是说,它是一个债券列表,它们的股票代码(名称)和一些关于它们的数据。我想匹配他们的股票代码(名称),我知道正则表达式如何使用正则表达式匹配它们(“[AZ]+ \d{2,4}-\w+ \w+”),但我不熟悉如何使用他们在 VBA 之外(是的,我更喜欢不使用 VBA,会使用这个的人不知道 VBA)。

我读了微软的这篇文章,所以我知道这个问题(有问题的陈述不是答案)是不正确的,但我从来没有运气真正找到如何在 Excel 中实现正则表达式,尤其是公式(也许MATCH只是也许)。

最后我的一个例子(只是相关的列)使我的问题更具体,我想返回带有代码的单元格行

JPMCC 2012-1 A1 

Prepay %
Loss %
Credit Support
ETC...

MLMTI 2014-6 B4

Prepay %
Loss %
Credit Support
ETC...
Run Code Online (Sandbox Code Playgroud)

要返回的行:

JPMCC 2012-1 A1 
MLMTI 2014-6 B4
Run Code Online (Sandbox Code Playgroud)

注意我在这个专栏里有很多这样的债券,我需要一一找到

另外,如果您发现使用辅助列在这里很有用,我对此持开放态度,现在我只想避免使用 VBA。

如果需要,我会提供更多信息。

谢谢

更新

数据,在这种情况下,包括“信用支持”、“累积损失 %”、“预付 %”等标题。有几十个这样的标题,但它的所有文本文本,数字都在不同的列中。

Nic*_*sso 9

Excel 没有正则表达式,但您当然可以一次构建一个公式的大部分功能。这里有些例子:

提取第一个以空格分隔的单词:

B1: =FIND(" ", A1)
C1: =LEFT(A1, B1 - 1)
Run Code Online (Sandbox Code Playgroud)

检查第一个单词是否全部为非小写:

D1: =EXACT(UPPER(C1), C1)
Run Code Online (Sandbox Code Playgroud)

提取第二个空格分隔的单词:

E1: =FIND(" ", A1, B1 + 1)
F1: =MID(A1, B1 + 1, E1 - B1 - 1)
Run Code Online (Sandbox Code Playgroud)

如果可能,提取 4 位数年份:

G1: =LEFT(F1, 4) - 0
Run Code Online (Sandbox Code Playgroud)

您可以根据需要创建尽可能多的这些提取和测试,以确信 A1 中的数据与股票代码格式匹配,而不是标题格式,然后使用类似的内容仅在正确的情况下重现该单元格:

H1: IFERROR(IF((B1+E1+LEN(C1)+LEN(F1)+G1+D1)*0=1,"",A1),"")
Run Code Online (Sandbox Code Playgroud)

显示辅助列的电子表格