3

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等)

4

3 回答 3

5

您可以创建一个 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, ";")等等

于 2010-02-12T05:02:50.790 回答
2

如果您要在 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列也可以隐藏。

于 2010-02-12T23:27:07.757 回答
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 从 D1+1 =10 开始在 A1 中搜索分号。

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

B1 需要为空白才能创建初始零。

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

你应该得到: 5, 9,18,27,31,36 在第 1 行,在这些单元格下方是单个单词。

希望这可以帮助。

于 2010-02-12T11:56:09.257 回答