Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 拆分但保留分隔符_Excel_Vba - Fatal编程技术网

Excel 拆分但保留分隔符

Excel 拆分但保留分隔符,excel,vba,Excel,Vba,我一直在使用一个函数来拆分字符串,但保留其分隔符 Function SplitButRetainDelims(ByVal text As String, ByVal delimiters As String) As String() Dim Arr() As String, currentDelim As String Dim i As Long For i = 1 To Len(delimiters) currentDelim = Mid$(deli

我一直在使用一个函数来拆分字符串,但保留其分隔符

Function SplitButRetainDelims(ByVal text As String, ByVal delimiters As String) As String()

    Dim Arr() As String, currentDelim As String
    Dim i As Long

    For i = 1 To Len(delimiters)
        currentDelim = Mid$(delimiters, i, 1)
        Arr = Split(Replace(text, currentDelim, currentDelim & "~"), "~")
    Next

    SplitButRetainDelims = Arr

End Function
问题是我现在的方式

Arr = Split(Replace(text, currentDelim, currentDelim & "~"), "~")
每次将仅使用当前分隔符中的拆分来覆盖数组。因此,它不再保持以前迭代的进度,而是重置

我以前几乎得到了一个可以接受的解决方案,但它太复杂了,不能提供太多的好处

编辑:示例

SplitButRetainDelims("potato (onion/soup / Green BEANS", " ()/") 
= ("potato", " ", "(", "onion", "/", "soup", " ", "/", "Green", " ", "BEANS")

在完成所有更换之前,不要进行拆分:

Function SplitButRetainDelims(ByVal text As String, ByVal delimiters As String) As String()

    Dim Arr() As String, currentDelim As String
    Dim i As Long

    For i = 1 To Len(delimiters)
        currentDelim = Mid$(delimiters, i, 1)
        text = Replace(text, currentDelim, "~" & currentDelim & "~")
    Next
    text = Replace(text, "~~", "~")
    Arr = Split(text, "~")
    SplitButRetainDelims = Arr

End Function

请提供一些测试数据和预期输出。这是朝着正确方向迈出的一步,是否也可以将分隔符强制放入自己的“单元格”@marucciboy2,然后您需要用拆分值包装除味器。见编辑。谢谢,斯科特,你是我的朋友hero@Marcucciboy2请参见“新建编辑”,添加了一个检查,以确保分隔符紧随其后时仅出现一个分隔符,而不是两个分隔符。