Excel 2010parsing出可变长度文本string的部分

我的数据通常是CMB1.I2.CB3.str01 / 02 +或01-02.01 +,或者是一些随机的变化。 我认为最糟糕的情况是AR1.IN2.CM3.ST04 / 05 +。

现在我有A2-A1000列,B列,C列,D列等完整的string数据我试图分开完整的string的部分。 我通过在excel中使用left , mid, len and search函数来分隔string,并且让用户input分隔符(在本例中为all,但有时是 – 或/等)。 所以我的公式看起来像这样

使用此示例AR1.IN2.CM3.ST04/05+在单元格A5中,分隔符/分隔符(。's)在单元格B2 - D2

A5: AR1.IN2.CM3.ST04/05+
A6: A1.I2.CM3.ST06/07-
A7: 01.03.4.8/9+

B5:AR1
eq in b5: =LEFT(A5,SEARCH($B$2,A5,1)-1)

C5:IN2
eq in C5: =MID(A5,LEN(B5&$B$2)+1,SEARCH($C$2,A5,LEN(B5&$B$2)+1)-LEN(B5&$B$2&$C$2))

D5:CM3
在D5中的Eq: =MID(A5,LEN(B5&$B$2&C5&$C$2)+1,SEARCH($D$2,A5,LEN(B5&$B$2&C5&$C$2&$D$2)+1)-LEN(B5&$B$2&$C$2&C5&$D$2))

E5:ST04 / 05 +
E5中的E5: =RIGHT(A5,LEN(A5)-LEN(B5&$B$2&C5&$C$2&D5&$D$2))

我的方程式工作正常,但我希望有一个更简单的方法? 当我试图向他们解释每个配方在做什么的时候,我的同事们都瞪大了眼睛

为了缩短你的公式,你可以:

  1. 添加帮助器列,用于存储分隔符的第一,第二等外观的位置。 这将为您节省大量的阅读/写作,但最重要的是,这将使您的公式更具可读性/可理解性。 这是编程中的一个基本概念,我认为Excel中的公式也应该遵守这个规则。
  2. 添加助手列与剥离部分string的部分结果。 这些可能是隐藏的,分组的,和/或非常窄,所以他们不打扰。 SUBSTITUTEFIND在这里可能有用。
  3. 使用VBA函数Split (部分离开公式领域)。 我非常喜欢这个,我经常在用户定义的公式中使用它。
  4. 使用文本到列(完全离开公式领域)。

你的同事看起来会恢复正常

更简单的方法。 在列A中的数据中,在B1中input:

 =TRIM(MID(SUBSTITUTE($A1,".",REPT(" ",999)),COLUMNS($A:A)*999-998,999)) 

跨越和向下复制这个。 例如:

在这里输入图像说明

这就像“文本到列”,但有一个公式。