Excel文本公式来提取字段中由分号分隔的单词
Excel中的字段包含以分号分隔的单词,例如:
A1 =保存;国家;宝藏;因为;好
如何应用Excel文本公式在其他字段中从该字段生成单独的单词? 例如:
A2 should contain a formula to get the first word ("save") A3 should contain a (different) formula to get the second word ("the") etc.
但是,即使A1中的值发生变化,例如A1的值改变为,这些公式也应该保持良好
A1 =你好;那里;你是怎么样的
任何在这方面的帮助将不胜感激。
(问题是我自己写的函数在这种情况下是不允许的,我不得不使用find
, search
, mid
等原始函数)
如果你有你的文本parsing在A1然后下面的公式应该工作
在A2中input公式
=IF(ISERROR(LEFT(A1,FIND(";",A1)-1)),A1,LEFT(A1,FIND(";",A1)-1))
在B2中input公式
=IF(ISERROR(RIGHT(A1,LEN(A1)-FIND(";",A1))),"",RIGHT(A1,LEN(A1)-FIND(";",A1)))
然后,您可以根据需要复制这些内容。 列A抓取最左边的单词,列B显示要parsing的剩余string。 如果用完的话parsing公式会显示一个空白。 B列也可以隐藏。
你可以创build一个VBA函数来拆分这个例子中的字段:
Function ExtractElement(str, n, sepChar) ' Returns the nth element from a string, ' using a specified separator character Dim x As Variant x = Split(str, sepChar) If n > 0 And n - 1 <= UBound(x) Then ExtractElement = x(n - 1) Else ExtractElement = "" End If End Function
那么A2的公式就是: =ExtractElement(A1, 1, ";")
,A3就是: =ExtractElement(A1, 2, ";")
等等
如果你可以使用中间公式,那么这将工作:
A1 – 保存;国家;宝藏;因为;好
B1 – 空白
C1 – = IFERROR(FIND(“;”,$ A1,1 +(B1)),LEN($ A1)+1)
将C1复制到D1:H1
C2 – = MID($ A1,B1 + 1,(C1-B1)-1)
将C2复制到D2:H2
行1将显示在A1中的每个分号的位置,因为它开始查看string中的一个字符通过在前一个单元格中find的分号。
例如,单元格E1从D1 + 1 = 10开始在A1中search一个分号。
C1:H1中的iferror语句会捕获当search没有find更多分号时发生的错误,并返回stringA1的全长,在末尾处为假分号加1。
B1需要空白以创build初始零。
单元格C2:H2然后使用Mid函数复制A1string的一部分,从B1:G1,长度为(C1-B1)-1,(d1-c1)-1 etc(minus一个是把自己的分号切掉)
你应该得到:5,9,18,27,31,36在第1行,并在这些单元格下的单个单词。
希望这可以帮助。