Obseg celic

Pomoč pri delu z MS Excelom
Odgovori
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Obseg celic

Odgovor Napisal/-a zvonem »

Pozdravljeni! Na List1! imam vpisane sezname, ki so poimenovani, npr. Obseg1, Obseg2 ... . Ali je možno (in kako), da mi na List2!, če je v celici A1 napisano ime Obseg1, v stolpec B izpiše celoten seznam Obseg1, če je vpisano ime Obseg2, izpiše Obseg2 itd.?
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Zdajle mi ne pade na pamet., kako bi to naredil z vgrajenimi funkcijami, s pomočjo Majhnega VBA makra pa to ni noben problem:

Koda: Izberi vse

'
'  www.matjazev.net
'      april 2010
'
Function KjeJeObmocje(Obmocje As String)
    KjeJeObmocje = Range(Obmocje).Address
End Function
In sedaj na listu pač vpišete

Koda: Izberi vse

=KjeJeObmocje("MojObseg")
ali
=KjeJeObmocje(A1)
kjer je MojObseg pač nek obseg, ki ste ga poimenovali ali pa se besedilo 'MojObseg' nahaja v celici A1.
lp,
Matjaž Prtenjak
Administrator
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Odgovor Napisal/-a zvonem »

Matjaž, funkcija mi vrne obseg območja, oziroma izpiše, kje iskano območje je. Jaz pa bi rad, da seznam iz iskanega obsega izpiše v stolpec.
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Poizkusite to:

Koda: Izberi vse

Private Sub Worksheet_Change(ByVal Target As Range)

Dim ime As String

If (Not Intersect(Target, Range("A1")) Is Nothing) Then

    ime = Sheets("List2").Range("A1").Value
        
        Application.Goto Reference:=ime
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("List2").Select
        Range("B1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
    
End If
    
End Sub
lp,

cedra
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

zvonem napisal/-a:Matjaž, funkcija mi vrne obseg območja, oziroma izpiše, kje iskano območje je. Jaz pa bi rad, da seznam iz iskanega obsega izpiše v stolpec.
Funkcija lahko vrne vrednost samo in izključno v celico v kateri se nahaja, zatorej vam funkcija zadane naloge ne more rešiti.

Toda prej vas nisem razumel, da želite to kar pišete. Omenjeno funkcionalnost pa lahko rešite z vgrajenimi funkcijami Excela - uporabite funkcijo OFFSET in jo skopirajte po vrstici navzdol:

Koda: Izberi vse

=OFFSET(MojObseg;ROW()-1;0;1;1)
lp,
Matjaž Prtenjak
Administrator
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Odgovor Napisal/-a zvonem »

Hvala obema za trud, vendar: pri funkciji, ki jo je napisal Cendra javlja napako in sicer:

Koda: Izberi vse

Compile Error
Ambigouos Name Detected: Worksheet_Change
Pri funkciji, ki jo je predlagal Matjaž (občutek imam, da je prava) pa mi zpiše celoten seznam, jaz pa bi rad samo seznam, ki je poimenovan enako kot je vrednost v celici A1.
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Mislim, da napaka pomeni, da je našel neka podvojena imena obsegov.
Preverite... Meni je delalo.
lp,

cedra
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

zvonem napisal/-a: Pri funkciji, ki jo je predlagal Matjaž (občutek imam, da je prava) pa mi zpiše celoten seznam, jaz pa bi rad samo seznam, ki je poimenovan enako kot je vrednost v celici A1.
Zdaj pa moram reči, da vam ne sledim več. Se oproščam, toda ne razumem, kaj želite :(
lp,
Matjaž Prtenjak
Administrator
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Odgovor Napisal/-a zvonem »

Podrobneje: imam dva obsega: glavni in pomožni. V glavnem obsegu so vpisane glavne vrste izdelkov (A, B, C ...), v pomožnem pa podvrste; za glavno vrsto A so vpisane A1, A2, A3 ..., za B so vpisane B1, B2, B3 ... itd. Seznam posameznih podvrst je poimenovan po glavni vrsti: A1, A2, A3 ... je poimenovan A, B1, B2, B3 ... je poimenovan B itd. Sedaj bi rad, da mi ob izbiri glavne vrste npr. A od celice b1 navzdol izpiše ves seznam poimenovan A, ob izbiri glavne vrste B pa od celice b1 navzdol izpiše ves seznam poimenovan B itd.
Upam, da sem bil malce bolj jasen :oops:
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Vse bolj se mi zdi, ko tole berem, da ste vso stvar malo zakomplicirali. Vse skupaj se lahko reši tako, da v okence (Name box), to je okence kjer piše trenutni naslov aktivne celice lista, vpišete npr. ime vašega obsega "A" in Excel vas bo s katerega koli lista vrgel na izbrani obseg. Obseg je tudi označen. Torej vam preostane samo kopiranje obsega in izbira lista in celice kamor boste prilepili svoj poimenovani obseg. S proceduro, ki jo vam predlagam, se boste zamudili ravno toliko časa kot s pisanje funkcije v neko celico. Morda vam je to všeč :) morda tudi ne :(
lp,

cedra
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Odgovor Napisal/-a zvonem »

No, mogoče sem res malo zakompliciral :oops: , želel sem le, da bi z enim izborom hkrati dobil tudi drugega. Moram reči, da mi je uspelo :lol: za prvi izbor sem uporabil kontrolnik "spustni seznam", kjer sem določil osnovni izbor, v isti kontrolnik pa sem dal del Cedrine kode, ki mi ob spremembi osnovnega izbora poišče ustrezni podizbor.
Hvala za trud, obema :D
Odgovori