В вашей рабочей книге создайте новый рабочий лист с именем " Destination ". Скопируйте и вставьте приведенный ниже код в новый модуль в VBA ...
Public Sub SplitRowsBasedOnLastColumn()
Dim rngCells As Range, lngRow As Long, lngCol As Long, strLastColValue As String, i As Long
Dim strDelimiter As String, objDestSheet As Worksheet, lngWriteRow As Long, arrValues
Set rngCells = Selection
strDelimiter = ","
Set objDestSheet = Sheets("Destination")
lngWriteRow = 1
With rngCells
objDestSheet.Cells.Clear
For lngCol = 1 To .Columns.Count
objDestSheet.Cells(1, lngCol) = .Cells(1, lngCol)
Next
For lngRow = 2 To .Rows.Count
strLastColValue = .Cells(lngRow, .Columns.Count)
If strLastColValue = "" Then strLastColValue = " "
arrValues = Split(strLastColValue, strDelimiter)
For i = 0 To UBound(arrValues)
lngWriteRow = lngWriteRow + 1
For lngCol = 1 To .Columns.Count - 1
objDestSheet.Cells(lngWriteRow, lngCol) = .Cells(lngRow, lngCol)
Next
objDestSheet.Cells(lngWriteRow, .Columns.Count) = Trim(arrValues(i))
Next
Next
End With
End Sub
Теперь выберите диапазон данных, включая заголовки (как показано), а затем запустите макрос.
После того, как это сделано, проверьте лист " Пункт назначения ", и у вас должен быть свой результат.
Я написал это на основе предоставленного вами набора данных, возможно, понадобятся настройки, если у вас есть какие-либо сценарии, кроме этого.
Дайте мне знать, как это происходит.