Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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_Data Cleaning - Fatal编程技术网

如何在excel中删除字符串中的多个字符

如何在excel中删除字符串中的多个字符,excel,vba,data-cleaning,Excel,Vba,Data Cleaning,我有几千排要打扫。我想删除所有重复的逗号,并用一个逗号替换它们。我正在使用excel。下面是一个例子 当前数据 期望输出 ,,,,,,,,,, 一,二,三 一,二,三 二,一,一,,,,,, 二,一 二,一,一,二,一 二,一,一,二,一 您可以将其作为用户定义的函数应用于单元格,如果您有大量数据,则使用过程会更快 Sub test() Dim vDB As Variant Dim vResult() As Variant Dim i As Long, r As Long

我有几千排要打扫。我想删除所有重复的逗号,并用一个逗号替换它们。我正在使用excel。下面是一个例子

当前数据 期望输出 ,,,,,,,,,, 一,二,三 一,二,三 二,一,一,,,,,, 二,一 二,一,一,二,一 二,一,一,二,一
您可以将其作为用户定义的函数应用于单元格,如果您有大量数据,则使用过程会更快

Sub test()
    Dim vDB As Variant
    Dim vResult() As Variant
    Dim i As Long, r As Long
    Dim str As String
    
    vDB = Range("a1", Range("a" & Rows.Count).End(xlUp))
    
    r = UBound(vDB, 1)
    
    ReDim vResult(1 To r, 1 To 1)
    For i = 1 To r
        str = vDB(i, 1)
        vResult(i, 1) = myresult(str)
    Next i
    Range("b1").Resize(r) = vResult
End Sub

Function myresult(str As String)
    Dim vR(), vS, v
    Dim n  As Integer
    vS = Split(str, ",")
     For Each v In vS
        If v <> "" Then
            n = n + 1
            ReDim Preserve vR(1 To n)
            vR(n) = v
        End If
    Next v
    If n Then
       myresult = Join(vR, ", ")
    Else
        myresult = ""
    End If
End Function
子测试()
作为变体的Dim vDB
Dim vResult()作为变量
暗淡的i一样长,r一样长
作为字符串的Dim str
vDB=范围(“a1”,范围(“a”和行数)。结束(xlUp))
r=UBound(vDB,1)
重拨vResult(1对r,1对1)
对于i=1到r
str=vDB(i,1)
vResult(i,1)=我的结果(str)
接下来我
范围(“b1”)。调整大小(r)=vResult
端接头
函数myresult(str作为字符串)
尺寸vR(),vS,v
作为整数的Dim n
vS=拆分(str,“,”)
对于vS中的每个v
如果v“那么
n=n+1
重拨保留vR(1到n)
vR(n)=v
如果结束
下一个v
如果n那么
myresult=Join(vR,“,”)
其他的
myresult=“”
如果结束
端函数

您可以将其作为用户定义的函数应用于单元格,如果您有大量数据,则使用过程会更快

Sub test()
    Dim vDB As Variant
    Dim vResult() As Variant
    Dim i As Long, r As Long
    Dim str As String
    
    vDB = Range("a1", Range("a" & Rows.Count).End(xlUp))
    
    r = UBound(vDB, 1)
    
    ReDim vResult(1 To r, 1 To 1)
    For i = 1 To r
        str = vDB(i, 1)
        vResult(i, 1) = myresult(str)
    Next i
    Range("b1").Resize(r) = vResult
End Sub

Function myresult(str As String)
    Dim vR(), vS, v
    Dim n  As Integer
    vS = Split(str, ",")
     For Each v In vS
        If v <> "" Then
            n = n + 1
            ReDim Preserve vR(1 To n)
            vR(n) = v
        End If
    Next v
    If n Then
       myresult = Join(vR, ", ")
    Else
        myresult = ""
    End If
End Function
子测试()
作为变体的Dim vDB
Dim vResult()作为变量
暗淡的i一样长,r一样长
作为字符串的Dim str
vDB=范围(“a1”,范围(“a”和行数)。结束(xlUp))
r=UBound(vDB,1)
重拨vResult(1对r,1对1)
对于i=1到r
str=vDB(i,1)
vResult(i,1)=我的结果(str)
接下来我
范围(“b1”)。调整大小(r)=vResult
端接头
函数myresult(str作为字符串)
尺寸vR(),vS,v
作为整数的Dim n
vS=拆分(str,“,”)
对于vS中的每个v
如果v“那么
n=n+1
重拨保留vR(1到n)
vR(n)=v
如果结束
下一个v
如果n那么
myresult=Join(vR,“,”)
其他的
myresult=“”
如果结束
端函数

尝试使用substitute()函数。一种方法是将文本转换为以逗号分隔的列。然后另存为csv文件。您的数据现在是干净的,值之间只有一个逗号。如果有其他列,则此选项不是最佳选项。另一个选项是查找/替换。。。找到2个逗号并替换为1,找到3并替换为1,依此类推。如果您只有10个左右的变体,那么这就是quick.RegExp是一个有用的工具。
Do While Instr(txt,“,”)>0:txt=Replace(txt,“,”,“,”):Loop
尝试substitute()函数。一种方法是将文本转换为以逗号分隔的列。然后另存为csv文件。您的数据现在是干净的,值之间只有一个逗号。如果有其他列,则此选项不是最佳选项。另一个选项是查找/替换。。。找到2个逗号并替换为1,找到3并替换为1,依此类推。如果您只有10个左右的变体,那么这就是quick.RegExp是一个有用的工具。
Do While Instr(txt,“,”)>0:txt=Replace(txt,“,”,“,”):Loop