简体   繁体   English

提取字符串中最后一个数字之前,左侧的所有文本

[英]Extract all text before, left of, the last number in a string

I need to removed all text to the left of the final number in my strings. 我需要删除字符串中最后一个数字左侧的所有文本。 Oddly, I can seem to find everything, but this. 奇怪的是,我似乎可以找到所有东西,但是这个。 Here are examples of what I need. 以下是我需要的示例。

Source: 资源:

  1. OsteoActiv 150 Capsules OsteoActiv 150粒
  2. Vitamin B6 as Pyridoxal-5-Phosphate 33.8 mg 60 Vegetarian Capsules 维生素B6作为5磷酸吡rid醛33.8毫克60粒素食胶囊
  3. Tyrosine 500 mg 60 Vegetarian Capsules 酪氨酸500毫克60粒素食胶囊
  4. Green Tea-70 500 mg EGCG 350 mg 60 Vegetarian Capsules 绿茶70500毫克EGCG 350毫克60粒素食胶囊
  5. Omega Supreme 90 Capsules 欧米茄Supreme 90粒

Result Needed: 需要的结果:

  1. 150 Capsules 150粒
  2. 60 Vegetarian Capsules 60粒素食胶囊
  3. 60 Vegetarian Capsules 60粒素食胶囊
  4. 60 Vegetarian Capsules 60粒素食胶囊
  5. 90 Capsules 90粒

Excel-Extract-Text-Left-of-Final-Number-in-String.jpg Excel的提取物-文字-左的决赛用户号码中,String.jpg

A UDF (aka User Defined Function ) is best for custom parsing string of indeterminate length and structure. UDF(又名用户定义函数 )最适合用于不确定长度和结构的自定义解析字符串。 Paste the following into a module code sheet in the VBE. 将以下内容粘贴到VBE中的模块代码表中。

Function udf_Last_Number_and_Unit(rng As Range)
    Dim tmp As String, v As Long, w As Long, vBITs As Variant

    vBITs = Split(rng.Value2, Chr(32))
    tmp = Join(vBITs, Chr(32))

    For v = LBound(vBITs) To UBound(vBITs)
        If IsNumeric(vBITs(v)) Then
            tmp = vbNullString
            For w = v To UBound(vBITs)
                tmp = Join(Array(tmp, vBITs(w)), Chr(32))
            Next w
        End If
    Next v

    udf_Last_Number_and_Unit = Trim(tmp)

End Function

Use like any native worksheet function. 像任何本地工作表函数一样使用。

udf_last_number_and_unit

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM