Ihre Daten muss in Sheet1
und gewünschten Ausgang Unter der Annahme, in Sheet2
angezeigt werden, sollte folgender Code helfen:
Sub SplitCell()
Dim cArray As Variant
Dim cValue As String
Dim rowIndex As Integer, strIndex As Integer, destRow As Integer
Dim targetColumn As Integer
Dim lastRow As Long, lastCol As Long
Dim srcSheet As Worksheet, destSheet As Worksheet
targetColumn = 2 'column with semi-colon separated data
Set srcSheet = ThisWorkbook.Worksheets("Sheet1") 'sheet with data
Set destSheet = ThisWorkbook.Worksheets("Sheet2") 'sheet where result will be displayed
destRow = 0
With srcSheet
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For rowIndex = 1 To lastRow
cValue = .Cells(rowIndex, targetColumn).Value 'getting the cell with semi-colon separated data
cArray = Split(cValue, ";") 'splitting semi-colon separated data in an array
For strIndex = 0 To UBound(cArray)
destRow = destRow + 1
destSheet.Cells(destRow, 1) = .Cells(rowIndex, 1)
destSheet.Cells(destRow, 2) = Trim(cArray(strIndex))
destSheet.Cells(destRow, 3) = .Cells(rowIndex, 3)
Next strIndex
Next rowIndex
End With
End Sub
Sie dies tun können einfach mit 'Macht Query' oder'Erhalte und Transform' verfügbar seit Excel 2010. Sie verwenden das Werkzeug nur, um die Spalte Kontakt auf Semikolons aufzuteilen; dann deaktivieren Sie diese Spalten. Möglicherweise müssen Sie eine überflüssige Spalte löschen und einige umbenennen. Wenn Sie eine VBA-Lösung benötigen, zeichnen Sie einfach ein Makro auf, während Sie es tun. –