Az Excelben általánosságban elmondható, hogy a Conditional Formatting alatt elérhető ikonkészletek vagy éppen az Insert Ribbonfül Symbol parancsával beszúrható szimbólumok tárháza elképesztően hatalmas, mindennemű alapelváráshoz és általános feladathoz találhatunk itt nekünk megfelelő ikonokat. Na de mi van akkor, ha mi mégsem ezeket szeretnénk használni, hanem például az általunk interneten talált képeket, emotikonokat vagy egyéb ikonokat akarjuk egy táblázatunkban bizonyos státuszokhoz rendelni? És most itt akár az arcképünkre vagy bármilyen más képre is gondolhatunk, a következő kis módszerrel akármilyen képekkel végrehajtható módosításról van szó.
Adott tehát egy táblázatunk, amelynek az egyik, kisegítő sheetjére beszúrjuk azon képeket, amelyeket fel szeretnénk használni, az én esetemben ezek most képformátumú emotikonok:
A számok a képek mögött a státuszt jelentik, de ez akár lehet szöveg is, most azonban az egyszerűség kedvéért egy számos skálát alkalmazunk.
Van egy egyszerű kis táblázatunk is, amelyben megyénként kitűzött bevételi célokat, eredményeket és ez alapján kiértékelt státuszt láthatunk:
A feladat végrehajtása érdekében már kapásból kezdhetünk is egy segédoszlop beszúrásával. Erre azért van szükség, mert itt fogjuk meghatározni az adott cél-eredmény kombinációra vonatkozó státuszértéket (a fentebb említett skálának megfelelően). Ezt a következőképpen tesszük meg:
=MATCH((C2/B2)*100,{0,95,99,105})
A rendszeres Olvasóknak és gyakorlott felhasználóknak valószínűleg ezt már nem kell magyarázni, de röviden azt tesszük, hogy az eredményünket százalékosítjuk (ez lesz a MATCH függvény első paramétere, mint lookup_value), majd besoroljuk a második paraméterként megadott tartomány értékei alapján - így pedig a skálának megfelelő értékeket fogjuk visszakapni mindenféle százalék esetén. Értelemszerűen mondjuk 94%-os teljesítési aránnyal egyest kapunk, 100%-os teljesítéssel pedig hármast.
Ezután a Státusz oszlopba a segédsheetről másoljuk be ide az értéknek megfelelő kis képformátumú ikonunkat (de bármelyiket átmásolhatjuk, nincs jelentősége):
Majd rákattintunk és a Formulas Ribbonfül Defined Names szekciójában nevet adunk neki (Define Name), legyen mondjuk ez Status:
És itt jön az egész történet kulcsa, a korábban már itt is többször bemutatott INDEX-MATCH párosítás, amelyet hozzárendelünk ehhez az elnevezett elemhez:
=INDEX(HelpSheet!$A$1:$A$4,MATCH(Sheet1!$D$2,HelpSheet!$B$1:$B$4,0))
Ahogy azt már megtanultuk korábban, az INDEX egy megadott tömbben megadja a megadott sor és oszlop találkozásánál lévő értéket, MATCH pedig 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 az INDEX függvényünk oszlop-paramétere a HelpSheet ikonokat tartalmazó A oszlopa lesz, az ezen oszlopból szükséges sor számát pedig a beágyazott MATCH eredménye adja - amely ugyebár az eredeti sheet Segédoszlopába kerülő státuszérték HelpSheet B oszlopában lévő sor száma lesz.
Azaz ha a státuszértékünk 3, akkor a HelpSheet A oszlopában a harmadik sorban szereplő ikont kapjuk vissza.
Ennek a trükknek azonban van egy óriási problémája, ami miatt túlságosan nem is javasolt belemélyedni - ez pedig az, hogy az adott sorba az alapikont mindig nekünk kell beszúrni, plusz minden egyes beszúrt ikonhoz nekünk kell definiálni a nevet és a hivatkozott formulát. Erre mondjuk VBA-ban lehetne kódsort összehozni, de annyira valószínűleg már nincs szükségünk customizált ikonok használatára.