Excel 2007: Array-Formelsuche mit INDEX und MATCH sucht nur in der ersten Zeile

0

Ich habe ein Arbeitsblatt "2011-11" mit einer Reihe von Zahlen in Spalte C. Die Zahlen befinden sich jeweils in einer bestimmten Währung, die durch einen Code in Spalte B identifiziert wird. Ich möchte eine einzelne Formel schreiben (in Zelle C14), die jede Zahl (von C4: C13) in Pfund Sterling (GBP) umrechnet, indem sie durch den jeweiligen Wechselkurs dividiert wird, und dann die Summe dieser Zahlen berechnen.

Die Wechselkurse werden in einem separaten Arbeitsblatt "GBP" gespeichert. Der Kurs ändert sich jeden Monat. Es gibt also eine Tabelle mit den Währungscodes vertikal und den Monat horizontal.

Ich habe eine Formel, die für eine einzelne Zelle C4 den Wechselkurs korrekt nachschlägt:

=INDEX(GBP!$A$4:$BE$42,MATCH($B4,GBP!$A$4:$A$42,0),MATCH(DATE(LEFT(A1,4),MID(A1,6,2),31),GBP!$A$3:$CE$3,1))

Also hatte ich gehofft, dass ich den Referenzbereich im ersten geändert habe MATCH deuten auf $B4:$B13, das Ganze in eine SUM Formel und Eingabe als Array-Formel, würde ich die richtige Antwort erhalten:

{=SUM(C4:C13/INDEX(GBP!$A$4:$BE$42,MATCH($B4:$B13,GBP!$A$4:$A$42,0),MATCH(DATE(LEFT(A1,4),MID(A1,6,2),31),GBP!$A$3:$CE$3,1)))}

Während es jedoch fast da ist, gilt für jede Zeile der Wechselkurs für Zeile 4. Hilfe sehr geschätzt! Kann es gemacht werden oder muss ich eine zusätzliche Spalte einfügen?

Ein paar zusätzliche Anmerkungen:

  1. Ich habe es versucht SUMPRODUCT anstatt SUM, aber das machte keinen Unterschied

  2. Der Wert von A1 ist "2011-11".

Michael Pavey
quelle
Ich habe mir Ihr Problem nicht genau angesehen, aber ich stelle fest, dass Ihre Formel voll mit $ s ist. Könnte das dein Problem sein?
Tony Dallimore
@ TonyDallimore: Es könnte, aber ich glaube nicht. Die $ s sind absichtlich da und beziehen sich meist auf das Lookup-Array (das statisch ist).
Michael Pavey

Antworten:

1

Meine erste Vermutung war teilweise richtig, aber falsch herum.

Problem 1

Der Nachschlagewert

DATE(LEFT(A1,4),MID(A1,6,2),31)

basiert auf dem Wert 2011-11 und ist daher äquivalent zu

DATE(2011,11,31)

Dies führt zu inkonsistenten Werten. Für Oktober gibt es 31Okt11. Für November gibt es 1Dec11. Um konsistente Werte zu erhalten, z. B. den letzten Tag eines Monats, verwenden Sie Folgendes:

DATE(LEFT(A1,4),MID(A1,6,2)+1,0)

Problem 2

Wenn Sie Ihre ursprüngliche Formel in die Spalte kopieren, werden Sie

=INDEX(GBP!$A$4:$BE$42,MATCH($B4,GBP!$A$4:$A$42,0),
 MATCH(DATE(LEFT(A1,4),MID(A1,6,2),31),GBP!$A$3:$CE$3,1))

Sie erhalten "#WERT!" für alle Kopien, da A1 zu B1, C1 usw. wird

Du brauchst

=INDEX(GBP!$A$4:$BE$42,MATCH($B4,GBP!$A$4:$A$42,0),
 MATCH(DATE(LEFT($A$1,4),MID($A$1,6,2),31),GBP!$A$3:$CE$3,1))
                 ^ ^          ^ ^        

Problem 3

In Ihrer Arrayformel

=SUM(C4:C13/INDEX(GBP!$A$4:$BE$42,MATCH($B4:$B13,GBP!$A$4:$A$42,0),
 MATCH(DATE(LEFT(A1,4),MID(A1,6,2),31),GBP!$A$3:$CE$3,1)))}

Sie haben fünf Bereiche, von denen Sie möchten, dass Excel zwei Arrays verwendet. Ich kann nichts finden Excel vorzuschlagen, wenn Sie schlau genug sind, dieses zu erraten, was Sie wollen.

Das Beste, was ich anbieten kann, ist die Einstellung von D4 auf:

=INDEX(GBP!$A$4:$BE$42,MATCH($B4,GBP!$A$4:$A$42,0),
 MATCH(DATE(LEFT($A$1,4),MID($A$1,6,2)+1,0),GBP!$A$3:$CE$3,1))

Kopieren Sie diese Formel in die Spalte und berechnen Sie die Summe mit:

{=SUM(C4:C13/D4:D13)}

Ich bin jedoch ein guter Excel VBA-Programmierer. Ich bin kein Excel-Anwender. Andere können Ihnen sagen, wie Sie das erreichen, wonach Sie suchen.

Tony Dallimore
quelle
+1 Nette Analyse. Ich stimme der letzten Aussage jedoch nicht zu.
Rachel Hettinger
@ Rachel Hettinger. Danke für das +1. Ich habe gesehen, dass Power-User mit ein paar Tastendrücken erstaunliche Dinge vollbrachten. Ich habe VBA nur gelernt, weil es die einzige Programmiersprache war, die mein damaliger Arbeitgeber erlaubte. Ich bin seit 35 Jahren kein professioneller Programmierer. Meine Hauptfertigkeit ist heute Ausdauer.
Tony Dallimore
@ TonyDallimore: Vielen Dank, das ist wirklich sehr hilfreich. Und entschuldige, ich denke, ich hätte vor dem Posten etwas von der irrelevanten Komplexität aus dem Problem entfernen müssen, damit Sie sich nicht mit meiner schlampigen Codierung beschäftigen müssen (insbesondere Problem 1 - dafür danke ich für eine großartige Lösung). Zu Problem 2 bin ich nie so weit gekommen, dass ich es abgeschrieben habe (habe meine ursprüngliche Frage geändert, um klarzustellen, dass ich die ganze Sache in eine einzelne Zelle stecken wollte) - aber Sie haben recht, wenn Sie auf diesen Fehler aufmerksam machen :) Re 3, schade aber vielleicht war ich einfach zu ambitioniert!
Michael Pavey
@Michael Pavey. Zu Problem 2. Ich verstehe die Matrixformel so, dass Excel nur im Hintergrund das tut, was Sie auf dem Arbeitsblatt tun könnten. Dieses Verständnis impliziert: Wenn Sie die einfache Formel nicht in die Spalte kopieren können, kann Excel die Matrixformel nicht in die Spalte kopieren.
Tony Dallimore