Kako podatke iz več celic vpisati v eno

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

Kako podatke iz več celic vpisati v eno

Odgovor Napisal/-a zvonem »

Spet ne najdem rešitve ali pa so mi spet možgančki malo zatajili :oops:
Imam bazo podatkov: stolpec A - datum, stolpec B - dogodek. Na drugem listu bi rad, da mi ob vpisu datuma v celico, npr. A1, v celico B1 vpisalo vse dogodke, ki so s tem datumom povezani.
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Brez makra ni rešljivo!
lp,
Matjaž Prtenjak
Administrator
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Odgovor Napisal/-a zvonem »

Za začetek sem (malo posnel, malo napisal) macro, ki naj bi mi izpisal vse podatke za izbrane dneve.
Vendar je nekje napaka (pa mi znanje ne omogoča, da bi jo odkril), ker se mi macro ne sprehodi po vseh sedmih dnevih, ampka mi samo prvega sedemkrat prepiše. Mi lahko kdo pove, kje sem ga polomil :lol:

Koda: Izberi vse

    Dim vrsta As String 'stolpec z datumi v iskanem tednu h2:h8
    vrsta = Range("h2").Offset(i, 0)
    For i = 0 To 6
        Selection.AutoFilter Field:=4, Criteria1:=vrsta 'izbere datum
      Range("B2:C10").Select 'kopira območje izbora; predvidoma podatkov ne bo več kot 8
      Selection.Copy
       Range("L20").Select 'območje kopiranja
      ActiveCell.End(xlDown).Offset(1, 0).Select
        ActiveSheet.Paste
        Selection.AutoFilter Field:=4
        Application.CutCopyMode = False
        Range("B5").Select
    Next i
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Ne, ne... z nobeno vgrajeno Ecelovo funkcijo ne boste mogli več rešitev zapisati v eno samo celico. Je potrebno napisati makro, ki to naredi in spodaj vam ga prilagam

Koda: Izberi vse

'
'  www.matjazev.net
'    junij 2009
'
Function NajdiDogodkeZaDan(Obmocje As Range, datum As Date)
  NajdiDogodkeZaDan = ""
  
  Dim vrstica As Long
  For vrstica = 0 To Obmocje.Rows.Count
    If (Obmocje.Cells(vrstica, 1) = datum) Then
      NajdiDogodkeZaDan = NajdiDogodkeZaDan & Obmocje.Cells(vrstica, 2) & ";"
    End If
  Next
End Function
To je Excelova funkcija, ki sprejme dva parametra. Prvi parameter je območje, na katerem se nahajajo datumi in dogodki - torej to območje mora imeti vsaj dve koloni(!); drugi parameter pa je datum, za kateraga vas dogodki zanimajo. Funkcija vrne seznam vseh dogodkov za izbran datum, ločene s podpičjem.

Primer uporabe:

Koda: Izberi vse

  ' če je iska datum zapisan v celici D23
  =NajdiDogodkeZaDan(B4:C52;D23)

  ' če želite dogodke za datum 1.4.2009, ki pa ni posebej zapisan v neki celici
  =NajdiDogodkeZaDan(B4:C52;DATE(2009;1;4))
lp,
Matjaž Prtenjak
Administrator
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Odgovor Napisal/-a zvonem »

Matjaž, najlepša hvala! Točno to sem želel.
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Odgovor Napisal/-a zvonem »

Hm. Po petih mesecih se mi je porodilo novo vprašanje (da ne rečem ideja). Ta funkcija vrne rezultat iz drugega stolpca vpisanega območja. Ali in kako bi podobna funkcija vrnila rezultat iz poljubnega stolpca v vpisanem območju?
Poizkušal se v kodo dodati še dodatno območje "kolone" (podobno kot so že vpisane "vrstica"), pa mi javlja napako :shock:
Sem pač prekratek (in samo ljubitelj) v programiranju :oops:
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Funkciji dodate še en parameter:

Koda: Izberi vse

'
'  www.matjazev.net
'    november 2009
'
Function NajdiDogodkeZaDan(Obmocje As Range, datum As Date, kolona as Integer)
  NajdiDogodkeZaDan = ""
 
  Dim vrstica As Long
  For vrstica = 0 To Obmocje.Rows.Count
    If (Obmocje.Cells(vrstica, 1) = datum) Then
      NajdiDogodkeZaDan = NajdiDogodkeZaDan & Obmocje.Cells(vrstica, kolona) & ";"
    End If
  Next
End Function
Seveda pa morate potem popraviti tudi klice po Excelovi tabeli:

Koda: Izberi vse

  ' torej namesto
  =NajdiDogodkeZaDan(B4:C52;D23)

  ' mora pisati
  =NajdiDogodkeZaDan(B4:C52;D23;2)

  ' oz. pač katera druga kolona
  =NajdiDogodkeZaDan(B4:C52;D23;5)
lp,
Matjaž Prtenjak
Administrator
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Odgovor Napisal/-a zvonem »

Še enkrat, hvala!
Deluje!
Odgovori