将单元格中的特定行复制到另一个单元格中

时间:2016-06-15 10:21:04

标签: excel vba excel-vba excel-formula

我有一个电子表格,单元格中有多行,都有换行符。

e.g。

Name: a

Age: 1

University: 1

Degree: 3

Year: 3

我希望提取(在此示例中)单元格中包含的大学信息,并将其复制到另一列中的另一个单元格中。

我的文档中有大约1000条记录,因此手动复制和粘贴将非常耗时。

任何帮助将不胜感激

干杯

4 个答案:

答案 0 :(得分:1)

您可以使用Excel公式执行此操作。

假设您的数据位于A列,并且您希望在B列中进行提取,并假设您在第1行中添加标题,则可以执行如下图所示:

![enter image description here

(注意我在公式中有一个分号作为列表分隔符,改为使用逗号)

B2中的公式为:

=MID($A2, FIND(B$1, $A2) + LEN(B$1), 
          FIND(CHAR(10), $A2 & CHAR(10), FIND(B$1, $A2)) - FIND(B$1, $A2) - LEN(B$1))

该公式有一些重复;以下是一些解释的部分:

  • FIND(B$1, $A2)返回文字
  • 中标题的位置
  • FIND(B$1, $A2) + LEN(B$1)返回文字
  • 中该标题后面的位置
  • FIND(CHAR(10), $A2 & CHAR(10), FIND(B$1, $A2))返回标题后面的换行符的位置,确保如果不存在,则返回超出字符串长度的位置

只要将列标题放在您要查找的任何子字符串中,就可以将相同的公式复制/拖动到其他列和行。

答案 1 :(得分:1)

如果每行之间有分隔符,则在 B1 中输入:

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

enter image description here

这假定:

  • 大学行是第三行
  • 你想要整行

答案 2 :(得分:0)

我提供了一个答案,即使你还没有提供你到目前为止所做的尝试,这就是这个网站上的问题通常是如何工作的...但是今天我感觉很慷慨:)

使用MIDFIND公式的组合,如下所示:

=MID(A1,FIND("University",A1),FIND("Degree",A1)-FIND("University",A1)-2)

我将您的示例文本放在Cell A1中进行测试,然后返回University: 1。但是,只有在文本字符串中University始终跟Degree后才会有效。

另一种方法是将MID语句的最后一部分(要求返回长度的部分)替换为要返回的确切字符数,在这种情况下将为13,如下所示:

=MID(A1,FIND("University",A1),13)

这假设与University关联的整数的长度始终为1个字符。

无论哪种方式,上述两个公式的组合应该可以满足您的需求。在这种情况下,VBA不是必需的。

答案 3 :(得分:0)

单元格值中的行由换行符State分隔,因此要从单元格值中提取信息,可以使用字符串函数{"name" : "Machine 1", "numCores" : 8, "state" : 1} vbLf:< / p>

Mid(...)

我还没有对代码进行测试,但你应该明白这个想法。