AW: Pivot Daten strukturieren
23.09.2014 17:35:32
fcs
Hallo Sebastian,
per Pivottabellenbericht kannst du deine Liste nicht in die gewünschte Struktur bringen.
Das geht nach meiner Einschätzung nur per Makkro.
Nachfolgend ein entsprechendes Makro, das du ggf. noch ein wenig anpassen muss.
Einfügen musst du es in einem allgemeinen Modul der Datei im VBA-Editor.
Gruß
Franz
Sub Aufbereiten_Teile_Preise()
Dim wksTeile As Worksheet
Dim wksErgebnis As Worksheet
Dim ZeileE As Long, ZeileT As Long, SpalteE As Long
Dim varTeil, varWerk, varLief, varCur, varPreis
Dim arrTeile As Variant, arrErgebnis As Variant
Set wksTeile = Worksheets("Tabelle1")
Set wksErgebnis = Worksheets("Tabelle3")
With wksTeile
arrTeile = .Range(.Cells(7, 2), .Cells(.Rows.Count, 2).End(xlUp).Offset(0, 4))
End With
ReDim arrErgebnis(LBound(arrTeile, 1) To UBound(arrTeile, 1), 1 To 28)
ZeileE = LBound(arrErgebnis, 1) - 1
For ZeileT = LBound(arrTeile, 1) To UBound(arrTeile, 1)
varWerk = arrTeile(ZeileT, 2)
varLief = arrTeile(ZeileT, 3)
varCur = arrTeile(ZeileT, 4)
varPreis = arrTeile(ZeileT, 5)
If varTeil arrTeile(ZeileT, 1) Then
varTeil = arrTeile(ZeileT, 1)
ZeileE = ZeileE + 1
arrErgebnis(ZeileE, 1) = varTeil
End If
SpalteE = 0
Select Case varWerk
Case "EU": SpalteE = 2
Case "JP": SpalteE = 11
Case "US": SpalteE = 20
End Select
If SpalteE > 0 Then
If arrErgebnis(ZeileE, SpalteE) = "" Then
ElseIf arrErgebnis(ZeileE, SpalteE + 3) = "" Then
SpalteE = SpalteE + 3
ElseIf arrErgebnis(ZeileE, SpalteE + 6) = "" Then
SpalteE = SpalteE + 6
Else
SpalteE = 0
End If
End If
If SpalteE > 0 Then
arrErgebnis(ZeileE, SpalteE) = varLief
arrErgebnis(ZeileE, SpalteE + 1) = varCur
arrErgebnis(ZeileE, SpalteE + 2) = varPreis
End If
Next ZeileT
With wksErgebnis
With .UsedRange
ZeileT = .Row + .Rows.Count - 1
End With
If ZeileT > 3 Then
.Range(.Rows(3), .Rows(ZeileT)).Clear
End If
.Cells(3, 2).Resize(UBound(arrErgebnis, 1), 28) = arrErgebnis
With .Cells(3, 2).Resize(ZeileE, 28)
.Borders.LineStyle = xlContinuous
.HorizontalAlignment = xlCenter
End With
.Activate
End With
Erase arrTeile, arrErgebnis
End Sub