Zusammenfügen von zwei Tabellen für SOLL-IST Vergleich
#11
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.
Antworten Top
#12
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#13
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
Antworten Top
#14
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:
  • Jockel
Antworten Top
#15
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.
Antworten Top
#16
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:
  • Ralf A
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste