Excel文本公式,用于提取字段中以分号分隔的单词

时间:2010-02-12 04:52:19

标签: excel excel-formula

Excel中的字段包含以分号分隔的单词,例如:

  

A1 = save; the; national; treasure; for; good

如何应用Excel文本公式在其他字段中从此字段生成单独的单词? E.g:

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 =你好;那里;怎么样;是;你

在这方面的任何帮助将受到高度赞赏。

(问题是在这种情况下不允许编写我自己的函数,我必须使用原始函数,如findsearchmid等。)

3 个答案:

答案 0 :(得分:5)

您可以创建一个VBA函数来拆分此example

中的字段
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, ";"),依此类推

答案 1 :(得分:1)

如果您可以使用中间公式,那么这将起作用:

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中每个分号的位置,因为它开始在字符串中查找前一个单元格中找到的分号后面的一个字符。

例如,细胞E1在A1 + 1 = 10开始在A1中搜索分号。

C1:H1中的iferror语句捕获当搜索没有找到更多分号时将发生的错误,并返回字符串A1的全长,加上结尾处假想的分号为1。

B1需要为空以创建初始零。

单元格C2:H2然后使用Mid函数复制A1字符串的部分,从B1:G1的每个值开始后的一个字符开始,长度为(C1-B1)-1,(d1-c1)-1等(减去一个切除分号本身)

你应该得到:第1行中的5,9,18,27,31,36,以及这些单元格下面的单词。

希望这有帮助。

答案 2 :(得分:1)

如果要在A1中解析文本,则以下公式应该可以使用

在A2中输入公式

=IF(ISERROR(LEFT(A1,FIND(";",A1)-1)),A1,LEFT(A1,FIND(";",A1)-1))

在B2中输入公式

=IF(ISERROR(RIGHT(A1,LEN(A1)-FIND(";",A1))),"",RIGHT(A1,LEN(A1)-FIND(";",A1)))

然后您可以根据需要将它们复制下来。 A列抓取最左边的单词,B列显示要解析的剩余字符串。如果用完了解析公式的单词将显示空白。 B列也可以隐藏。