【问题标题】:Excel formula to extract text from midExcel公式从中间提取文本
【发布时间】:2021-01-19 12:52:56
【问题描述】:

在这里,我使用下面的公式从文本中提取中间名

=MID(I2, SEARCH("-",I2) + 1, SEARCH("-",I2,SEARCH("-",I2)+1) - SEARCH("-",I2) - 1)

所以从名字“Goapta-Saaririka-Aaasshok”,我可以拉出“Saaririka”,但如果我只有名字和中间名而不是姓氏,我就会遇到问题。上述公式无法从“Basrsaaggade-Aamimit”中提取中间名

请协助,即使没有姓氏,我该如何提取中间名。

【问题讨论】:

    标签: excel string excel-formula formula extract


    【解决方案1】:

    测试破折号的数量。对于 A 列中的数据:

    =IF(LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))=2,MID(A1, SEARCH("-",A1) + 1, SEARCH("-",A1,SEARCH("-",A1)+1) - SEARCH("-",A1) - 1),MID(A1,FIND("-",A1)+1,99))
    

    如果有 2 个破折号,取中间的字符串
    如果有 1 个破折号,取最后一个字符串。

    (使用 Excel 365 可以缩短很多)

    【讨论】:

    • 百万感谢..它的工作..感谢您的帮助...
    • @gausshaikh,如果它对您有用,请考虑通过单击答案左侧的复选标记来接受答案。
    【解决方案2】:

    您可以尝试在每个连字符上拆分字符串:

    B1中的公式:

    =FILTERXML("<t><s>"&SUBSTITUTE(A1,"-","</s><s>")&"</s></t>","//s[2]")
    
    • //s[2] - 总是从我们的结果数组中返回第二个节点。

    【讨论】:

      【解决方案3】:

      无需测试破折号的数量。

      假设您的数据从 A1 开始。把这个放在B1:=TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",255)),256,256))

      向下拖动。

      它将每个破折号替换为 255 个空格,然后从 256 个字符中删除 256 个字符,以保证包含第二个元素,然后修剪掉多余的空格。

      如果您希望在 VBA 中使用 UDF 来执行此操作,则可以使用“-”作为分隔符将字符串拆分为一个数组并获取第二个元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-20
        • 1970-01-01
        • 2023-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多