У меня есть требование, когда у меня большая строка.

Например: abc,def,ghi

Я бы хотел разделить эти строки и собрать их в коллекцию.

Требуемый вывод:

ExampleCollection
abc
def
ghi

Как это сделать в VBA.

3
Siddharth Thanga Mariappan 13 Мар 2018 в 15:54

2 ответа

Лучший ответ

Что-то типа:

Sub marine()
    Dim s As String, c As Collection
    Dim arr

    s = "abc,def,mbs"
    arr = Split(s, ",")
    Set c = New Collection

    For Each a In arr
        c.Add a
    Next a
End Sub
7
Gary's Student 13 Мар 2018 в 12:59

Я бы сделал это вот так.

Sub SplitAll()
Dim xRg As Range
Dim xRg1 As Range
Dim xCell As Range
Dim I As Long
Dim xAddress As String
Dim xUpdate As Boolean
Dim xRet As Variant
On Error Resume Next
xAddress = Application.ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select a range", , xAddress, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
    If xRg.Columns.Count > 1 Then
    MsgBox "You can't select multiple columns", , "Kutools for Excel"
    Exit Sub
    End If
    Set xRg1 = Application.InputBox("Split to (single cell):", "Kutools for Excel", , , , , , 8)
    Set xRg1 = xRg1.Range("A1")
    If xRg1 Is Nothing Then Exit Sub
        xUpdate = Application.ScreenUpdating
        Application.ScreenUpdating = False
        For Each xCell In xRg
            xRet = Split(xCell.Value, ",")
            xRg1.Worksheet.Range(xRg1.Offset(I, 0), xRg1.Offset(I + UBound(xRet, 1), 0)) = Application.WorksheetFunction.Transpose(xRet)
            I = I + UBound(xRet, 1) + 1
        Next
        Application.ScreenUpdating = xUpdate
End Sub

См. Ссылку ниже для получения всей информации.

https://www.extendoffice.com/documents/excel/3341-excel-split-comma-separated-values.html

1
ASH 13 Мар 2018 в 15:22