Informationen und Beispiele zum Thema ListBox | |
---|---|
![]() |
ListBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: Aus Matrix Spalten auslesen, die best. Wert haben
von: Heike
Geschrieben am: 25.09.2019 17:10:30
Hallo,
ich suche nach einer Lösung für ein spezielles Problem mit einer Kreuztabelle / Matrix
Die Matrix sieht exemplarisch so aus
Mitarbeiter | Ananas | Käse | Paprika | Tomaten | Chilli | Mais ...
Hugo | X | |X | | | X
Isolde | | X |X | X | |
Rosie | | | | | X |
.
.
.
Ich möchte nun ausgeben (idealerweise in einer Zelle getrennt durch ";") den Namen in der ersten Spalte einer Zeile und alle Spaltennamen, bei denen in der jeweiligen Zeile ein "X" steht, also so:
Hugo; Ananas; Paprika; Mais
Isolde; Käse; Paprika; Tomaten
Rosie; Chilli
Ich habe schon mit Index, Vergleich und Aggregat herumgespielt aber immer noch nicht die richtige Lösung gefunden. Bisher hatte ich immer die erste Spalte und den Spaltennamen des ersten/letzten "X", aber nicht aller anderen.
Mein erster Ansatz mit PowerQuery hat mir auch nicht weitergeholfen, allerdings bin ich in PowerQuery noch ganz schlecht.
Mein nächster Ansatz wäre nun mittels VBA ein Array zu befüllen (hab aber mit der Programmierung noch nicht begonnen).
Vielleicht hat ja einer von euch die zündende Idee (egal welcher Weg) für mich.
Dankeschön!
Betrifft: AW: Aus Matrix Spalten auslesen, die best. Wert haben
von: Dieter Klemke
Geschrieben am: 25.09.2019 17:50:43
Hallo Heike,
ich mache das gern mit VBA.
Sub Zusammenfassen() Dim letzteSpalte As Long Dim letzteZeile As Long Dim spalte As Long Dim wb As Workbook Dim wsE As Worksheet Dim wsU As Worksheet Dim zeile As Long Dim zf As String Set wb = ThisWorkbook Set wsE = wb.Worksheets("Ergebnis") wsE.UsedRange.ClearContents Set wsU = wb.Worksheets("Ursprung") letzteSpalte = wsU.Cells(1, wsU.Columns.Count).End(xlToLeft).Column letzteZeile = wsU.Cells(wsU.Rows.Count, "A").End(xlUp).Row For zeile = 2 To letzteZeile zf = wsU.Cells(zeile, "A") For spalte = 2 To letzteSpalte If wsU.Cells(zeile, spalte) = "X" Then zf = zf & "; " & wsU.Cells(1, spalte) End If Next spalte wsE.Cells(zeile, "A") = zf Next zeile End Subhttps://www.herber.de/bbs/user/132209.xlsm
Betrifft: AW: Aus Matrix Spalten auslesen, die best. Wert haben
von: Dieter Klemke
Geschrieben am: 25.09.2019 17:53:02
Hallo Heike,
ich mache das gern mit VBA.
Sub Zusammenfassen() Dim letzteSpalte As Long Dim letzteZeile As Long Dim spalte As Long Dim wb As Workbook Dim wsE As Worksheet Dim wsU As Worksheet Dim zeile As Long Dim zf As String Set wb = ThisWorkbook Set wsE = wb.Worksheets("Ergebnis") wsE.UsedRange.ClearContents Set wsU = wb.Worksheets("Ursprung") letzteSpalte = wsU.Cells(1, wsU.Columns.Count).End(xlToLeft).Column letzteZeile = wsU.Cells(wsU.Rows.Count, "A").End(xlUp).Row For zeile = 2 To letzteZeile zf = wsU.Cells(zeile, "A") For spalte = 2 To letzteSpalte If wsU.Cells(zeile, spalte) = "X" Then zf = zf & "; " & wsU.Cells(1, spalte) End If Next spalte wsE.Cells(zeile, "A") = zf Next zeile End Subhttps://www.herber.de/bbs/user/132209.xlsm
Betrifft: AW: Aus Matrix Spalten auslesen, die best. Wert haben
von: Heike
Geschrieben am: 26.09.2019 21:29:39
Danke, klappt wunderbar!