Clever-Excel-Forum

Normale Version: Matrixauswertung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich stehe vor folgendem Problem: 

In verschiedenen Produkten werden verschiedene Komponenten verbaut. Teilweise werden in unterschiedlichen Produkten auch gleiche Komponenten verbaut. 
Hier möchte ich nun auswerten, welches Produkt mit welchem anderen Produkt wie viele gleiche Komponenten hat und dies in einer Matrix darstellen (wie im angefügten Bild mal manuell dargestellt und ausgezählt, bei größeren Datenmengen natürlich nicht mehr realisierbar; d.h. aber z.B. im Produkt 152687 und 548321 wird hier im Beispiel genau eine gleiche Komponente verbaut - hier A).
Als Datenbasis liegt eine Tabelle wie unten im Bild vor, d.h. über alle möglichen Produkt-Komponenten-Kombinationen.  

Ich habe mich bereits per Pivot-Tabelle an einer solchen Auswertung versucht, da komme ich aber leider nicht weiter.

Ich wäre um jegliche Lösungsidee für das Problem dankbar.

LG
Hi

Stelle bitte eine Bsp.Datei zur Verfügung.

Gruß Elex
Hallo Elex,

danke für deine Antwort.

Anbei die Datei des Beispiels.

LG
Hi

Formel mit strg+shift+enter abschließen.
=WENN($A4=B$3;"";SUMMENPRODUKT(1*(WENN(($B$13:$B$28=$A4);$A$13:$A$28;"n")=MTRANS(WENN($B$13:$B$28=B$3;$A$13:$A$28)))))

Gruß Elex
Hallo Elex, 

ja super. Von der Funktion/Vorgehensweise habe ich die Idee verstanden, Danke dafür! 

Allerdings habe ich, sobald ich das auf eine größere Datenmenge (die Liste mit den Komponenten-Produkt Zuordnungen ist ca. 35.000 Zeilen lang, Duplikate bereits entfernt) anwenden möchte, folgendes Problem:
"Für Excel waren beim Berechnen einer oder mehrerer Formeln nicht genügend Ressourcen vorhanden. Daher können diese Formeln nicht ausgewertet werden." 

Gibt es eine Lösungsmöglichkeit dafür oder wird der Rechner das für die Praxisanwendung in dem Umfang nicht abbilden können? Es ist bereits nur Excel geöffnet, d.h. keine weiteren Programme im Hintergrund...   

LG
Mit eine Makro wäre das natürlich machbar.

Nur, mein Excel ist nur 16000 Spalten breit. Diese Matrix darzustellen wird sich wohl nicht ausgehen.

Raoul
Hi

Für das Problem sehe ich zumindest für meine Excel Version keine vernünftige Formellösung. Ich kann dir da nur eine VBA Lösung anbieten. Wäre das für dich eine Option?
 
In neueren Excels gibt es wohl so was wie Filter() und Eindeutig(). Damit geht evtl. was. Aber da kann ich nicht helfen.


Ich gehe mal davon aus das die Anzahl der Produkte welche die Komp. enthalten nicht so hoch ist.
Zitat:Nur, mein Excel ist nur 16000 Spalten breit. Diese Matrix darzustellen wird sich wohl nicht ausgehen.

 
Gruß Elex
Hallo zusammen, 

genau, die Anzahl der Produkte ist überschaubar, liegt ca. bei 40. 
Die Matrix als solche ist also 40x40 zuzüglich der Beschriftungszeile/-Spalte.
Lang ist die Liste mit den Zuordnungen, also quasi die Datenquelle bzw. Ausgangsdaten...

Grundsätzlich bin ich auch von einer VBA Lösung nicht abgeneigt. Allerdings habe ich hier bislang noch nicht so viel Erfahrung (habe wenn bislang mit „Makro aufzeichnen“ gearbeitet, um bestimmte wiederkehrende Vorgänge dann zu automatisieren und wiederholt auf Knopfdruck durchführen zu können) - lerne aber gerne dazu und erweitere da mein Wissen. Ich hoffe also, dass ich das dann auch entsprechend verstehe und anwenden/übertragen kann. 

Danke für das Feedback bislang!Smile

LG
Hi
 
Hier mal mit Bezug auf deine Bsp.Datei.
Zu erst den Code in ein allgemeines Modul.
Code:
Public Function Kombi(z As Long, s As Long)
Dim rngDaten As Range, Daten, ArrA, ArrB, Wert1, Wert2
Dim j As Long, jj As Long, A As Long

Set rngDaten = Range("A13:B28")

Wert1 = Cells(z, 1).Value
Wert2 = Cells(3, s).Value
Daten = rngDaten

If Wert1 = Wert2 Then
   Kombi = ""
Else
   z = WorksheetFunction.CountIf(rngDaten.Columns(2), Wert1)
   s = WorksheetFunction.CountIf(rngDaten.Columns(2), Wert2)
   If z = 0 Or s = 0 Then
      Kombi = 0
   Else
      ReDim ArrA(1 To z)
      ReDim ArrB(1 To s)
      For A = 1 To rngDaten.Rows.Count
          If Wert1 = Daten(A, 2) Then
             j = j + 1
             ArrA(j) = Daten(A, 1)
          End If
          If Wert2 = Daten(A, 2) Then
             jj = jj + 1
             ArrB(jj) = Daten(A, 1)
          End If
      Next A
     
      A = 0
      For j = 1 To z
         For jj = 1 To s
            If ArrA(j) = ArrB(jj) Then A = A + 1
         Next jj
      Next j
      Kombi = A
   End If
End If

End Function

In B4 die Formel und dann nach rechts und unten ziehen.
=Kombi(ZEILE();SPALTE())
 
Gruß Elex
Hi Elex, 

vielen Dank.
Konnte es in der Beispiel-Datei anwenden und umsetzen und dann auch in die eigentliche Datei übertragen und anpassen.
Funktioniert einwandfrei, so wie es soll. So einen Lösungsweg habe ich gesucht, wäre ich von allein nie drauf gekommen. 
Richtig gut, danke dir!! Smile 

LG
Seiten: 1 2