excel 2010解析出可变长度文本字符串的部分

时间:2016-09-08 22:42:51

标签: excel string parsing split

我的数据通常以CMB1.I2.CB3.str01 / 02 +或01-02.01 +或该设置的随机变化形式出现。我相信最坏的情况是AR1.IN2.CM3.ST04 / 05 +。

现在我在col A2-A1000中,在col B,C,D等中有完整的字符串数据。我正在尝试按部分分隔整个字符串。我在excel中使用left , mid, len and search函数分隔字符串,并让用户输入分隔符(在本例中为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
b5中的eq:=LEFT(A5,SEARCH($B$2,A5,1)-1)

C5:IN2
C5中的eq:=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中的eq:=RIGHT(A5,LEN(A5)-LEN(B5&$B$2&C5&$C$2&D5&$D$2))

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

2 个答案:

答案 0 :(得分:1)

要缩短公式,您可以:

  1. 添加辅助列,用于存储分隔符的第一个,第二个等的位置。这将为您节省大量的阅读/写作,但最重要的是,它将使您的公式更具可读性/可理解性。 这是编程中的一个基本概念,我认为Excel中的公式也应该遵守这个规则。
  2. 添加辅助列,其中包含部分字符串剥离的部分结果。这些可能是隐藏的,分组的和/或非常狭窄的,所以他们不会打扰。 SUBSTITUTEFIND在这里可能很有用。
  3. 使用VBA函数Split(部分保留 Formulas 域)。我非常喜欢这个,我经常在用户定义的公式中使用它。
  4. 将文本用于列(完全保留公式域)。
  5. 你的同事看起来会恢复正常......

答案 1 :(得分:1)

更简单的方法。对于 A 列中的数据,在 B1 中输入:

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

向上和向下复制此内容。例如:

enter image description here

这就像" Text-to-Columns",但是有一个公式。