Вы можете использовать макрос для циклического просмотра вашей информации и печати в новых столбцах.Что-то вроде:
Sub delimit()
Dim cat As Range, c As Range, i As Long, nxt As Long
Set cat = ActiveSheet.Range(Range("B2"), Range("B65000").End(xlUp))
For Each c In cat
arr = Split(c.Value, ";")
For i = 0 To UBound(arr)
nxt = Cells(Rows.Count, 5).End(xlUp).Offset(1, 0).Row
If i = 0 Then Range("D" & nxt).Value = c.Offset(0, -1)
Range("E" & nxt).Value = arr(i)
Next i
Next c
End Sub
![enter image description here](https://i.stack.imgur.com/Lo1SA.gif)
Основное, что мы здесь используем, это Split()
, который превратит строку в массив.
Синтаксис: Split ( expression [,delimiter] [,limit] [,compare] )
Мы перебираем список категорий, устанавливаем столбец "B
" и создаем новый массив для каждой ячейки.
Затем мы печатаем этот массив в нужном столбце,в этом примере столбец "E
".
Но сначала мы распечатаем идентификационный номер в столбце "D
", поскольку в настоящее время мы нацеливаемся на эту строку.
Если вы также хотитескопируйте столбец "C
", как мы делаем "A
", просто измените IF
соответственно.
С
If i = 0 Then Range("D" & nxt).Value = c.Offset(0, -1)
на
If i = 0 Then
Range("D" & nxt).Value = c.Offset(0, -1)
Range("F" & nxt).Value = c.Offset(0, 1)
End If