Мне действительно нравится работать двумя способами, если вам нужно использовать VBA. Представьте себе следующие данные:
1. Split
Asсогласно приведенным комментариям, вы можете использовать функцию Split. Настоящим небольшой скрипт, который показывает, как вы могли бы подойти к этому с использованием небольшого цикла:
Sub UseSplit()
Dim arr As Variant
Dim lr As Long, x As Long
With Sheet1 'Change CodeName accordingly
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
arr = .Range("A1:A" & lr)
For x = LBound(arr) To UBound(arr)
.Cells(x, 2).Resize(1, UBound(Split(arr(x, 1), ";")) + 1) = Split(arr(x, 1), ";")
Next x
End With
End Sub
2. TextToColumns
Второй подход заключается в использовании встроенной функции для записи текста с разделителями в другие столбцы с использованием функции TextToColumns
. Это не будет включать цикл. Под небольшим примером:
Sub UseSplit()
Dim rng As Range
Dim lr As Long
With Sheet1 'Change CodeName accordingly
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng = .Range("A1:A" & lr)
rng.TextToColumns Destination:=.Range("B1"), Semicolon:=True
End With
End Sub
Преимущество этого состоит в том, что, тогда как Split
будет возвращать массив строковых значений, текст в столбцы не будет:
Значения, которые должны быть числовыми, на самом деле являются числовыми.
Остается вопрос, действительно ли вам нужно работать через VBA? В любом случае, удачи в вашем проекте =)