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

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

例如

Name: a Age: 1 University: 1 Degree: 3 Year: 3 

我正在寻找提取(在这个例子中)包含在单元格内的大学信息,并将其复制到另一列中的另一个单元格。

我的文档中有大约1000条logging,所以要手工复制和粘贴将是非常耗时的。

任何帮助将不胜感激

干杯

你可以用Excel公式来做到这一点。

假设你的数据在列A中,并且你想要在列B中提取,并假设你在第一行放置了一个标题,那么你可以像下面的图片那样做:

![在这里输入图片描述

(请注意,我在公式中使用分号作为列表分隔符,而不是使用逗号)

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))返回标题后面的换行符的位置,确保如果不存在,超出string长度的位置是回

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

如果每行之间有一个中断,则在B1中input:

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

在这里输入图像说明

这假设:

  • 大学线是第三线
  • 你想要整条线

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

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

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

我把你的示例文本放在A1单元格中作为我的testing,并返回University: 1 。 但是,只有University总是在文本string中跟随Degree ,这才会起作用。

另一种方法是将MID语句的最后一部分(要求返回长度的部分)replace为返回的字符的确切数量,在本例中为13,如下所示:

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

这假设与University相关的整数总是1个字符。

无论哪种方式,上述两个公式的组合应该能得到你所需要的。 在这种情况下,VBA不是必需的。

在单元格值中的行由换行符vbLf ,因此要将信息从单元格值中提取出来,可以使用String-Functions Mid(...)InStr(...)

 Dim cellValue as String Dim extracedValue as String Dim keyWord as String Dim posStart as Integer, posEnd as Integer extractedValue = "" ' Not necessary, but I prefer initialized variables cellValue = ActiveSheet.Cells(1,1).Value ' Put your cell here keyWord = "University" ' Put your keyword here posStart = InStr(1, cellValue, keyWord) ' Find keyword in the string If (posStart > 0) Then posEnd = InStr(posStart, cellValue, vbLf) ' Find next line feed after the keyword If (posEnd > 0) Then extractedValue = Mid(cellValue, posStart, posEnd - posStart) ' Extract the value End If End If 

我没有testing代码,但你应该明白了。