从Excel单元格中提取数据

时间:2016-04-28 09:00:55

标签: 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 | ABCDEF
XXXXX | YYYYY | 0000000000,0000000000 | 

由于无法对数据进行排序,因此希望对这两种情况使用单一公式

1 个答案:

答案 0 :(得分:0)

在B1地方

=TRIM(LEFT(A1,FIND("(",A1)-1))

此公式采用第一个“(”左侧的所有字符.TRIM函数删除多余的空格和一些其他特殊字符。您可能想也可能不想使用修剪。如果不减少-1到-2或-3等,直到你返回的字符数正确,最后没有空格。

C1中的

=TRIM(MID(A1,FIND("(",A1)+1,FIND("(",A1,FIND("(",A1)+1)-FIND("(",A1)-1))

有点棘手,而且很多重复性使得难以阅读。基本上我们找到第一个“(”并在其右边的1个字符并开始拉动字符。为了确定要拉动的字符数,第二个“(”的位置被找到。这是通过找到第一个“(”在第一个之后“(”。

D1中的

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

与我们在前面的例子中在找到第一个“)”的起始点之后拉动文本以及我们查看字符串长度并减去第一个“)”的位置的字符数相同。 。一旦它被分隔为空格的数字,则用substitue命令代替昏迷空间。

在E1中

=MID(A1,FIND("(",A1,FIND("(",A1)+1)+1,FIND(")",A1)-FIND("(",A1,FIND("(",A1)+1)-1)

在找到不同的起点和终点来翻录文本之前,这只是我们所做的非常难看的重复。

您需要执行以下操作才能将所有信息反馈回A1。你需要粘贴价值,否则你的公式将指向所有错误的东西,而且通常看起来非常糟糕。

  1. 选择B1到E1并根据需要复制多行。
  2. 选择B1到E中的最后一行并复制。
  3. 使用粘贴值粘贴在顶部或粘贴在A1
  4. 根据您决定粘贴的位置删除A1或E1。
  5. 如果您经常这样做,可以将此过程记录在宏中。