【问题标题】:Extracting text string after nth occurrence of a character in Excel (functions or VB)在Excel中第n次出现字符后提取文本字符串(函数或VB)
【发布时间】:2018-07-14 05:02:10
【问题描述】:

寻找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 次出现后是否有获取文本的功能?

【问题讨论】:

标签: vba excel


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    ...然后FIND 函数找到"^^" 的位置并允许REPLACE 函数将这些字符替换为空。

    【讨论】:

    • +1 而不是^^,我建议您使用?(在路径中是非法的,因此肯定不会出现)或一些不可打印的字符,例如CHAR(1)
    • @Jean-Francois Corbett 是的,我知道“?”在文件名中是非法的 - 不确定路径 - 这将是一个不错的选择
    • 你的答案只完成了一半,因为 OP 只想返回 azat-tab-25mg-dp-1-bmi.... 的一部分。另外我认为这只会增加额外的开销
    • @vba4all 同意.....但他确实说"is there a mid function to get the text after the 7th occurance of \ ?" - 并且没有定义之后限制文本的方式,我认为加里已经知道如何做到这一点。跨度>
    • 老线程,希望你仍然活跃。您将如何反转此公式的极性以返回所有文本字符的第 n 个实例之前?编辑: nvm "=SUBSTITUTE(E2,REPLACE(E2,1,FIND("^^",SUBSTITUTE(E2,"/","^^",2)),""),"")"...初级。
    【解决方案3】:
    filename = Right(fullfilepath, Len(fullfilepath) - InStrRev(fullfilepath, "\"))
    

    InStrRev 查找从末尾开始搜索的字符串的第一次出现。

    【讨论】:

      【解决方案4】:

      返回

      azat-tab-25mg

      从您的原始字符串中,我返回了从 last "\" 到 第三个 "-" 以下的所有内容。

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

      【讨论】:

        猜你喜欢
        • 2016-07-25
        • 1970-01-01
        • 2018-04-16
        • 2014-08-08
        • 2021-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-26
        相关资源
        最近更新 更多