首页 文章

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

提问于
浏览
7

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

在第27次 \ 之后是否有一个函数来获取文本?

4 回答

  • 4

    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

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

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

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

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

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

    InStrRev 找到从结尾开始搜索的字符串的第一个出现位置 .

  • 5

    回来

    azat-tab-25mg

    从你的原始字符串中,我返回了从 last ""到 third "-"的所有内容 .

    工作表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
    

相关问题