Summieren von Werten aus einer Spalte basierend auf Übereinstimmung in einer anderen Spalte und erstem eindeutigen Auftreten von Werten in einer dritten Spalte

0

Ich versuche, eine formelbasierte Lösung zu finden, um die Werte in einer Spalte anhand der Übereinstimmung mit einem Wert in einer anderen Spalte zu summieren, aber nur für bestimmte Vorkommen von Werten in einer dritten Spalte.

Hier ist eine vereinfachte Beispieltabelle:

Hier ist eine sehr einfache Beispieltabelle

Ich muss den Buchstaben in Spalte F (A, B, C) mit der Spalte B "Buchstaben" abgleichen und dann den Wert in Spalte D "Werte" einmal pro eindeutiger Zahl in Spalte C "Zahlen" summieren und diese Summe in anzeigen Spalte G "Summe der Werte".

Die richtige Summe wird in den Zellen der Spalte G angezeigt, aber ich habe keine Formel, um dies zu erreichen. Jede Hilfe wäre dankbar!

Robert Brett
quelle
Im Allgemeinen erhalten Sie keine guten Antworten, wenn Sie nach einer vollständigen Lösung fragen. Sie benötigen einen Plan und einen Code, den die Benutzer anzeigen können. Vielleicht haben Sie bei Mr. Excel mehr Glück: mrexcel.com
HackSlash

Antworten:

0

Für diese Art von Problem ist es hilfreich, in Arrays zu denken.

Wenn Sie ein Array (Liste) der Zahlen in Values ​​(Spalte D) erhalten, bei dem Letters (Spalte B) gleich "A" ist und Numbers Duplikate entfernt hat, können Sie das Array einfach summieren, um die Antwort zu erhalten.

Dieser Ausdruck:

(B$2:B$12=F2)

Gibt ein Array von True/FalseWerten mit der TrueSpalte B = "A" an. Dieses:

(C$2:C$12<>C$3:C$13)

Gibt ein Array von True/FalseWerten an, bei denen Trueeine Zelle in Spalte C nicht der folgenden Zelle entspricht. Da sich Ihre Duplikate in sequentiellen Zellen befinden (Kommentar unten, falls dies nicht immer der Fall sein sollte), enthält dieses Array Falsedie zusätzlichen Vorkommen eines Werts und filtert im Wesentlichen die Duplikate heraus. Multiplizieren Sie diese beiden Arrays:

(B$2:B$12=F2)*(C$2:C$12<>C$3:C$13)

wandelt True/FalseWerte in Einsen und Nullen um und gibt ein Array mit 1 an den Stellen, die wir in der Summe haben wollen. Verwenden dieses Arrays als logical_testin IF()und Spalte D als value_if_true:

IF((B$2:B$12=F2)*(C$2:C$12<>C$3:C$13)>0,D$2:D$12)

Gibt ein Array der Werte in Spalte D zurück, wo immer eine 1 war, durchsetzt mit Falseeiner Null. Jetzt können wir nur das Array summieren. Diese Formel, die von G2 ausgefüllt wird, ergibt die unten gezeigten Ergebnisse.

=SUM(IF((B$2:B$12=F2)*(C$2:C$12<>C$3:C$13)>0,D$2:D$12))

Beachten Sie, dass dies eine Matrixformel ist und mit eingegeben werden muss CTRLShiftEnter.

Bildbeschreibung hier eingeben

Bandersnatch
quelle
1
Dies ist eine großartige (und funktionale) Lösung, und ich schätze die Tiefe der Erklärung der Mechanismen zum Multiplizieren von Arrays, um mehrere Kriterien zu testen!
Robert Brett
Toll! Froh, dass ich Helfen kann.
Bandersnatch
0

Wenn Sie Ihren Daten Spalten hinzufügen können, funktioniert das folgende Beispiel für das einfache Beispiel:

  1. Fügen Sie eine Formel hinzu, um die Buchstaben und Zahlen zu verketten. Ich habe Spalte A für diese Formel verwendet, dh Zelle A2: = B2 & C2
  2. Ziehen Sie diese Formel nach unten, um sie auf die Zellen A2: A12 anzuwenden
  3. Fügen Sie eine Formel hinzu, um zu testen, ob jede Verkettung von Buchstaben und Zahlen die erste eindeutige Verkettung ist. Ich habe Spalte E für diese Formel verwendet, dh Zelle E2: = COUNTIF (A $ 2: A2, A2)
  4. Ziehen Sie diese Formel nach unten, um sie auf die Zellen E2: E12 anzuwenden
  5. Verwenden Sie die folgende Formel in H2, um die Werte zu summieren, bei denen der Buchstabe übereinstimmt, jedoch nur für die erste Verknüpfung von Buchstabe und Zahl, dh Zelle G2: = SUMIFS ($ D $ 2: $ D $ 12, $ B $ 2: $ B $ 12, F2 , $ E $ 2: $ E $ 12,1)
  6. Ziehen Sie diese Formel nach unten, um sie auf die Zellen G2: G4 anzuwenden
Papierschnitte
quelle
Dies funktioniert gut und wird es im Hinterkopf behalten! Vielen Dank.
Robert Brett