Nun, es gibt mehrere Wege, um zu erreichen, was Sie erreichen wollen.
1. Verwenden Formel
In Zell A4
von Sheet2
geben Sie die folgende Formel und Ziehen/Kopieren nach unten nach Bedarf
=OFFSET(Sheet1!$D$4,FLOOR((ROW(Sheet1!D4)-ROW(Sheet1!$D$4))/11,1),0)
In Zell C4
von Sheet2
geben Sie die folgende Formel und ziehen/nach Bedarf kopieren
=OFFSET(Sheet1!$E$4,FLOOR((ROW(Sheet1!E4)-ROW(Sheet1!$E$4))/11,1),MOD(ROW(Sheet1!D4)-ROW(Sheet1!$D$4),11))
2.VBA
Methode I - berechnen Werte von Sheet1
und aktualisieren Sie den Bereich in Sheet2
Sub Demo1()
Dim srcWB As Workbook
Dim srcWS As Worksheet, destWS As Worksheet
Dim lastRow As Long, lastCol As Long, i As Long, CategoryCnt As Long, temp
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set srcWB = ThisWorkbook
Set srcWS = srcWB.Sheets("Sheet1")
Set destWS = srcWB.Sheets("Sheet2")
CategoryCnt = 11 '->enter number of categories
lastRow = srcWS.Cells(Rows.Count, "D").End(xlUp).Row '->last row with data
lastCol = srcWS.Cells(3, Columns.Count).End(xlToLeft).Column '->last column with data
For i = 4 To (lastRow - 4) * CategoryCnt
destWS.Cells(i, 1) = srcWS.Cells(Int((i - 4)/CategoryCnt) + 4, 4)
destWS.Cells(i, 3) = srcWS.Cells(Int((i - 4)/CategoryCnt) + 4, ((i - 4) Mod CategoryCnt) + 5)
Next i
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Methode II - Geben Sie Formel in Sheet2
Bereich
Sub Demo2()
Dim srcWB As Workbook
Dim srcWS As Worksheet, destWS As Worksheet
Dim lastRow As Long, lastCol As Long, i As Long, CategoryCnt As Long, temp
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set srcWB = ThisWorkbook
Set srcWS = srcWB.Sheets("Sheet1")
Set destWS = srcWB.Sheets("Sheet2")
CategoryCnt = 11
lastRow = srcWS.Cells(Rows.Count, "D").End(xlUp).Row
lastCol = srcWS.Cells(3, Columns.Count).End(xlToLeft).Column
destWS.Range("A4").Formula = "=OFFSET(Sheet1!$D$4,FLOOR((ROW(Sheet1!D4)-ROW(Sheet1!$D$4))/11,1),0)"
destWS.Range("C4") = "=OFFSET(Sheet1!$E$4,FLOOR((ROW(Sheet1!E4)-ROW(Sheet1!$E$4))/11,1),MOD(ROW(Sheet1!D4)-ROW(Sheet1!$D$4),11))"
Range("A4:C4").Select
Selection.AutoFill Destination:=destWS.Range("A4:C" & (lastRow - 4) * 11), Type:=xlFillDefault
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Lassen Sie mich wissen, wenn etwas nicht klar ist.
Siehe Bild als Referenz:
Sheet1
Sheet2
Hier sind die Bilder: Bild 1: http: // i .stack.imgur.de/mF naf.png Image 2: http://i.stack.imgur.com/wvfXS.png – joe
Bearbeiten Sie Ihre Frage, um Bilder darin aufzunehmen. –
Klang wie ein typischer Fall für 'Unpivot'. Vielleicht möchten Sie das googeln. Hier sind zwei Beispiele, die für Sie funktionieren sollten: http://superuser.com/questions/78439/is-it-possible-to-unpivot-or-reverse-pivot-in-excel ODER hier (mit einem YouTube-Video): https://www.youtube.com/watch?v=pUXJLzqlEPk – Ralph