Citat:
ib.kroki: Biću slobodan da te zamolim za pojašnjenje, kako si došao do rešenja.
@ib.kroki
Pokušat ću, mada vjerujem da je objašnjenje na linku koji je dao @JPECA u postu iznad, približno dovoljno (sve se svodi na isto).
Ja možda malo drugačije pristupam rješavanju zadatka pa evo otprilike ovako, (ono što ne znam proguglam).
O
apsolutnim i relativnim adresama neću pisati jer pretpostavljam da si upoznat s njima.
Jako je bitno da znaš korisiti
Evaluate formula u slučaju kada želiš nešto provjeriti, kao i tipku 'F9' za trenutni pogled na rezultat neke ugniježđene formule.
Rekli smo da je ovo
ARRAY formula. Na internetu ima dosta pojašnjenja vezano za ovaj pojam a ima linkova i na ovom forumu.
Uglavnom ova formula još tzv. "
CSE formula", završava se sa
Ctrl+Shift+Enter umjesto samo "
Enter" tipke
Kao prvo potrebno je poznavati
određene Excel funkcije,
argumente određene funkcije i
sintakse funkcije u Excelu, koji rezultat u stvari one vraćaju a samim time taj rezultat želimo koristiti na mjestu nekog argumenta u nekoj drugoj funkciji.
Konkretno
INDEX funkcija ima tri argumenta
Code:
=INDEX(array;row_num;column_num)
- array - Prvi argument je raspon podataka u kojem se nalazi uvjet i iz kojeg želimo vratiti rezultat iz određenog stupca
- row_num - argument koji zahtjeva broj reda (ovdje se često koristi
funkcija MATCH koja doslovno vraća broj reda kao rezultat, ali sve zavisi o situaciji a primjer
vidi ovdje)
- column_num - broj stupca iz kojega želimo vratiti rezultat (često se koristi
funkcija COLUMN jer se kopiranjem mijenja rezultat)
U našem slučaju formula bi izgledala ovako
Code:
=INDEX('BAZA OS'!$A$2:$I$500;row_num;column_num)
S obzirom da želimo vratiti rezultat iz prvog stupca umjesto broja stupca '1' možemo postaviti formulu =COLUMN('BAZA OS'!A1)
Pa bi naša formula izgledala ovako (na ovaj način osigurali smo ispravan redni broj stupca prilikom kopiranja formule u desno.
Code:
=INDEX('BAZA OS'!$A$2:$I$500;row_num;COLUMN('BAZA OS'!A1)
Dolazimo do argumenta u kojem želimo znati broj reda iz kojeg će formula vratiti rezultat
Da bi pokušao ispravno objasniti ovaj dio formule krenuti ću od unutrašnje strane (
ugniježđenih funkcija) a ja vjerujem da će me već netko ispraviti ako pogriješim negdje (da ne bi ostalo netočno)
Ovdje možemo koristiti
funkciju SMALL koja ima sintaksu
Code:
=SMALL(array;k)
Dakle, opet imamo raspon ćelija u prvom argumentu a drugi argument je najmanja konstanta za koju želimo vratiti rezultat, dakle 1,2,3,4...).
1 je prvi podatak, 2 je drugi podatak, 3 je treći podatak itd itd...
U ovu formulu ugnijezdimo umjesto drugog argumenta
funkciju ROW tj. za 'k' konstantu
Code:
=ROW('BAZA OS'!1:1)
Ova formula kao rezultat vraća broj 1, Kopiranjem prema dolje brojevi se mijenjaju pa će vratiti 2, pa 3 itd...
Da bi ovo provjerio, klikni unutar formule/funkcije
SMALL na '
k' argument i Excel će selektirati cijelu funkciju. Pritisni '
F9' i vidjet ćeš rezultat ovog dijela formule.
Da bi ti bilo jasnije pogledaj ovaj link koji ima primjer
Evaluate formula korištenjem tipke '
F9'
Dolazimo do prvog argumenta '
array' unutar
SMALL funkcije
Ovdje ćemo koristiti formulu koja se sastoji od uvjeta i vraćanja rezultata a to je
IF funkcija.
Code:
=IF('BAZA OS'!$D$2:$D$500=$B$1;ROW('BAZA OS'!$A$2:$A$500))
Ako znamo da funkcija IF ima sintaksu
Code:
=IF(logical_test;value_if_true;value_if_false)
znači trebamo logički test za uvjet i rezultat ako je istinit.
Ako unutar ugniježđene formule SMALL selektiraš prvi argument 'array', Excel će markirati cijelu IF formulu, pritisni tipku '
F9' i Excel će vratiti slijedeći rezultat
Code:
{FALSE;FALSE;FALSE;FALSE;FALSE;..............??????.......................SE;FALSE;FALSE;FALSE}
Sorry ali nisam mogao postavitit cijeli rezultat zbog ograničenja
Dakle za svaki ispunjeni uvjet tj. ako je u stupcu 'D' jednako podatku u 'B1' Excel vraća vrijednost iz određenog reda u stupcu 'A' a za sve ostalo rezultat je 'FALSE'
Ovaj dio formule IF vraća sve podatke iz stupca 'A'
Code:
ROW('BAZA OS'!$A$2:$A$500)
Ako selektiramo drugi argument unutar funkcija INDEX (row_num) Excel će označiti ovaj dio formule
Code:
SMALL(IF('BAZA OS'!$D$2:$D$500=$B$1;ROW('BAZA OS'!$A$2:$A$500));ROW('BAZA OS'!1:1))-1
Ako pritisneš tipku 'F9' dok je označen argument Excel će prikazati rezultat, u ovom slučaju na sheetu "BILIĆ" u ćeliji A4 rezultat ove formule je broj reda 21.
Dolazimo do koraka kada Excel izračuna dva argumenta 'row_num' i 'col_num'
Code:
=INDEX('BAZA OS'!$A$2:$I$500;{21};{1})
Dakle, u formuli iznad Excel će vratiti podatak iz reda 21 u prvom stupcu iz raspona A2:I500
Uh, nadam se da se nisam izgubio u pojašnjenju, i da ćeš me barem donekle shvatiti.
Osobno bi volio da još netko pojasni ovu formulu na njegov način koji bi se vjerujem razlikovao od mog.
btw: Izvinjavam se moderatorima jer sam ovdje postavio puno linkova na sporedne stranice koje sadrže primjere, jer pretpostavljam da će ovo čitati i totalni početnici.