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))
我的方程式工作正常,但我希望有一个更简单的方法? 当我试图向他们解释每个配方在做什么的时候,我的同事们都瞪大了眼睛
为了缩短你的公式,你可以:
- 添加帮助器列,用于存储分隔符的第一,第二等外观的位置。 这将为您节省大量的阅读/写作,但最重要的是,这将使您的公式更具可读性/可理解性。 这是编程中的一个基本概念,我认为Excel中的公式也应该遵守这个规则。
- 添加助手列与剥离部分string的部分结果。 这些可能是隐藏的,分组的,和/或非常窄,所以他们不打扰。
SUBSTITUTE
和FIND
在这里可能有用。 - 使用VBA函数
Split
(部分离开公式领域)。 我非常喜欢这个,我经常在用户定义的公式中使用它。 - 使用文本到列(完全离开公式领域)。
你的同事看起来会恢复正常
更简单的方法。 在列A中的数据中,在B1中input:
=TRIM(MID(SUBSTITUTE($A1,".",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
跨越和向下复制这个。 例如:
这就像“文本到列”,但有一个公式。