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

时间:2014-10-21 09:20:31

标签: excel vba excel-vba

寻找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

是否有一个函数可以在\第7次出现之后获取文本?

4 个答案:

答案 0 :(得分:5)

split函数将字符串拆分为任何大小所需的数组。 Split的第一个参数是要拆分的文本,第二个是分隔符。

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

End Sub

答案 1 :(得分:4)

如果您在单元格A1中有数据,则以下工作表公式将在第7个“\”

之后提取所有内容

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

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

...然后FIND函数找到"^^"的位置,并允许REPLACE函数替换这些字符,之前没有任何内容。

答案 2 :(得分:2)

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

InStrRev找到从最后开始搜索的字符串的第一个出现位置。

答案 3 :(得分:1)

返回

  

阿扎特-制表为25mg

从原始字符串中,我返回了最后" \"直至第三" - "以下

工作表Excel功能:

=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)

用户定义的功能:

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