Настраиваемая разделенная строка в Excel VBA
У меня есть ячейки со строками, из которых мне нужно извлечь информацию, чтобы в итоге вставить их в другие ячейки. Смотри снипит ниже.
Структура струн:
"sub-string part 1 <variable1> sub-string part 2 <variable2> sub-string part 3 <variable3>"
Я пытаюсь разбить строку на массив, чтобы каждый sub-string part
и каждый <variable>
являются элементом массива. Так что все, что находится между угловыми скобками <...>
переменная
resultArray(): {"sub-string part 1", "<variable1>", "sub-string part 2", "<variable2>", "sub-string part 3", "<variable3>}
Перестановка строк может идти любым путем:
"sub-string part 1 <variable1> sub-string part 2 <variable2> sub-string part 3 <variable3> sub-string part 4"
"<variable1> sub-string part 1 <variable2> sub-string part 2 <variable3>"
"<variable1> sub-string part 1 <variable2> sub-string part 2 <variable3> sub-string part 3"
"эта строка не имеет переменной" (в этом случае только один элемент будет возвращать всю строку)
Я могу построить массив только <variable>
использую regEx, но я не могу разделить его так, чтобы подстроки и переменные были элементами массива.
С точки зрения Excel, я пытаюсь автоматизировать то, что заполняется в столбце B на основе столбца A из
1 ответ
Мы можем сделать специальный тип анализа. Первое преобразование:
<
чтобы:
|<
а затем конвертировать:
>
чтобы:
> |
а затем проанализировать с помощью трубы:
Sub SpecialParser()
Dim s As String, arr
With ActiveCell
s = .Value
s = Replace(Replace(s, "<", "|<"), ">", ">|")
arr = Split(s, "|")
.Offset(0, 1).Resize(1, UBound(arr) + 1).Value = arr
If .Offset(0, 1).Value = "" Then .Offset(0, 1).Delete Shift:=xlToLeft
End With
End Sub