Ich habe eine Excel-Funktion, die den Index AmountNamedRange
des zweitgrößten Betrags ermittelt, sofern der entsprechende Betrag DateNamedRange
innerhalb der letzten dreißig Tage liegt.
=ArrayFormula(Match(Large(If(DateNamedRange > Today() - 30, AmountNamedRange, 0), 2), AmountNamedRange, 0))
Dies funktioniert gut genug, solange es keine anderen Zeilen in der Tabelle mit dem gleichen Betrag gibt. Wenn es so etwas gibt, gibt diese Formel den Index desErsteZeile mit dem gleichen Betrag wie der zweithöchste Betrag der letzten dreißig Tage. Mir ist klar, dass meine Erklärung verwirrend ist, deshalb hier ein Beispiel (nehmen wir an, heute ist der 31.01.2017):
1 Date Amount
2 12/2/2016 27
3 12/6/2016 66
4 12/15/2016 99
5 1/8/2017 45
6 1/20/2017 27
7 1/22/2017 18
In diesem Fall ist der zweitgrößte Betrag der letzten 30 Tage 27 (Index 6), aber meine Formel gibt Index 2 zurück, da sie Match
die erste Zeile in der Tabelle findet, die dem Betrag entspricht. Wie kann ich meine Formel ändern, damit sie korrekt 6 zurückgibt?
Antwort1
Sie müssen als zweiten Parameter denselben Ausdruck verwenden , MATCH
den Sie für verwendet haben LARGE
, sodass nicht nur nach Beträgen gesucht wird, sondern nur nach den Beträgen der letzten 30 Tage:
=MATCH(LARGE(IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 2), IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 0)
(es ist immer noch eine Array-Formel)