用标准提取子string

我从C和D列的报告中得到了几行信息,它基本上是一个有人想要做账户的描述,他们当然也使用给你账户号码,我想要做的是提取那个子string我的标准,使用的是,它必须以字母A开头,并应至less有17个字符长,帐户号码有一个字母和数字的组合,但他们都以字母A开始,即A8H66P66FHDSJ2YNTP这个帐户中的一些最多有25个字符一些有19个17我又想从string中提取一个子string,字母A开头,至less有17个字符

尝试使用RegEx,如下面的示例所示:

Sub Test() Dim oCell, oMatch With CreateObject("VBScript.RegExp") .Global = True .MultiLine = True .IgnoreCase = True .Pattern = "\bA[A-Z0-9]{16,24}\b" For Each oCell In ThisWorkbook.Sheets("Sheet1").Range("C1:D1000") For Each oMatch In .Execute(oCell.Value) Debug.Print oMatch.Value Next Next End With End Sub 

公式解答:

 =IFERROR(TRIM(MID(SUBSTITUTE(C1," ",REPT(" ",LEN(C1))),LEN(C1)*(MATCH(TRUE,INDEX(ISNUMBER(SEARCH("A"&REPT("?",17),TRIM(MID(SUBSTITUTE(C1," ",REPT(" ",LEN(C1))),LEN(C1)*(ROW($1:$100)-1)+1,LEN(C1))))),),0)-1)+1,LEN(C1))),"No Account Number")