将单元格内的特定行复制到另一个单元格中
我有一个电子表格,在一个单元格中有多个行,所有都有换行符。
例如
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))
这假设:
- 大学线是第三线
- 你想要整条线
即使你还没有提供你迄今为止所做的尝试,我也提供了一个答案,这是这个网站上的问题通常如何工作…但今天我感到慷慨:)
使用MID
和FIND
公式的组合,如下所示:
=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代码,但你应该明白了。