用空格(或任何字符)将文本单元格拆分为任意数量的单词,重复单词

Posted

技术标签:

【中文标题】用空格(或任何字符)将文本单元格拆分为任意数量的单词,重复单词【英文标题】:Split text cell by spaces (or any character) for arbitrary number of words, with repeating words 【发布时间】:2012-10-02 14:42:47 【问题描述】:

我有一个 Excel 文件,其中有一列中有一些文本,我需要用新短语替换一些单词,但保留原始文本的某些部分。为了让我的用户保持简单,我希望允许按原始单词进行过滤,这意味着我需要每个单词一列。 Excel“文本到列”功能可能会有所帮助,但我没有打扰它,因为我听说您需要指定数字列。

长话短说,这是我想出的:


源单元格 = A2

第一个单词的列:B2

第二个单词的列:C2


A2:这是一些示例文本

B2: =IFERROR(LEFT(A2, FIND(" ", A2)), "")

C2: =IFERROR(LEFT(SUBSTITUTE(MID($A2, FIND(B2, $A2), LEN($A2) - FIND(B2, $A2)), B2, ""), FIND(" " , SUBSTITUTE(MID($A2, FIND(B2, $A2), LEN($A2) - FIND(B2, $A2)), B2, ""))), "")

D2:从 C2 开始填充

...


C2 中的这些乱七八糟的东西基本上是根据前一个单元格中的单词来分割源单元格 (A2)。因此,B2 正在寻找它看到的第一个空格,并将字符串的其余部分扔掉,只留下单词“This”。 C2 正在查看 B2,并从 A2 的值中删除它看到的单词并寻找下一个空格。 D2 会查看 C2,依此类推。不幸的是,当有一个重复的单词时,这就会崩溃。

如果我们将 A2 中的示例文本更改为“This is some example text, is it a question”(重复“is”),它会卡住重复单词“is”、“some”、“example”、 “文本”在正确填写时一遍又一遍。

对于我当前的任务,我真的不需要答案,但我希望有一个完整的解决方案来解决这种情况,因为在任何地方都没有找到好的解决方案。

希望这对某人有帮助!

【问题讨论】:

【参考方案1】:

以下是使用一些看起来不那么难看的 VBA 的可能性:

Sub splitCell(source As Range, delimiter As String, target As Range)
    'Takes value of source range and splits it by the delimiter horizontally
    'starting at the target range.
    Dim text() As String
    text = Split(source.Value, delimiter)
    For x = LBound(text) To UBound(text)
        target.Offset(0, x).Value = text(x)
    Next
End Sub

'Sample Call
Sub Test()
    With ThisWorkbook.Sheets(1)
        splitCell .Range("A2"), " ", .Range("B2")
    End With
End Sub

【讨论】:

以上是关于用空格(或任何字符)将文本单元格拆分为任意数量的单词,重复单词的主要内容,如果未能解决你的问题,请参考以下文章

如何把excel中的空白转换为数字

我的excel表格打开的单元格格式默认为日期,请问如何让excel表格打开的单元格格式默认为常规

Excel函数

excel 如何删除单元格内数据后多余的空格和换行符

将 pandas 中的一个单元格拆分为多行

如何将EXCEL表格里一个单元格的数据拆分为两列