Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

dynamische Matrix Tabelle erstellen

dynamische Matrix Tabelle erstellen
11.07.2022 15:46:12
Peter
Hallo Community,
ich schreibe hier zum ersten Mal und hoffe ihr könnt mir mit meinem Anliegen helfen.
Ausgang meiner Anfrage ist eine systemgenerierte Excel welche die Zugänge je Artikelnummer und Kalenderwoche auflistet.
Dabei stehen in Spalte A die jeweiligen Artikelnummern; in den folgenden Spalten die Kalenderwochen und Zugänge.
Leider ist der Excelabzug in keinem schön formatierten Format:
Spalte A | Spalte B | Spalte C | Spalte D | Spalte E |... |
Art-Nr | | | | | ... |
ABC-1 | 24/2022 | 200 | 30/2022 | 400 | ... |
DEF-2 | 20/2022 | 100 | 22/2022 | 150 | ... |
...
- Nur die Spalte A hat einen Spaltennamen, die weiteren Spalten sind nicht benannt.
- In Spalte B steht die Kalenderwoche wann die Ware geliefert wird.
- In Spalte C steht wie viel Stk geliefert wird (in der KW aus Spalte B)
- In D steht wieder eine Kalenderwoche
- In E wieder die die dazugehörigen Stückzahlen
- ... Es kann beliebig viele Spalten und Zeilen geben
Gerne würde ich diese Tabelle in ein leserliches Format bringen und eine (dynamische) Matrix-Tabelle (?) darauf aufsetzen.
Ich stelle mir die Zieltabelle ungefähr so vor:
Spalte A | Spalte B | Spalte C | Spalte D | Spalte E | ...
Art-Nr | 20/2022 | 22/2022 | 24/2022 | 30/2022 | ...
ABC-1 | | | 200 | 400 | ...
DEF-2 | 100 | 150 | | | ...
...
Wie würdet ihr Vorgehen um die Zieltabelle zu erhalten?
Gibt es evtl. eine Möglichkeit dies zu dynamisieren/automatisieren (evtl. sogar in PowerQuery)?
Zum besseren Verständnis habe ich ein Beispiel angefügt; dieses findet ihr hier:
https://www.herber.de/bbs/user/154089.xlsx
Leider konnte ich per Suche nichts passendes finden; kann aber auch gut daran liegen, dass ich nicht wirklich sicher bin nach welchem Suchbegriff ich genau suchen muss.
Ich hoffe sehr, dass ihr mir mit meinem Anliegen weiterhelfen könnt und bedanke mich vorab :)

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nachgefragt ...
11.07.2022 16:04:19
neopa
Hallo Peter,
... die Anwendung soll in welcher Excelversion vorgenommen werden?
Für eine Formelversion wäre es gut zu wissen, ob die KW-Angaben Jahres übergreifend vorliegen können?
Gruß Werner
.. , - ...

AW: nachgefragt ...
11.07.2022 16:26:01
Peter
Hallo Werner,
stimmt, das hatte ich ganz vergessen zu erwähnen.
Derzeit noch die 2016 Version in Kürze wird aber auf 365 umgestellt - daher für mich auch i.O. wenn es nur in der 365er Version klappen würde.
Die Infos können auch über einen Zeitraum von mehreren Jahren vorliegen.
Danke & Grüße
AW: dynamische Matrix Tabelle erstellen
11.07.2022 16:18:06
Daniel
Hi
Mit dem Datum wirds a bisserl schwierig.
Da solltest du das Startdatum selber vorgeben und die Kalenderwoche dann per Formel erzeugen, vor allem wenn die Liste lückenlos sein soll.
Dh die Überschriftenzeile mit den KWs erzeugst du mit dieser Formel in B12ff

=Kalenderwoche("1.5.2022"+7*(Spalte()-2);2)&"/"&Jahr("1.5.2022"+7*(Spalte()-2))
Die Werte übernimmst du dann für jeder Zeile mit:
Artikelnummer A13:

=A4
Und die Werte ab B13 dann

