Excel - 提取分隔字符串中的第一个字母

问题描述 投票:0回答:4

我的数据格式为:

ACCOUNT_DOCUMENT
ACCOUNT_FACILILITY_MOD

我想提取第一个字母(A)和每个下划线后面的第一个字母。最终输出将是:

AD
AFM

如何在 Excel 中实现此目的?

excel excel-formula substring
4个回答
4
投票

您可以使用:

=CONCAT(LEFT(FILTERXML("<t><s>"&SUBSTITUTE(A1,"_","</s><s>")&"</s></t>","//s")))

enter image description here

  • "<t><s>"&SUBSTITUTE(A1,"_","</s><s>")&"</s></t>"
    - 使用
    SUBSTITUTE()
    创建要使用
    FILTERXML()
    处理的有效 XML 结构。
  • "//s"
    - 将所有节点作为数组返回的适当 XPATH 表达式。
  • LEFT()
    - 用于检索数组每个元素第一个索引处的所有字符。请注意,如果省略第二个参数,则默认长度仅为 1。
  • CONCAT()
    - 用于将所有这些单个字符重新组合在一起。

请注意,我的示例是通过 Microsoft365 中的动态数组功能完成的,但如果这是在 Excel 2019 中完成的,则需要通过 CtrlShiftEnter

进行确认

这个公式的主干是我们使用

FILTERXML()
将字符串分成几部分的方式。如果您有兴趣,您可以在这里找到更多相关信息。


0
投票

好的,蛮力且简单,因为它有 3 位:

enter image description here

LEFT(A1,1)&IFERROR(MID(A1,FIND("_",A1,1)+1,1),"")&IFERROR(MID(A1,FIND("_",A1,FIND("_",A1,1)+1)+1,1),"")

我没有在第一部分周围放置 iferror() ,假设至少有一点需要查看。

& 进行连接:更少打字:)


0
投票

您还可以使用(对于单元格 B2 中的数据):

=CONCAT(LEFT(B2,1),IF(MID(B2,ROW(INDIRECT("A1:A"&LEN(B2)-1)),1)="_",MID(B2,ROW(INDIRECT("A2:A"&LEN(B2))),1),""))

MID(B2,ROW(INDIRECT("A1:A"&LEN(B2)-1)),1)
- 将文本字符串分离为单个字符数组。

IF
语句正在寻找“_”字符,其结果也将是一个空白(无字符)或_之后的下一个字符的数组。

CONCAT
只是将此数组与使用
LEFT

提取的第一个字符连接在一起

适用于 PC 或 MAC 版本的 Excel。


0
投票

这在 PowerQuery 中如何实现?

© www.soinside.com 2019 - 2024. All rights reserved.