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

时间:2012-10-02 14:42:48

标签: excel split

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

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


来源单元格= A2

第一个字的列:B2

第二个字的列:C2


A2:这是一些示例文本

B2:= IFERROR(LEFT(A2,FIND(“”,A2)),“”)

C2:= IFERROR(LEFT(SUFTTITUTE(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中的示例文本更改为“这是一些示例文本,这是一个问题”(“是”重复),它会卡住重复单词“是”,“某些”,“示例”,填充正确时,“文字”一遍又一遍。

我真的不需要回答当前的任务,但我希望找到一个完整的解决方案来解决这个问题,因为在任何地方都找不到好的解决方案。

希望这对某人有帮助!

1 个答案:

答案 0 :(得分:0)

这可能是使用一些看起来不那么丑陋的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