在Excel(函数或VB)中出现第n个字符后提取文本string

寻找VB或Excel函数返回

azat-tab-25mg

Y:\master-documentation\azat\dp\tab\25mg\2-drug-product\azat-tab-25mg-dp-1-bmi-[d-6475703-01-11].pdf

是否有一个function,以获得第七次发生后的文字?

split函数将string拆分为任意大小的数组。 Split的第一个参数是要分割的文本,第二个参数是分隔符。

 Sub test() Dim arr() As String Text = "Y:\master-documentation\azat\dp\tab\25mg\2-drug-product\azat-tab-25mg-dp-1-bmi-[d-6475703-01-11].pdf" arr = Split(Text, "\") MsgBox (arr(7)) End Sub 

如果您有单元格A1中的数据下面的工作表公式提取第7个“\”后的所有内容

=REPLACE(A1,1,FIND("^^",SUBSTITUTE(A1,"\","^^",7)),"")

SUBSTITUTE函数将第7个"\"replace为"^^" [使用您知道不会出现在数据中的任何字符或字符组合]

FIND函数查找"^^"的位置,并允许REPLACE函数将这些字符全部replace,之前没有任何内容。

 filename = Right(fullfilepath, Len(fullfilepath) - InStrRev(fullfilepath, "\")) 

InStrRev查找从头开始search的第一个string。

回来

阿扎特片定位为25mg

从你原来的string中,我返回了从最后一个 “\”到第三个 “ – ”之后的所有内容。

工作表Excelfunction:

 =LEFT(SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE(A1,"\",REPT(" ",99)),99)), "-",CHAR(1),3),FIND(CHAR(1),SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE( A1,"\",REPT(" ",99)),99)),"-",CHAR(1),3))-1) 

用户定义的function:

 Option Explicit Function Meds(S As String) As String Dim S1 As Variant, S2 As Variant S1 = Split(S, "\") S2 = Split(S1(UBound(S1)), "-") ReDim Preserve S2(0 To 2) Meds = Join(S2, "-") End Function