Bericht (Tabelle) aus einer Matrix Tabelle generieren
Hallo,
ich hab mal wieder Probleme etwas in Excel umzusetzen und würde mich freuen möglichst schnell eine Antwort zu erhalten
Ich habe eine Matrixtabelle erstellt in der ich Produktfeatures Pflege (mal beispielhaft im Bild dargestellt). Nun will ich aus der Matrixtabelle eine Übersicht generieren, die für jedes Produkt alle möglichen Features auflistet (auch im Bespiel aufgezeigt)
Bisher mache ich das immer manuell - sprich ich autofilter jedes feature und copy und paste die "stehenbleibenden" Produkte in eine extra Tabelle. Da das mitunter ziemlich aufwendig wird habe ich mich gefragt, ob das irgendwie automatisierbar geht !? Geht das über eine Formel, Pivot, VBA ?
Ich habe keine besonderen Excelkenntnisse und benutze Excel2007. Ich bin für jede hilfe dankbar.
Bisher mache ich das immer manuell - sprich ich autofilter jedes feature und copy und paste die "stehenbleibenden" Produkte in eine extra Tabelle. Da das mitunter ziemlich aufwendig wird habe ich mich gefragt, ob das irgendwie automatisierbar geht !? Geht das über eine Formel, Pivot, VBA ?
Ich habe keine besonderen Excelkenntnisse und benutze Excel2007. Ich bin für jede hilfe dankbar.
Please also mark the comments that contributed to the solution of the article
Content-Key: 152696
Url: https://administrator.de/contentid/152696
Printed on: April 26, 2024 at 13:04 o'clock
2 Comments
Latest comment
Hallo vanMatterhorn!
Ich kenne mich jetzt zwar mit vb.net besser als mit VBA aus, aber eigentlich sollte es irgendwie so gehen:
Hoffe irgendjemand kann funktionieren Code daraus machen (bin leider gescheitert )
Mathe172
Ich kenne mich jetzt zwar mit vb.net besser als mit VBA aus, aber eigentlich sollte es irgendwie so gehen:
Gehe alle Zeilen durch:
Prüfe, ob Zeile gleiches Produkt beinhaltet wie Vorgängerzeile
Wenn nicht, gehe alle Features durch:
Schreibe für jede Ausprägung die ID, das Prdukt, Feature und Ausprägung hin (in die nächste Zeile)
Fange neues Produkt an (Listen leeren etc.)
Gehe alle Features durch:
Wenn bei diesem Produkt nicht vorhanden, füge der Liste hinzu
Mathe172
Hallo nochmal!
Versuch mal das: (bitte abändern wo nötig)
Mathe172
Versuch mal das: (bitte abändern wo nötig)
'Tabelle1 in Sub Routine: AusgangsTabelle
Sub Routine()
Dim LetztesProdukt As String
'Diesen Dreierblock pro Future einmal einfügen und abändern
Dim Future1Name As String
Future1Name = "Verfügbare Farben" 'Name des ersten Futures
Dim Future1(3) As String '3: 'Anzahl Möglicher Ausprägungen -1
Dim Future2Name As String
Future2Name = "USB Anschluss" 'Name des zweiten Futures
Dim Future2(1) As String '1: 'Anzahl Möglicher Ausprägungen -1
Dim Future3Name As String
Future3Name = "HDMI" '...
Dim Future3(1) As String '...
For i = 1 To 10000 '1:Erste Zeile in der ein Produkt steht
Dim Produkt As String
Produkt = Tabelle1.Cells(i, 2).Value '2: Spalte in der Produktname steht
If Not Produkt = LetztesProdukt And i > 1 Then '1:Gleiches wie 3 Zeilen drüber
'Diesen Block pro Future einmal einfügen und abändern
'1 nach "," in zweiter Zeile:Spalte mit Nummer
Call Hinschreiben( _
Tabelle1.Cells(i - 1, 1).Value, _
LetztesProdukt, _
Future1Name, _
Future1())
Call Leeren(Future1())
Call Hinschreiben( _
Tabelle1.Cells(i - 1, 1).Value, _
LetztesProdukt, _
Future2Name, _
Future2())
Call Leeren(Future2())
Call Hinschreiben( _
Tabelle1.Cells(i - 1, 1).Value, _
LetztesProdukt, _
Future3Name, _
Future3())
Call Leeren(Future3())
End If
LetztesProdukt = Produkt
''Diese Zeile pro Future einmal einfügen und abändern
Call Einfügen(Future1, Tabelle1.Cells(i, 3).Value) '3:Spalte mit erstem Future
Call Einfügen(Future2, Tabelle1.Cells(i, 4).Value) '4:Spalte mit zweitem Future
Call Einfügen(Future3, Tabelle1.Cells(i, 5).Value) '...
If Produkt = "" Then Exit For
Next
End Sub
'Tabelle1 in Sub Hinschreiben: ZielTabelle
Sub Hinschreiben( _
ByVal Produktnummer As String, _
ByVal Produkt As String, _
ByVal FutureName As String, _
ByRef Future() As String)
Static Zeile As Integer
Dim ErsteZeile As Integer
ErsteZeile = 20 'Erste Zeile in der ein Eintrag hinsoll
For i = 0 To UBound(Future)
If Not Future(i) = "" Then
Tabelle1.Cells(Zeile + ErsteZeile, 1).Value = Produktnummer '1:Spalte in die Nummer soll
Tabelle1.Cells(Zeile + ErsteZeile, 2).Value = Produkt '2:Spalte in die Produktname soll
Tabelle1.Cells(Zeile + ErsteZeile, 3).Value = FutureName '3:...Future
Tabelle1.Cells(Zeile + ErsteZeile, 4).Value = Future(i) '4:...Ausprägung
Zeile = Zeile + 1
End If
Next
End Sub
Sub Leeren(ByRef Feld() As String)
For i = 0 To UBound(Feld)
Feld(i) = ""
Next
End Sub
Sub Einfügen(ByRef Future() As String, ByVal Ausprägung As String)
For i = 0 To UBound(Future)
If Future(i) = Ausprägung Then Exit Sub
Next
For i = 0 To UBound(Future)
If Future(i) = "" Then
Future(i) = Ausprägung
Exit For
End If
Next
End Sub
Mathe172