从不同单元格中的Excel单元格中提取数据

时间:2016-04-28 10:43:16

标签: excel excel-vba excel-formula vba

我在A列的excel表格中有以下两种格式的数据,并希望使用一个单一公式

将其提取到不同的列
              Column A
XXXXX (YYYYY (ABCDEF) 0000000000 0000000000) 
XXXXX (YYYYY 0000000000)

结果必需

  A    |   B     |           C             |   D
XXXXX  |  YYYYY  |  0000000000,0000000000  |  ABCDEFA2 
XXXXX  |  YYYYY  |  0000000000             |  

两个条件都需要使用一个公式,c1,c2也可以是0000000000或000000000,00000000

这是此question

的后续内容

1 个答案:

答案 0 :(得分:0)

因为你有非常结构化的数据,并且它只是你正在看的两个案例,你可以把你的两个文本剥离方法放在一个if语句中,它可以找出你正在使用的案例。在这种情况下,我使用:

=IF(LEN(A1)-LEN(SUBSTITUTE(A1,"(",""))>1 ,Method A, Method B)

if语句的第一部分计算"的数量("有。如果你有一个以上的使用方法A公式来自你的第一个问题。如果你有1个或更少& #34;("然后它会尝试我在这个问题中添加的方法B公式。

与上一个答案类似,请在B1

中使用相同的公式 C1中的

将您的公式更改为:

=IF(LEN(A2)-LEN(SUBSTITUTE(A2,"(",""))>1,TRIM(MID(A2,FIND("(",A2)+1,FIND("(",A2,FIND("(",A2)+1)-FIND("(",A2)-1)),LEFT(RIGHT(A2,LEN(A2)-FIND("(",A2)),FIND(" ",A2)))

这个问题的新部分基本上是:

=LEFT(RIGHT(A2,LEN(A2)-FIND("(",A2)),FIND(" ",A2))

它只是你可以剥离数据的另一种方式。我知道你从左到右阅读的第一个公式是LEFT,但对我来说,公式真的从右边开始。我甚至先写了RIGHT公式然后再回过头来添加左边的部分。因此,使用RIGHT功能,我们基本上放弃了左边的所有内容,包括第一个"("。然后,我们采用RIGHT公式的结果并将左侧公式应用于它并将所有内容剥离到右侧并包括YYYYY 000000之间的空间。

在D1中使用:

=IF(LEN(A1)-LEN(SUBSTITUTE(A1,"(",""))>1,SUBSTITUTE(TRIM(MID(A1,FIND(")",A1)+1,LEN(A1)-FIND(")",A1)-1))," ",","),MID(A2,FIND(" ",A2,FIND("(",A2))+1,LEN(A2)-1-FIND(" ",A2,FIND("(",A2))))

新部分是:

=MID(A2,FIND(" ",A2,FIND("(",A2))+1,LEN(A2)-1-FIND(" ",A2,FIND("(",A2)))

基本上我们之前已经这样做了。使用MID公式来删除字符串中间的文本。你需要确定一个起点,我使用了第一个"之后的第一个空格。("。虽然从技术上讲我可以有第二个空格。句子反映了更多的是嵌套的FIND公式。找到起始位置后,通过减去第一个")的位置来确定要返回的字符数。从整个字符串的长度。

在E1使用中

=IF(LEN(A1)-LEN(SUBSTITUTE(A1,"(",""))>1,MID(A1,FIND("(",A1,FIND("(",A1)+1)+1,FIND(")",A1)-FIND("(",A1,FIND("(",A1)+1)-1),"")

到目前为止,这个等式的新部分是最简单的。

=""

我们在IF声明中需要它。如果我们没有它,则单元格将显示FALSE,因为如果没有为其错误结果提供其他内容,那么它就是if语句的值。

编辑公式并将其放入正确的单元格后,使用上一个问题中的复制粘贴程序