[ bojanis @ 05.07.2006. 15:19 ] @
Zanima me sledece...
Imam dva worksheet-a. Pojedine kolone drugog worksheet-a vuku preko lookup-a vrednosti iz prvih kolona. Vrednosti su u formi serijski broj - naziv. Kako da se u drugom worksheet-u vidi samo serijski broj bez naziva?
Da li sem offset-a postoji jos neka funkcija za pravljenje uslovnih padajucih lista? Sto znaci, ukoliko je u jednoj koloni izabrana odredjena vrednost celije iz padajuce liste, da se u celiji koja je pored nje, a pripada drugoj koloni biraju vrednosti koje odgovaraju vrednosti iz prve celije. Sto znaci, ako se u prvoj celiji izabere voda, da u drugoj celiji bude ponudjena Minakva, Vrnjci, a ako se umesto vode izabere sok, da u drugoj celiji bude coca cola, sprite...
Hvala unapred
[ Jpeca @ 06.07.2006. 09:15 ] @
>Imam dva worksheet-a. Pojedine kolone drugog worksheet-a vuku preko lookup-a vrednosti iz prvih kolona. Vrednosti su u formi serijski broj - naziv. Kako da se u drugom worksheet-u vidi samo serijski broj bez naziva?

Ako sam dobro razumeo treba da izvučešt broj (ispred crtice). Dakle dobijenu lookup vrednost LookUpValue prosledi funkciji
Code:


=TRIM(LEFT(LookUpValue;FIND("-";LookUpValue)-1))
i dobićeš samo serijski broj


npr.
=TRIM(LEFT("0455 - Utikač";FIND("-";"0455 - Utikač")-1)) daje 0455

> Da li sem offset-a postoji jos neka funkcija za pravljenje uslovnih padajucih lista.



Pa u okviru validation mozes da pozoves bilo koju drugu funkciju koja ce ti dati odgovarajuću listu za validaciju, npr IF (vidi praktikum.co.yu - Uslovni sadržaj pri validaciji). Korišćenje INDIRECT funkcije je opisano u novom broju PC Pressa (br. 124, str. 153 - D.Grbić) . Napiši u čemu je problem pa da probam da ti odgovorim.
[ bojanis @ 06.07.2006. 10:09 ] @
Problem je u tome sto imam tri nivoa koja moraju da se ispostuju u cetvrtoj koloni. Imam ukupno 32000 mogucih kombinacija. Npr. ako je u prvom polju izabran sok, u drugom coca cola, u trecem lite, u cetvrtom mogu da imam ponudjeno samo 0,5l.
Uslove izmedju prva tri polja sam resavao offsetom, a za ovo cetvrto polje stvarno nemam ideju. Mada, najveci je problem u tome sto imam 32000 mogucih kombinacija.
[ Jpeca @ 06.07.2006. 10:34 ] @
Da li može da se napravi neka logika kako se formira lista za validaciju - npr. na osnovu liste proizvoda? Ako je ima može da se napravi neki makro koji će dinamički da pravi listu za validaciju kad se izmeni treći kombo? Bilo bi najjasnije da postaviš skraćeni primer.
[ bojanis @ 06.07.2006. 11:28 ] @
Malo sire objasnjenje, da ne zalazim previse u hipoteze. U pitanju su tri nivoa troskova. U prvom nivou se nalaze jedinstveni troskovi, svaki ima svoj jedinstven kod. U drugom nivou se nalaze troskovi koji zavise od prvog nivoa. Npr jedan trosak iz prvog nivoa moze imati nekoliko troskova na drugom nivou. Gotovo svi troskovi iz prvog nivoa imaju nekoliko zajednickih troskova iz drugog, dakle ni jedan trosak iz prvog nivoa nema svoj jedinstven skup na drugom nivou cije se vrednosti ne ponavljaju. Ista stvar je i za treci nivo troskova. U cetvrtom nivou, koji mi je problematican, na osnovu sva tri nivoa, mora da bude ponudjena jedna od vrednosti (broj vrednosti koje ulaze u cetvrti nivo je mali, svega pet).
Sto se tice primera, original ne smem da kacim.
[ apos @ 06.07.2006. 12:15 ] @
Na stranu sve ali mislim da ti je kvalitetnije da ovo uradiš u Accessu
[ bojanis @ 06.07.2006. 12:21 ] @
Citat:
apos: Na stranu sve ali mislim da ti je kvalitetnije da ovo uradiš u Accessu


Apsolutno se slazem...
Samo, problem je sto se ja tu najmanje pitam
[ Jpeca @ 06.07.2006. 12:39 ] @
> Sto se tice primera, original ne smem da kacim.
Pa nisam ni trazio original nego samo da vidim strukturu podataka da bi mogao da ti pomognem

Na osnovu onoga sto sam ja zamislio moglo bi da se uradi sledece
1/ Povezes celije IV nivoa sa listom za validaciju ValList (u primeru opseg H2:H4)
2/ Na dogadjaj SelectionChange ukoliko je selektovana neka celija IV nivoa azurira se lista za validaciju na osnovu liste troskova na posebnom listu.
- Pri tome se brise se sadrzaj prethodne lista za validaciju
Code:

     Range("ValList").Clear  

- Kreira nova lista prolaskom kroz celokupnu listu troskova i poredjenjem sa unosima za I, II i III nivo
Code:

For r = 1 To rend
      If Range("Troskovi").Cells(r, 1).Text = Range("B3").Text And  _
         Range("Troskovi").Cells(r, 2).Text = Range("C3").Text And _
         Range("Troskovi").Cells(r, 3).Text = Range("D3").Text Then
           ' Ako je zadovoljen uslova dodaje se u listu za validaciju
           Range("ValList").Cells(l, 1).Value = Range("Troskovi").Cells(r, 4).Text
           l = l + 1
      End If
    Next r

- Ponovo formira (ažurira) lista za validaciju
Code:

ActiveWorkbook.Names.Add Name:="ValList", RefersTo:= _
        "=" & ActiveSheet.Name & "!$H$2:$H$" & Trim(Str(l + 1))

Na taj način u padajućem meniju za IV nivo pojaviće se sadržaj ažurirane liste za validaciju.

Kompletan primer je okačen u prilogu. Problem je što ovo traje neko vreme, pa ako je lista troskova dugačka ...