【问题标题】:How do I split/parse a string around the first number in Excel如何在 Excel 中围绕第一个数字拆分/解析字符串
【发布时间】:2013-02-13 11:31:09
【问题描述】:

我在 A 列中有一个字符串,它是字母和数字的混合体。我想在出现的第一个数字之前将字符串分成两半,这样“abc123”在 B 列中变为“abc”,在 C 列中变为“123”。

【问题讨论】:

    标签: excel split excel-formula


    【解决方案1】:

    如果有任何类型的模式,例如总是 3 个字母.....或者只有 3 个或 4 个字母,例如,您可以更轻松地实现,但是对于任意数量的字母(假设数字总是跟随字母),您可以在 B2 中使用这个公式(这比我认为topcat3的链接中建议的公式)

    =LEFT(A2,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A2&1234567890))-1)

    然后是 C2 中的这个公式

    =REPLACE(A2,1,LEN(B2),"")

    请注意,最后一个公式将数字部分作为文本值返回 - 如果您希望它是数字,请在公式末尾添加 +0(但您将丢失任何前导零)

    【讨论】:

      【解决方案2】:

      只是想对 Barry 的公式稍作改动。在我看来稍微容易理解,但使用起来有点困难:

      你可以使用这个数组公式求第一个数字的起始位置+1:

      {=MIN(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},A2),""))}
      

      使用 ctrl+alt+enter 输入,使其成为数组公式。

      然后您可以使用该数字将字符串的第一部分分开:

      =LEFT(A2,B2-1)
      

      然后你可以使用 REPLACE() 去掉字符串的第一部分(字母)。

      =REPLACE(A2,1,LEN(C2),"")
      

      您应该接受 Barry 的答案而不是这个答案,因为他的答案更易于使用且更简洁。但只是想在我的探索中添加一个变体,以了解 Barry 的公式是如何工作的。

      【讨论】:

      • Hello Stepan - 在我的版本中,将 1234567890 连接到 A2 可确保 FIND 函数永远不会给您错误(因为找到了所有数字)-因此您不需要 IFERROR 函数....而您不需要 CTRL+SHIFT+ENTER
      • @barry houdini 我同意,我的版本不是最佳的。在我看来,使用 A2&1234567890 而不仅仅是 A2 来避免 FIND() 生成的数组中的所有错误似乎很聪明。当我第一次看到它时,我做了双重拍摄。只有当我专注于 FIND() 部分时,我才明白你为什么这样做。数组公式没有很好地记录,在我看来,自然生成数组的公式记录得更少。
      猜你喜欢
      • 2014-11-12
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 2017-06-02
      相关资源
      最近更新 更多