A mai poszt témája egy olvasói kérdés, amely egy igencsak mindennapos Excel-problémát jár körbe, egy olyat, amelynek eléréséhez valószínűleg mindenkinek megvan a saját kis megoldási módszere, most egy ilyen megoldást fogok bemutatni - nem biztos, hogy a legegyszerűbb, de a lényegi célkitűzést teljesíti, azaz egy lépésben megadja a szükséges választ.
Szóval adott a következő kis táblázat, alatta olvasható is a kérdés, amelynek a megoldását keressük: azaz melyik város eladásai produkálták a legnagyobb változást 2014 és 2015 között?
Most tekintsünk el azoktól az egyszerű, többlépcsős megoldásoktól, mint hogy végzünk egy kivonást, maximalizáljuk a különbséget és bekeressük a hozzá tartozó városnevet, hiszen értelemszerűen a leggyorsabb utat keressük (hangsúlyozom, a most taglalt megoldási javaslatnál is lehet egyszerűbb út).
Az biztos, hogy a függvényünk egy tömbfüggvény kell, hogy legyen, tekintve, hogy egy tömbből szeretnénk egyetlen választ megkeresni, másrészt az is valószínű, hogy szükségünk lesz MAX, ABS, INDEX és MATCH függvényekre is, hiszen
MAX megadja a paramétereiként megadott számok közül a legnagyobbat
ABS megadja a paramétereként megadott szám abszolút értékét
INDEX egy megadott tömbben megadja a megadott sor és oszlop találkozásánál lévő értéket
MATCH az első paramétereként megadott érték helyzetét fogja a második paramétereként megadott tartományból megadni nekünk (a harmadik paraméter a pontos egyezés, kisebb-nagyobb feltétel megadására ad lehetőséget), így értelemszerűen a
=MATCH(D20,F19:F23,0)
meg fogja mondani, hogy a D20-as cella értéke az F19:F23 tartományban hol található pontos egyezés esetén.
Most mindenkinek azt javasolnám, hogy a fentebb taglalt függvények segítségével először próbálja saját maga kitalálni a megoldást, persze közben én itt folytatom azért a megoldáshoz vezető út bemutatását.
Először próbáljuk meghatározni szimplán a különbségeket abszolút értékben, végig figyelve arra, hogy itt CTRL+SHIFT+ENTER segítségével alkalmazható tömbfüggvényről van szó:
{=ABS(E4:E11-D4:D11)}
Következő lépésben kell megkeresnünk, hogy ebben az új tömbben, melyik a legnagyobb érték, itt kell majd a MAX függvényt használnunk:
{=MAX(ABS(E4:E11-D4:D11))}
Ezután ha visszagondolunk a fentebb leírt MATCH definícióra, akkor láthatjuk, hogy a következő lépésünk az lesz, hogy a MATCH segítségével meghatározzuk a maximum értékünk helyzetét az abszolútérték-különbségeink tömbjében:
{=MATCH(MAX(ABS(E4:E11-D4:D11)),ABS(D4:D11-E4:E11),0)}
Ez vissza fogja adni nekünk annak a sornak a számát, amelyben az abszolútérték-különbségeink tömbjében a legnagyobb érték található.
Innen pedig már csak egy INDEX formulára lesz szükségünk, hiszen ezzel az eredeti tömbünk városnév oszlopából kell visszakapnunk az előbbi tömbfüggvénnyel meghatározott sorszám szerinti értéket, azaz:
{=INDEX(C4:C11,MATCH(MAX(ABS(E4:E11-D4:D11)),ABS(D4:D11-E4:E11),0))}
És láthatjuk is, mi a megoldásunk. Bárkinek van más ötlete, javaslata, VBA-kódja a témában, szívesen látom!