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

String 提取字符串中最后一个数字之前、左侧的所有文本,string,excel,extract,String,Excel,Extract,我需要删除字符串中最后一个数字左边的所有文本。奇怪的是,除了这个,我似乎什么都能找到。下面是我需要的例子 资料来源: 骨活性150胶囊 维生素B6作为吡哆醛-5-磷酸33.8 mg 60素食胶囊 酪氨酸500毫克60素食胶囊 绿茶-70 500毫克EGCG 350毫克60素食胶囊 欧米茄至尊90胶囊 所需结果: 150粒 60粒素食胶囊 60粒素食胶囊 60粒素食胶囊 90粒 UDF(又称用户定义函数)最适合于长度和结构不确定的自定义解析字符串。将以下内容粘贴到VBE中的模块代码表中 Funct

我需要删除字符串中最后一个数字左边的所有文本。奇怪的是,除了这个,我似乎什么都能找到。下面是我需要的例子

资料来源:

  • 骨活性150胶囊
  • 维生素B6作为吡哆醛-5-磷酸33.8 mg 60素食胶囊
  • 酪氨酸500毫克60素食胶囊
  • 绿茶-70 500毫克EGCG 350毫克60素食胶囊
  • 欧米茄至尊90胶囊
  • 所需结果:

  • 150粒
  • 60粒素食胶囊
  • 60粒素食胶囊
  • 60粒素食胶囊
  • 90粒
  • UDF(又称用户定义函数)最适合于长度和结构不确定的自定义解析字符串。将以下内容粘贴到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
    
    与任何本机工作表函数一样使用


    太棒了。非常非常感谢!祝你度过美好的一年。