=Wennfehler(Index(4:4;1; Vergleich(B$12;4:4;0)+1);"")
Die Formeln sind jetzt passend für deine Beispieldatei. Am Jahresanfang, wenn die KWs noch einstellig sind, ist ggf nach eine Anpassung erforderlich, je nachdem aob deine Ausgangsliste dann eine führende 0 hat oder nicht.
Das Startdatum.für die Überschrift musst du ggf nach deinen Wünschen noch anpassen.
Gruß Daniel
Anzeige
AW: dynamische Matrix Tabelle erstellen
11.07.2022 18:08:40
snb
Lösche die Ziechen in Saplte J.
Dann:

Sub M_snb()
sn = Cells(1).CurrentRegion
ReDim sp((UBound(sn) - 3) * UBound(sn, 2) \ 2 + 1, 3)
For j = 4 To 6
For jj = 2 To UBound(sn, 2) Step 2
sp(n, 0) = sn(j, 1)
sp(n, 1) = Right(sn(j, jj), 4)
sp(n, 2) = Val(sn(j, jj))
sp(n, 3) = sn(j, jj + 1)
n = n + 1
Next
Next
Cells(20, 1).Resize(UBound(sp) + 1, 4) = sp
End Sub

AW: dynamische Matrix Tabelle erstellen
11.07.2022 18:10:48
Daniel
Hi
als VBA-Makro würde ich sowas verwenden, wer sich in Dictionarys einarbeiten will, kann sich das ja mal antun.
das Makro ist passend für die Beispieldatei, allerdings muss die Basistabelle nach A1 verschoben werden (graue Zeilen/Spalten in Zeile1/SpalteA) und die letzte Spalte und Zeile mit den ... muss gelöscht werden.
die Darstellung der Kalenderwoche wird getauscht, dh erst Jahr, dann KW, damit lässt sich das ganze auch einfacher Jahrsübergreifen sortieren.
Das Makro zeigt nur die tatsächlich genutzen KWs, im gegensatz zur zuvor von mir gezeigten Formellösung, welche einen vollständigen Kalender hat (den man dann aber selbstständig auf prüfuen muss, ob alle Werte auch übernommen werden.

Sub umwandeln()
Dim arr
Dim ze As Long, sp As Long
Dim dicErgZeile
Dim dicErgSpalte
Dim dicErgWert
Dim dicKWs
Dim ID
Set dicErgZeile = CreateObject("scripting.dictionary")
Set dicErgSpalte = CreateObject("scripting.dictionary")
Set dicErgWert = CreateObject("scripting.dictionary")
Set dicKWs = CreateObject("scripting.dictionary")
arr = Range("A1").CurrentRegion
For ze = 2 To UBound(arr, 1)
For sp = 2 To UBound(arr, 2) Step 2
arr(ze, sp) = Split(arr(ze, sp), "/")(1) & "/" & Split(arr(ze, sp), "/")(0)
ID = arr(ze, 1) & "|" & arr(ze, sp)
If Not dicKWs.exists(arr(ze, sp)) Then
dicKWs(arr(ze, sp)) = dicKWs.Count + 1
End If
dicErgZeile(ID) = ze
dicErgSpalte(ID) = dicKWs(arr(ze, sp))
dicErgWert(ID) = arr(ze, sp + 1)
Next
Next
ReDim Preserve arr(1 To UBound(arr, 1), 1 To 1)
ReDim Preserve arr(1 To UBound(arr, 1), 1 To dicKWs.Count + 1)
For Each ID In dicErgWert.keys
arr(dicErgZeile(ID), dicErgSpalte(ID) + 1) = dicErgWert(ID)
Next
For Each ID In dicKWs.keys
arr(1, dicKWs(ID) + 1) = ID
Next
With Range("A1").Offset(UBound(arr, 1) + 2).Resize(UBound(arr, 1), UBound(arr, 2))
.Value = arr
.Offset(0, 1).Sort Key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo, Orientation:=2
.Sort Key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlYes, Orientation:=1
End With
End Sub
Gruß Daniel
Anzeige
AW: dynamische Matrix Tabelle erstellen
12.07.2022 10:25:22
Peter
Super! Vielen Dank für die beiden Lösungsansätze! :)
Auf die Index Variante bin ich echt nicht gekommen - erscheint mir aber nun vollkommen logisch & nachvollziehbar.
Und für die VBA Variante - ich sehe schon, es macht echt Sinn mich in diese Materie einzuarbeiten.
Danke nochmals für die prompte & kompetente Hilfe! :)

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige