seštevanje podatkov iz več delovnih zvezkov

Pomoč pri delu z MS Excelom
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Pozdravljeni!

Hvala Matjaž, zdaj pa stvar funkcionira od "prve" :lol:
lp,

cedra
rick
Prispevkov: 216
Pridružen: So Feb 17, 2007 9:18 pm

Odgovor Napisal/-a rick »

pozdravljena :) :)

najprej,bi se zahvalil Cedri za vstrajnost-in požrtvovalnost-vesel sem ,da so takšni v tem forumu....no vsekakor pa sva oba potrebovala mnenje od Matjaža.kdo drug bi vedel...
od vsega začetka nisem štekal te kode.ok,ampak liste mi še vedno vse združuje in ne samo liste1.pa tudi zvezkov ne zapre za sabo.to so samo opažanja,upam ,da jih bova rešila s Cedro,v prejšnji kodi je to navedel,opam da bo še z mano sodeloval,da bomo s skupnimi močmi ustavarili en fini makro.
vsekakor bom poskušal sam rešiti problem,bom pa vesel če me Cedra zopet prehiti. :wink:

lp rick
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Zdravo!

Hm, ne vem kaj je zdaj še narobe? No kakorkoli, pošiljam vam še enkrat celo kodo (popravljeno tudi z Matjaževe strani):

Koda: Izberi vse

Sub ZdruziDatoteke()
    Dim Mapa As String
    Mapa = "c:\test"
   
    Dim NovaDatoteka As Workbook
    Set NovaDatoteka = Workbooks.Add
   
    Dim datoteka
    datoteka = Dir(Mapa & "\*.xls")
    Do While datoteka <> ""
        Dim wb
            Set wb = Workbooks.Open(Mapa & "\" & datoteka)
                For i = 1 To Sheets.Count
                If wb.Sheets(i).Name = "Moj list" Then Sheets(i).Copy before:=NovaDatoteka.Sheets(1)
            Next i
        wb.Close
        datoteka = Dir
    Loop
End Sub 
Ta koda vam išče po zvezkih za združitev samo liste z imenom "Moj list" in jih prekopira v nov zvezek. Drugih listov ne prenaša! Napisal sem vam, da ime lista, ki naj ga makro išče popravite v svojega. Kako se listi zares imenujejo, poglejte v VBA editor (properties lista). Makro sem preizkusil in zanesljivo deluje :) Zdaj res ne vem kaj bi še lahko bilo narobe :roll:
lp,

cedra
rick
Prispevkov: 216
Pridružen: So Feb 17, 2007 9:18 pm

Odgovor Napisal/-a rick »

pozdravljen Cedra :)
in sorry ...:cry: :oops:
nič ni blo narobe,malo preveč sem hitel pa sem spregledal,da moram
preimenovati imena listov.makro res lepo deluje in je zelo uporaben.
upam,da bom kdaj s svojim neznanjem,tudi vam pomagal.
kot sem že omenil,lepo se sodelovati v forumu s takšnim kot ste vi.


lp rick :wink:
DamijanF
Prispevkov: 9
Pridružen: Če Feb 09, 2006 4:29 pm
Kraj: Maribor

Odgovor Napisal/-a DamijanF »

Zdravo,

Super zadevca! Dela.

Sedaj pa ko recimo dodajam nove datoteke v to skupno mapo (novi meseci, novi dnevi...) .. bi prosil, če se lahko kdo "poigra" s tem macro-tom in ga "raztegne" tako, da vedno ko ga zaženem, ne združuje ponovno vseh datotek v mapi (ki jih že je), ampak dodaja samo nove..

Če se pač da. Drugače je pa že to čist vredu..

Hvala!!
sunami
Prispevkov: 3
Pridružen: Po Feb 01, 2010 10:13 pm

Odgovor Napisal/-a sunami »

Pozdravljen Matjaž!

Moram priznati, da že dva dni iščem rešitev mojega problema, pa se mi zdi tale tema "skoraj" ta prava.
Imam namreč več (10) zvezkov, ki vsebujejo (vsak posebej) 12 listov - Januar do December po dnevih. Rada bi, če je mogoče, da v v nov zvezek Skupaj.xls sešteje vse vrednosti vseh 10 zvezkov po vseh 12. listih (tudi po dnevih)
Ta makro sem preizkusila, a ta samo doda vse "Januarje" v en zvezek, brez seštevkov.

Prosim za pomoč, saj me boste rešili dolgotrajnega pretipkavanja
=+[Kranj_5504_promet_2010.xls]Januar!$C$2+[Kranj_5504_promet_2010.xls]Januar!$C$3+[Kranj_5504_promet_2010.xls]Januar!$C$4 ...

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

Odgovor Napisal/-a admin »

Pozdravljeni,

spodaj vam pripenjam makro, ki naredi sledeče:

makro se bo sprehodil po celotni mapi in odprl vsako Excelovo tabelo, ki se v mapi nahaja. Znotraj vsake izmed datotek bo seštel numerične podatke po vseh listih in rezultate zapisal v nov delovni zvezek.

Pred uporabo makra nastavite:
  1. Ime mape, kjer se datoteke nahajajo (trenutno c:\temp)
  2. Število vrstic, ki naj jih makro na vsakem listu obdela (trenutno 200)
  3. Število kolon, ki naj jih makro na vsakem listu obdela (trenutno 10)
Kot rezultat bo makro zapisal vrednosti, ki so različne od 0.

Koda: Izberi vse

Option Explicit

'
'  www.matjazev.net
'  februar 2010
'
Sub SestejVrednsti()
  Dim Mapa As String: Mapa = "c:\temp"
  Dim vrstic As Long: vrstic = 200
  Dim kolon As Long: kolon = 10
  Dim podatki() As Double
  
  ReDim podatki(vrstic, kolon)
  
  Dim list, v, k
  Dim datoteka: datoteka = Dir(Mapa & "\*.xls")
  Do While datoteka <> ""
    Dim wb: Set wb = Workbooks.Open(Mapa & "\" & datoteka)
    For Each list In wb.Sheets
      For v = 1 To vrstic
        For k = 1 To kolon
          If (IsNumeric(list.Cells(v, k))) Then
            podatki(v, k) = podatki(v, k) + list.Cells(v, k)
          End If
        Next
      Next
    Next
    wb.Close
    datoteka = Dir
  Loop
  
  Workbooks.Add
  Cells.Clear
  For v = 1 To vrstic
    For k = 1 To kolon
      If (Abs(podatki(v, k)) > 0.00001) Then
        Cells(v, k) = podatki(v, k)
      End If
    Next
  Next
End Sub
[/b]
lp,
Matjaž Prtenjak
Administrator
sunami
Prispevkov: 3
Pridružen: Po Feb 01, 2010 10:13 pm

Odgovor Napisal/-a sunami »

Pozdravljen Matjaž!

Sem preizkusila ta makro in deluje točno tako, kot ste napisali. Vendar mi to ne pomaga preveč (sem mogoče tudi nerodno napisala pri opisu).
Imam 10 zvezkov, ki imajo vsak po 12 listov z imeni mesecev Januar do December. Jaz bi rada, da mi makro v en prazen obstoječ zvezek npr. Skupaj.xls sešteje kolone v zvezkih in jih loči po listih Januar do December. (tako kot imam nastavljene posamezne zvezke, le da bodo sešteti skupaj po mesecih - listih).

Žal sama ne znam popraviti podatkov v kodi, ker je ne razumem (ampak poskušam :-).

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

Odgovor Napisal/-a admin »

Razumem, ni problema, a navkljub vsemu je to že malce večji makro in vam ga čisto zastonj ne morem napisati. Okvirno bi vas takšen makro stal 10€.
lp,
Matjaž Prtenjak
Administrator
sunami
Prispevkov: 3
Pridružen: Po Feb 01, 2010 10:13 pm

Odgovor Napisal/-a sunami »

Pozdravljen!

Najlepša hvala za tako hiter odgovor. Te podatke rabim za službo, ki pa mi na žalost ne financira ničesar, tako da se bom podatkov lotila seštevati po "stari" formuli.

Še enkrat hvala
i lep pozdrav, Katka.
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Lahko pa vseeno vprašate v službi saj vam lahko rešim še marsikaj drugega. Za razliko od koga drugega vam jaz sploh nebi istaliral nobene neznane programske opreme, temveč samo rešitve znotraj Excel-a/Word-a, ki bi vam olajšale vsakodnevno ponavljajoče se delo...

Vaša ura tudi ni zastonj in če moj makro nekaj opravi v 10sec, kar vi počnete eno uro, je vaš delodajalec (ob gornji ceni) že z enim zagonom v plusu. Premislite!

Želim vam lep in uspešen dan še vnaprej.
lp,
Matjaž Prtenjak
Administrator
Odgovori