[ pcpopovic @ 02.03.2016. 07:27 ] @
Poštovanje! Imam dve Tabele: "Promet" i "Artikli" na dva radna lista. Naišao sam na problem kada sam u Tabelu "Promet" dodao - Vrstu prometa: Nabavljeno ili Prodato (kolona F), a u Tabeli "Artikli" postoje posebne kolone za cenu nabavke i za cenu prodaje. Treba mi funkcija za Tabelu "Promet" i njenu kolonu "G", da u ćeliju umetnem podatak iz Tabele "Artikli" (ili cenu nabavke ili cenu prodaje - Kolone 4 i 5), a u zavisnosti od ID Artikla (Kolona D) i Vrste prometa (Kolona F) u Tabeli "Promet". Na slici sam "napisao" funkciju koju sam koristio dok nije bilo dva uslova i dve moguće kolone sa podacima. Hvala!
Šaljem još jednom sliku da se bolje vidi.
[ pcpopovic @ 02.03.2016. 09:34 ] @
Pokušao sam ovako:
"=IF(ISTEXT(D4);IF(F4="Nabavka";VLOOKUP(D4;Tablica2;4;FALSE); 0);IF(ISTEXT(D4);IF(F4="Prodaja";VLOOKUP(D4;Tablica2;5;FALSE));0))".
Excel je prihvatio funkciju, ali mi se "vraća" 0 kao rezultat. Gde je "caka"?
Podaci za "Nabavka" se prikazuju, ali za "Prodaja" - ne. Nešto nedostaje u drugom delu funkcije ili na samom početku.
[ pera68 @ 02.03.2016. 10:22 ] @
Teško je odgovoriti bez prikačenog fajla. Iz prikazane slike jedino sumnjam da područje Tablica2 nije dobro definisano. Iz slike ne mogu da to i potvrdim. Prikači fajl na kome će se sve to videti i greška ispraviti.
Takođe, postavka formule nije dobra: naveo si da ukoliko vrednost polja F4 nije nabavka odmah upisuje vrednost 0. Taj deo je višak. Umesto te 0 treba da ide "zadnji VLOOKUP tvog primera. Formulu su suviše iskomplikovao.
Treba da bude u formatu: =IF(ISTEXT(D4);IF(F4="Nabavka";VLOOKUP(D4;Tablica2;4;0);VLOOKUP(D4;Tablica2;5;0);"").
[ Ivek33 @ 02.03.2016. 10:59 ] @
Na slikama se ne može ništa raditi. Koliko ja vidim na sheetu Promet želiš rezultat za 2 uvjeta (D i F stupci) a na sheetu Artikli imaš samo jedan uvjet prema kojem tražiš.
Najbolje je da prikačiš simulirani file i upišeš očekivane rezultate u stupcu G na shetu Promet (i naravno pojašnjenje što sve treba formula uzeti u obzir da bi vratila dotični rezultat)

ili ti ovo "Nabavka" označava stupac E na sheetu Promet?

[ pcpopovic @ 02.03.2016. 15:36 ] @
Šaljem deo baze sa problemom koji sam naveo.
[ pcpopovic @ 02.03.2016. 18:25 ] @
Poštovani "Pera68". Uspeo sam sa Vašim predlogom funkcije, stim što mi je Excel "tražio" da izostavim "" (navodnike) na kraju funkcije i "tražio" je dodavanje zagrade na kraju, koja je nedostajala. Sada sve radi (skoro) savršeno - jedino mi se u tim kolonama (kolona "Cena") za koje ne postoje podaci u kolonama "ID Artikla" vraća "FALSE". Mogu li to izbegnem? Neka bude "0" ili "Prazna" ćelija. Hvala.
[ pera68 @ 03.03.2016. 07:15 ] @
Excel 2007 i noviji:
=IFERROR(cela_gore_navedena_formula;0)

Stariji Excel:
=IF(ISERROR(cela_gore_navedena_formula);0;cela_gore_navedena_formula)
[ pcpopovic @ 03.03.2016. 08:19 ] @
@Pera
Ovo ne može - ne menja situaciju. Opet mi se javlja "FALSE" u koloni Cena. Ako koloni ID_Artikla upišem "0", onda mi kolona "Naziv artikla" daje "N/D"... Ovo bi se moglo zaobići dodavanjem "0" u raspon "ID_Artikla" sa cenom "0,00" i nazivom "Podatak nije upisan", ali to mi je malo...
Međutim, nađoh rešenje. Ono glasi:
=IF(ISNUMBER(D4);IF(F4="Nabavka";VLOOKUP(D4;ID_Artikla;4;0);VLOOKUP(D4;ID_Artikla;5));0)
ili na kraju sa "", ali mi onda ostale ćelije u nastavku reda traže "VREDNOST".
[ pera68 @ 03.03.2016. 08:56 ] @
Formula sa IFERROR mora biti ispravna samo što se ta funkcija doda ispred VLOOKUP. U prethodnom postu nisam video prikačen fajl (izvinjavam se zbog toga). U ovom postu kačim fajl sa rešenjem.
[ Ivek33 @ 03.03.2016. 09:23 ] @
Citat:
ali mi onda ostale ćelije u nastavku reda traže "VREDNOST"

Kako bi bilo da probaš slijedeće formule
u ćeliji G4
Code:
=IFERROR(IF(AND(D4<>"";F4="Nabavka");VLOOKUP(D4;Tablica2;4;FALSE);VLOOKUP(D4;Tablica2;5;FALSE));"")

u ćeliji I4
Code:
=IF(G4="";"";G4*H4)

u ćeliji K4
Code:
=IF(G4="";"";I4*J4)


Ili ova formula u G4 ako postoji mogućnost da ti u F4 bude prazno
Code:
=IFERROR(IF(F4="";"";IF(AND(D4<>"";F4="Nabavka");VLOOKUP(D4;Tablica2;4;FALSE);VLOOKUP(D4;Tablica2;5;FALSE)));"")
[ pcpopovic @ 03.03.2016. 09:24 ] @
@pera68
Naravno, sada je u redu.
A sada, dok ste još tu, jedno "teško" pitanje.
Kako se u određenoj ćeliji jedne tabele "poziva" poslednji upisani podatak iz neke kolone ili reda iz druge tabele?
[ Ivek33 @ 03.03.2016. 09:35 ] @
Citat:
pcpopovic:Kako se u određenoj ćeliji jedne tabele "poziva" poslednji upisani podatak iz neke kolone ili reda iz druge tabele?

Pogledaj tutorijal

- Prikaži vrijednost posljednje popunjene ćelije
[ pcpopovic @ 03.03.2016. 09:45 ] @
Hvala!
[ pcpopovic @ 03.03.2016. 20:32 ] @
Opet muka.
Treba da u kolonu "Cena" (G) - Kartica "Promet", umetnem poslednji upisani podatak iz kartice "Cene", opsega "Cene" i njegove određene kolone, koji će zavisiti od dva uslova sa kartice "Promet":
"ID Artikla" - kolona D i "Vrsta prometa" - kolona F.
Do sada sam koristio proste funkcije za to (npr: "=LOOKUP(MAX(Cene!D6:D56)+1;Cene!D6:D56"), ali sada imam dva uslova?!
[ Ivek33 @ 03.03.2016. 22:38 ] @
Vidi da li ti odgovara primjer

Na Sheetu "Artikli" dodana su dva stupca "nabavna i prodajna cijena". U svakom redu nalazi se formula koja je samostalna za sebe. Dakle nema kopiranja prema dolje. (ili traži načina da ugnijezdiš formulu za increase range ili increase column letter, pa sa funkcijom INDIRECT probaj riješiti da ti automatski povećava range prilikom kopiranja..
Ove formule vraćaju zadnje upisani podatak iz određenog raspona ćelija.
npr: ćelija E5
Code:
=OFFSET(Cene!$C$6;MATCH(1E+306;Cene!$C$6:$C$56;1)-1;0)

ćelija F5
Code:
=OFFSET(Cene!$D$6;MATCH(1E+306;Cene!$D$6:$D$56;1)-1;0)

ćelija E6
Code:
=OFFSET(Cene!$G$6;MATCH(1E+306;Cene!$G$6:$G$56;1)-1;0)

itd itd...

Na sheetu "Promet" u ćeliji G4 nalazi se formula. Ova formula povlači cijenu sa sheeta "Artikli" za određeni ID i vrstu prometa s obzirom da ti je ID Unique podatak. Formulu kopiraj dolje
Code:
=IFERROR(IF(F4="";"";IF(F4="Nabavka";VLOOKUP(D4;Artikli!B5:F28;4;FALSE);VLOOKUP(D4;Artikli!B5:F28;5;FALSE)));"")

ćelija I4, Formulu kopiraj dolje
Code:
=IF(G4="";"";G4*H4)

ćelija K4, Formulu kopiraj dolje
Code:
=IF(G4="";"";I4-J4)

Valjda ćeš se snaći, ako ti uopće vrijedi ideja, ako ne onda nema druge nego traži dalje :)
[ pcpopovic @ 04.03.2016. 10:34 ] @
@Ivek33
Nisam ni ja "sedeo". Meni je pala na pamet slična ideja, doduše malo drugačije. Ali mi nije baš jasno da Cenu Artikla ne mogu, direktno "pozvati" iz Kartice Cene u kolonu Cena na Kartici Promet - nego to moram uraditi preko Kartice Artikli... Ali, šta je - tu je. OK! Šaljem moju verziju nastavka ovog dela Baze. Tvoje funkcije (formule) za Karticu - Artikli "rade", a za Karticu Promet... nešto tu nije kako treba. U slučaju "prevlačenja" ćelija (kod kopiranja) ne uzima sve podatke baš kako treba. No, dobro.
Sada bih molio formulu (funkciju) kojom ne bi morao svaku ćeliju Kolone E i F, na Kartici Artikli, da prepravljam "ručno" nego da mi, "prevlačenjem" (kopiranjem), raspon ćelija (Cene!C6:C56) menja kolonu u svaku četvrtu, a da redovi ostanu "od-do". Jasno mi je: "Cene!C6:C56" u "Cene!C$6:C$56". Ali kako da svaka naredna ćelija bude, umesto, C - G pa K pa O pa..., odnosno da se "prevlačenjem" menjaju kolone (za određeni broj), ali ne i redovi?
Hvala i pozdrav!
[ Ivek33 @ 04.03.2016. 21:02 ] @
Citat:
U slučaju "prevlačenja" ćelija (kod kopiranja) ne uzima sve podatke baš kako treba.
Pa dao sam ti napomenu da ne vrijedi kopiranje formule dolje, pa da probaš sam doći do rezultata na tražilicama
Citat:
Sada bih molio formulu (funkciju) kojom ne bi morao svaku ćeliju Kolone E i F, na Kartici Artikli, da prepravljam "ručno" nego da mi, "prevlačenjem" (kopiranjem), raspon ćelija (Cene!C6:C56) menja kolonu u svaku četvrtu, a da redovi ostanu "od-do". Jasno mi je: "Cene!C6:C56" u "Cene!C$6:C$56". Ali kako da svaka naredna ćelija bude, umesto, C - G pa K pa O pa..., odnosno da se "prevlačenjem" menjaju kolone (za određeni broj), ali ne i redovi?
Evo primjera
Ako ovu formulu ispod postaviš u neku ćeliju i kopiraš prema dolje vratit će ti adresu ćelije sa uvećanjem za svaki četvrti stupac (C, G, K, O, S...)
Code:
=ADDRESS(ROW($A$6);ROWS(A$1:A1)*4+ROW($A$1)-2;2)

Ova formula je slična ali vraća drugačiju adresu reda (uoči razliku)
Code:
=ADDRESS(ROW($A$56);ROWS(A$1:A1)*4+ROW($A$1)-2;2)

Prostaje da ovakvu formulu ugnijezdiš unutar INDIRECT funkcije da bi vratila podatak iz navedene adrese ćelije.
btw: Za D stupac formulu prepravi tako da umjesto "-2" postaviš "-1"
[ pcpopovic @ 05.03.2016. 06:47 ] @
Može li konkretno na primeru. Znam teorijski (šta je ugnježdena funkcija), ali kako je napisati u, već postojeću, funkciju... To neću znati, a pokušavam od sinoć. Pozdrav.
[ Ivek33 @ 05.03.2016. 13:57 ] @
Citat:
pcpopovic: Znam teorijski (šta je ugnježdena funkcija), ali kako je napisati u, već postojeću, funkciju
Ugniježđena funkcija je formula koju postavljaš umjesto nekog argumenta neke druge funkcije/formule
Ako ne budeš sam radio i isprobavao ostat ćeš samo na teoriji ali od prakse ništa.
Dakle ako pogledamo formulu za E stupac na sheetu 'Artikli'
Code:
=OFFSET(Cene!$C$6;MATCH(1E+306;Cene!$C$6:$C$56;1)-2;0)
U ovoj formuli OFFSET funkcije iznad prvi argument je 'reference' ili "Cene!$C$6". Na njegovo mjesto postaviš formulu koja će vratit dotični tekst ili argument. Dakle, ti trebaš pomoću INDIRECT/ADDRESS vratiti istu adresu ćelije
Argumenti OFFSET funkcije su
Code:
=OFFSET(reference;rows;cols;height;width)
a argumenti INDIRECT funkcije su
Code:
=INDIRECT(ref_text;a1)

Umjesto argumenta "ref_text" unutar Indirect formule ti postaviš ADDRESS formulu koju sam ti dao u postu iznad. Address funkcija će vratit tekst "Cene!$C$6" a Indirect funkcija podatak iz navedene adrese.
S obzirmo na navedeno formula bi izgledala kao
Code:
=INDIRECT(ADDRESS-formula)

Nadalje ako pogledamo formulu za vraćanje posljednjeg podatka iz stupca
Code:
=OFFSET(Cene!$C$6;MATCH(1E+306;Cene!$C$6:$C$56;1)-2;0)
Opet ista stvar
Umjesto argumenta "Cene!$C$6" ti ugnijezdiš formulu INDIRECT(ADDRESS-formula)
pa tako imaš na kraju formulu sa ugniježđenim funkcijama
Code:
=OFFSET(INDIRECT(ADDRESS-formula);MATCH(1E+306;INDIRECT(ADDRESS-formula2))-2;0)

Isti princip primjeniš na drugu formulu u F stupcu s razlikom u Address formuli tj umjesto '-2' postaviš '-1' da ti se referencira na slijedeći susjedni stupac

Nadalje, u formuli sa Address funkcijom treći argument je "abs_num" nalazi se broj "2" što označava da želimo rezultat adrese koja sadrži "Relativni stupac 'C'/Apsolutni redak '$6'". Pogledaj sve brojeve za ovaj argument na tutorijalu ADDRESS funkcija. Tako prilikom kopiranja prema dolje imamo željene adrese ćelija i raspona ćelija koje će se uvećavati za svaki četvrti stupac.

Ako želiš vidjeti tok izračuna formule tada koristi Evaluate Formula u Excelu. .
Pomoću tipke F9
možeš vrlo brzo vidjeti rezulat ugniježđene funkcije (vidi pri kraju tutorijala opis kako to možeš uraditi).
Na kraju sve to ugnijezdiš u IFERROR funkciju da ignorira grešku ako nema uvjeta.
Code:
=IFERROR(Offset-formula;"")

I za kraj, valjda sam objasnio da možeš shvatiti, ako ti ovo ne pomogne, ja više nemam ideja

Vidi prikačeni primjer sa gotovim formulama.
[ pcpopovic @ 06.03.2016. 07:19 ] @
@Ivek33
Svaka čast i na objašnjenju i na rešenju.
A sad, i dalje.
Zašto ne uspevam da koloni "B" ("Ime, prezime (naziv)") na Listu "Podaci" dodelim osobinu "nedupliranja" podataka. Na tom mestu postoji eksplicitna tabela (lista podataka), zbog potrebe formiranja padajuće liste. Koristio sam referentnu fukciju (na razne opsege ove kolone), recimo: "COUNTIF($B$2:$B$101; B1)=1)"? Excel mi uvek pronađe neku grešku, koju ja "ne vidim".
Pozdrav.
[ pcpopovic @ 06.03.2016. 07:46 ] @
Sa "COUNTIF($b$2:$b$9; b10)=1)" mi primi funkciju, ali u tom slučaju, u ćeliju F10 ne mogu da upišem nikakav podatak (Excel ne dozvoljava).
[ Ivek33 @ 06.03.2016. 08:16 ] @
Da bi spriječio unos duplikata u neki raspon ćelija pogledaj tutorijal.
Formula je
Code:
=COUNTIF($B$4:$B$103;B4)=1

Da bi spriječio unos podatka u ćeliju pod uvjetom pogledaj tutorijal na dotičnom linku
BTW: Savjet - Izbjegavaj koristiti "Merge Cells" ili spajanje ćelija. Ako već želiš neki tekst prikazati u više ćelija tada koristi "Center Across Selection"

[ pcpopovic @ 06.03.2016. 11:11 ] @
Šta reći... U mom, nebrojenom puta pokušaja, da uradim ovo isto (ili sa varijacijama), uglavnom, sam zaboravljao da uradim prvi korak, opterećen mišlju: "Da li će funkcija biti OK?". Dokazni materijal svoje krivice - prilažem. Pozdrav.
[ pcpopovic @ 08.03.2016. 16:28 ] @
Pozdrav. Kako da rešim ovo:
Kada unesem određeni promet nekog artikla sa određenom cenom na određeni datum na Kartici "Promet", da mi se ta unešena vrednost (u koloni "G" ili "J" - u stvari u obe) ne menja nakon unošenja nove cene (sa novim datumom) za isti artikal u Kartici "Cene"?
[ pera68 @ 09.03.2016. 07:34 ] @
Najjednostavnije je da u koloni G (cene po artiklima) sve ćelije iznad (u ovom primeru G4:G9) prelepiš kao vrednost.
[ pcpopovic @ 09.03.2016. 07:39 ] @
I sve je to povezano sa Karticom "Artikli" zbog "pozivanja" na zadnje unete cene. Verovatno je malo komplikovana organizacija, ali ova opcija je potrebna zbog potrebe hronološkog praćenja cena artikala. Pozdrav.
[ pcpopovic @ 09.03.2016. 08:16 ] @
Citat:
pera68:
Najjednostavnije je da u koloni G (cene po artiklima) sve ćelije iznad (u ovom primeru G4:G9) prelepiš kao vrednost.

Ustvari, možda bi ovo i bilo rešenje kada bi to radio odgovarajući Macro posle svakog novog unosa nekog prometa. U protivnom, posle svakog unosa novog prometa, ovakvo rešenje je potrebno raditi "peške". Ako ne grešim.
[ pcpopovic @ 10.03.2016. 13:44 ] @
Da li može barem ideja... ako neko ima. Ili me barem uputite na neko rešenje.