这是一个基本的例子
Sub Sample()
Dim sString As String
Dim MyAr As Variant
Dim Col As New Collection
Dim itm
sString = "Ciencias de la Educación,Educación,Pedagogía,Ciencias de la Educación,Educación,Pedagogía"
MyAr = Split(sString, ",")
For i = LBound(MyAr) To UBound(MyAr)
On Error Resume Next
Col.Add Trim(MyAr(i)), CStr(Trim(MyAr(i)))
On Error GoTo 0
Next i
sString = ""
For Each itm In Col
sString = sString & "," & itm
Next
sString = Mid(sString, 2)
Debug.Print sString
End Sub
编辑
在 Excel 2010 中使用A1:G20000 填充Ciencias de la Educación,Educación,Pedagogía,Ciencias de la Educación,Educación,Pedagogía 进行了尝试和测试
耗时:2 秒
代码
Sub Sample()
Dim sString As String
Dim MyAr As Variant, rngAr
Dim Col As New Collection
Dim itm
Dim rng As Range
Debug.Print "StartTime: " & Now
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:G20000")
rngAr = rng.Value
For i = LBound(rngAr) To UBound(rngAr)
For j = LBound(rngAr, 2) To UBound(rngAr, 2)
MyAr = Split(rngAr(i, j), ",")
For k = LBound(MyAr) To UBound(MyAr)
On Error Resume Next
Col.Add Trim(MyAr(k)), CStr(Trim(MyAr(k)))
On Error GoTo 0
Next k
sString = ""
For Each itm In Col
sString = sString & "," & itm
Next
sString = Mid(sString, 2)
rngAr(i, j) = sString
Next j
Next i
ThisWorkbook.Sheets("Sheet1").Range("A1").Resize(20000, 7).Value = rngAr
Debug.Print "EndTime: " & Now
End Sub
屏幕截图