gpt4 book ai didi

excel - 在 Excel 函数上提取大写单词

转载 作者:行者123 更新时间:2023-12-04 21:27:30 27 4
gpt4 key购买 nike

我在一个单元格中将供应商名称和产品名称作为字符串。
每个单元格都有一个全部大写的单词(有时带有数字或数字)。
enter image description here


数据
我需要提取


3LAB 抗衰老油 30ml
3实验室

3LAB Aqua BB SPF40 #1 14g
3实验室

3LAB SAMPLE 完美颈霜 6ml
3实验室

3LAB SAMPLE Super h"精华 super 抗衰老精华 3ml"
3实验室

3LAB TTTTT 完美面膜提拉紧致亮白 28ml
3实验室

3LAB 面霜 50ml
3实验室

3LAB 血清 40ml
3实验室

4711 Acqua Colonia Intense Floral Fields Of Ireland EDC 喷雾 170ml
电子数据中心

4711 Acqua Colonia Intense Pure Brezze Of Himalaya EDC 喷雾 50m"
电子数据中心


我只需要将大写的供应商名称提取到新单元格中。
我试图创建像这样的用户定义函数,但它不起作用。
它正在返回 #NAME?错误。

Public Function UpperCaseWords(S As String) As String
Dim X As Long
Dim TempText As String

TempText = " " & S & " "

For X = 2 To Len(TempText) - 1
If Mid(TempText, X, 1) Like "[!A-Z ]" Or Mid(TempText, X - 1, 3) Like "[!A-Z][A-Z][!A-Z]" Then
Mid(TempText, X) = " "
End If
Next
UpperCaseWords = Application.Trim(TempText)
End Function
知道如何纠正它并使其工作吗?
我在这里找到了它: https://www.mrexcel.com/board/threads/formula-to-extract-upper-case-words-in-a-text-string.684934/page-2#posts
以及为什么在这个宏中,在行 For X = 2 To Len(TempText) - 1 X设置为 2?

最佳答案

尝试使用 Excel 通过内置功能提供的功能,而不是定制的 UDF,例如 FILTERXML() :
enter image description hereB1 中使用的公式:

=FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[.*0!=0][translate(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789','')='']")
如果您使用的是 Microsoft365,请在函数之前添加 @,例如: =@FILTERXML().....,或添加 [1] 作为第三个 xpath 表达式,以告诉函数仅返回符合我们使用的前两个规则的第一个节点。
我们来分析一下公式:
  • FILTERXML() - 我们可以利用这个函数在特定的分隔符上“分割”一个字符串,在这种情况下是一个空格。
  • "<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>" - 这是我们创建开始/结束标签的父子结构的部分;一个有效的 XML 字符串。
  • //s - 在 FILTERXML() 的第二个参数中,我们启动一个有效的 xpath 表达式。我们希望所有符合以下两条规则的 s 节点(t 节点的子节点):
  • [.*0!=0] - 选择与零相乘时不等于零的所有节点。这意味着我们不希望返回纯数字子字符串。
  • [translate(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789','')=''] - 当我们将此函数的第二个参数中提到的所有字符 translate() 为空时,结果也应该是空,这意味着节点仅由大写字母字符和数字组成。


  • 当您想要提取特定子字符串时,可以找到关于 FILTERXML() 如何工作的更深入的解释 here 。快乐编码!

    关于excel - 在 Excel 函数上提取大写单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67885392/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com