Registriert seit: 09.01.2022
Version(en): Microsoft 365
Vom sportlichen Ehrgeiz her, finde ich es ja völlig in Ordnung, mit recht viel Aufwand eine Formellösung zu erstellen. Zumal ich auch gerne mit LET arbeite. Die Erstellung der dynamischen Pivottabelle mit der Datenzusammenführung in Power Query hat halt keine 5 Minuten gedauert.
Registriert seit: 29.09.2015
Version(en): 2030,5
in VBA:
Code:
Sub M_snb()
Cells.UnMerge
sn = Cells(2, 1).CurrentRegion.Resize(, 5)
sp = Cells(2, 5).CurrentRegion
With CreateObject("scripting.dictionary")
For j = 2 To UBound(sn)
st = Application.Index(sn, j)
st(5) = st(3)
.Item(sn(j, 1) & sn(j, 2)) = st
Next
For j = 2 To UBound(sp)
If .exists(sp(j, 1) & sp(j, 2)) Then
st = .Item(sp(j, 1) & sp(j, 2))
st(4) = sp(j, 3)
st(5) = st(3) - st(4)
.Item(sp(j, 1) & sp(j, 2)) = st
End If
Next
Cells(20, 1).Resize(.Count, 5) = Application.Index(.items, 0, 0)
End With
End Sub
Registriert seit: 02.12.2017
Version(en): Microsoft365
01.03.2025, 10:18
(Dieser Beitrag wurde zuletzt bearbeitet: 01.03.2025, 10:21 von EA1950.)
Hallo @ws-53,
falls du mit dem Posting auch mich gemeint haben solltest, so habe ich mir deine PQ-Lösung angeschaut.
Im Prinzip ist meine Formellösung exakt das gleiche wie deine PQ-Lösung: eine Stapelung zweier Matrizen mit einer zusätzlichen Null-Spalte und Differenzspalte und anschließender Gruppierung mit Summierung.
Mit lieben Grüßen
Anton.
Windows 10 64bit
Office365 32bit
Registriert seit: 09.01.2022
Version(en): Microsoft 365
Hallo Anton,
abgesehen von meiner Aussage in #11, habe ich ja nicht die Richtigkeit der Ergebnisse angezweifelt. Aber auch wenn eine LET-Formel schrittweise erstellt und getestet werden kann, dauert es halt meist eine Weile, bis diese dann erstellt ist. Ursprünglich hatte ich ich auch vor mit PQ exakt die gewünschte Tabelle zu erstellen. Habe mich dann aber für Pivot entschieden, da sich so viel mehr Möglichkeiten für die Auswertung ergeben.
Immerhin habe ich mit:
Zitat:Doppelpunkt: A3:.C99 bzw. E3:.G99
Dieser zusätzliche Punkt bewirkt, dass jeder der Bereiche von seinem Ende her auf Dateninhalt getestet wird und nur der Bereich mit Daten verwendet wird (im vorliegendem Fall also A3:C16 bzw. E3:G15).
etwas erfahren, was ich bisher noch nicht kannte. Wobei so etwas bei formatierten Tabellen nicht nötig ist. Wobei ich halt noch darauf warte, dass sich MS endlich mal etwas einfallen lässt, dass man einen BF-Bereich so definieren kann, dass dieser zwar am Anfang und Ende ausdehen, aber nie teilen kann.
Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:1 Nutzer sagt Danke an ws-53 für diesen Beitrag 28
• Jockel
Registriert seit: 27.02.2025
Version(en): Microsoft 365
02.03.2025, 08:36
(Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2025, 08:40 von KathaDD.)
Wenn ich diese Formel eingebe, erhalte ich Fehler, dass zu wenig Argumente genutzt werden. Ich habe mich für den PHP-Code des anderen Nutzers entschieden. Dennoch vielen Dank, dass du dir die Arbeit gemacht hast!
Hallo Anton, vielen herzlichen Dank! Jetzt konnte ich die Auswertung zusammenstellen. Bis dato habe ich noch nie mit PHP-Codes gearbeitet, damit werde ich mich wohl noch etwas befassen.
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
02.03.2025, 10:21
(Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2025, 10:21 von RPP63.)
Moin!
Kurze Anmerkung:
Es handelt sich nicht um PHP-Codes, sondern um "normale" Formeln!
PHP-Code-Tags werden hier manchmal genutzt, um die Formeln "lesbarer" zu machen.
Hier mal mit der Formelauswertung aus Excel Labs:
=LET(
tbSoll; $A$3:$C$16;
tbIst; $E$3:$G$15;
tbErg; VSTAPELN(
ERWEITERN(tbSoll; ; 4; 0);
HSTAPELN(
ERWEITERN(SPALTENWAHL(tbIst; 1; 2); ; 3; 0);
INDEX(tbIst; ; 3)
)
);
tbErgD; HSTAPELN(
tbErg;
NACHZEILE(
tbErg;
LAMBDA(zl; INDEX(zl; 3) - INDEX(zl; 4))
)
);
gr; GRUPPIERENNACH(
SPALTENWAHL(tbErgD; 1; 2);
SPALTENWAHL(tbErgD; 3; 4; 5);
SUMME;
0;
2;
;
);
VSTAPELN(
{"Name". "Einkauf". "Soll". "Ist". "Differenz"};
gr
)
)Zitat:Falls du bereits über die Funktion ABSCHNBEREICH(...) verfügst, kannst du die Größe dieser Tabellenbereiche auch dynamisch gestalten durch die Eingabe eines zusätzlichen Punktes nach dem Doppelpunkt: A3:.C99 bzw. E3:.G99
Entweder ABSCHNBEREICH()
oder der TrimRef-Punkt.
Es gab hier schon mal eine Diskussion zu dieser neuen Funktionalität.
Bereiche "glätten" Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28
• Ralf A