• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Tabellen verchillende sheets samenvoegen

Status
Niet open voor verdere reacties.

Macro Man

Gebruiker
Lid geworden
17 dec 2007
Berichten
48
Helloo,

Ik heb een nieuwe vraag wat betreft het samen voegen van grote tabellen die op verschillende tabbladen staan. Ik wil op het laatste tabblad alle inhoud bij elkaar voegen.
(Alle tabellen hebben de zelfde form, dus alle kolommen hebben de zelfde soort waarden

Wat ik nu doe is via macro opnemen; een pagina selecteeren, de tabel geselecteerd same met een stuk lege ruimte eronder (zodat er in de toekomst nog wel regels onder kunnen worden geplaatst, die worden meegenome naar de achterste pagina), kopieren naar de laatste pagina, zo alle paginas toevoegen, dan sorteren op naam zodat de lege tussen regels verdwijnen.

Macro Man
 
Mmm mijn vraag niet erg duidelijk?:confused:

Mijn vraag is hoe je het beste alles in een tabel krijgt op het laatste sheet.
Het van mij werkt wel maar de comp moet zo verschrikkelijk nadenke.
Er moet tog wel een zoekfunctie zijn waarmee dit mogelijk is?

MM
 
Kopiëren en sorteren zal volgens mij het snelste zijn. Dat kan je via code doen als je wil, met de code van de macro recorder heb je al een basis.
 
:(Niet egt een andwoord waar ik op hoopte...

Het nadeel is ook dat je dus dat je tabel binnen het kopieer vlak moet blijven. Is het misschien mogelijk, het aantal regeels in de tabel (dus het aantal regels onder de rij met de titels voor de kolommen)te tellen. En vervolgens zoveelreegels te knippen?

In iedergeval alweer bedankt voor je hulp:D

MACRO MAN
 
:(Niet egt een andwoord waar ik op hoopte...

Het nadeel is ook dat je dus dat je tabel binnen het kopieer vlak moet blijven. Is het misschien mogelijk, het aantal regeels in de tabel (dus het aantal regels onder de rij met de titels voor de kolommen)te tellen. En vervolgens zoveelreegels te knippen?

In iedergeval alweer bedankt voor je hulp:D

MACRO MAN


Dat is zeker allemaal mogelijk binnen VBA (bv. dmv .end(xl....)), maar je kan dat zelfs binnen je "standaard" Excel omgeving doen. Je geeft elke tabel een naam door te werken met dynamische reeksen (dmv de formules verschuiving en aantal(arg)) te gebruiken. Binnen VBA kan je dan ook die namen van die reeksen aanroepen, en zo relatief eenvoudig deze samenvoegen.
 
Dat is zeker allemaal mogelijk binnen VBA (bv. dmv .end(xl....)), maar je kan dat zelfs binnen je "standaard" Excel omgeving doen. Je geeft elke tabel een naam door te werken met dynamische reeksen (dmv de formules verschuiving en aantal(arg)) te gebruiken. Binnen VBA kan je dan ook die namen van die reeksen aanroepen, en zo relatief eenvoudig deze samenvoegen.

Die End(xlUp) en End(xlDown) zijn al zo vaak voorgekomen hier.

Zoek bv. op "laatste regel" o.i.d.
 
Nou, na zoeken vond ik hoe ik End(xlUp) kon gebruiken. Ik weet alleen niet hoe dat naam geven aan een tabel moet geven.

Code:
Set Bla2 = Range("A9", Range("G" & Rows.Count).End(xlUp))
Set Bla3 = Range("A9", Range("G" & Rows.Count).End(xlUp))
Range("Blad5!$A$4").Select
Bla2.Paste
Selection.Offset(0, 1).Select
Bla2.Paste

Dit heb ik tot nu toe gemaakt, maar werkt natuurlijk niet, want ik heb het gescreven.

Set Bla2 = Range("A9", Range("G" & Rows.Count).End(xlUp))
Hoe zet je hier handig bij van welk blad hij het moet halen.

En hoe laat ik de rest werken?:confused:

MM
 
Ik neem aan dat je Bla2 als Range gedeclareerd hebt. Variabelen op voorhand declareren als het juiste type is altijd aangewezen.

Code:
Set Bla2=Sheets("SheetDieJeWiltAanspreken").Range("A9", Range("G" & Rows.Count).End(xlUp))
Set Bla3=Sheets("AndereSheetDieJeWiltAanspreken").Range("A9", Range("G" & Rows.Count).End(xlUp))

Copieren van data doe bv. zo:

Code:
Bla2.copy sheets("SheetTotaal").Range("A1")

In het gedeelte achter copy geef je de bestemming op, in dit geval copieren naar A1 van de sheet "sheettotaal".

Probeer die .select te vermijden, die heb je in regel nergens voor nodig.

edit: stel je hebt een eerste keer naar A1 gecopieerd, en wil er dan onderaan iets bijvoegen, dan kan je zulke constructie gebruiken:
Code:
Bla2.Copy Sheets("SheetTotaal").Range("A" & Rows.Count).End(xlUp).Offset(1)
of

Code:
Bla2.Copy Sheets("SheetTotaal").Range("A1").End(xldown).Offset(1)

die keuze is ook wat afhankelijk of je data lege cellen vertoond, in dit geval, in kolom A. Zijn er lege cellen is de eerste manier aangewezen, aangezien sheettotaal initieel leeg was. Zijn er geen blanks, kan je eigenlijk kiezen.
 
Laatst bewerkt:
Bedankt voor je uitleg Finch, maar ik ben nog niet egt meester in het idee omzetten in vba.

Code:
Private Sub CommandButton2_Click()

Dim Bla2 As Range
Dim Bla3 As Range

Set Bla2 = Sheets("Blad2").Range("A9", Range("G" & Rows.Count).End(xlUp))
Set Bla3 = Sheets("Blad3").Range("A9", Range("G" & Rows.Count).End(xlUp))

Bla2.Copy Sheets("SheetTotaal").Range("A1").End(xlDown).Offset(1)
Bla3.Copy Sheets("SheetTotaal").Range("[COLOR="Red"]??????[/COLOR]").End(xlDown).Offset(1)

End Sub

Ik heb als dim range gekozen, want het is tog een tabel gebasseerd op een range.
Wat word er bedoeld met SheetTotaal?, Bla2 is tog een tabel geen hele sheet?
En hoe geef je aan dat 2de kopie onder de eerste word geplaatst en dus geen vaste range heeft?

De vragen blijven maar komen:o

Macro M
 
Wat word er bedoeld met SheetTotaal?, Bla2 is tog een tabel geen hele sheet?

Bla2 is een range, maw een verzameling cellen, maar die bevinden zich toch op een sheet. Dus Bla2 is een deel van een sheet.
Je gaat die tabellen die je wilt samenvoegen wegschrijven naar 1 tabel. Die grote tabel dien je op een sheet te plaatsen. Ik stel voor hiervoor een nieuwe, lege sheet aan te maken. Je mag die noemen zoals je wilt, maar in mijn voorbeeldpost heb ik die even de naam SheetTotaal gegeven. Maw met sheetTotaal wil ik verwijzen naar de sheet waar de "grote" tabel moet komen

En hoe geef je aan dat 2de kopie onder de eerste word geplaatst en dus geen vaste range heeft?

Probeer dit eens:

Code:
Private Sub CommandButton2_Click()

Dim Bla2 As Range
Dim Bla3 As Range

Set Bla2 = Sheets("Blad2").Range("A9", Range("G" & Rows.Count).End(xlUp))
Set Bla3 = Sheets("Blad3").Range("A9", Range("G" & Rows.Count).End(xlUp))

Bla2.Copy Sheets("SheetTotaal").Range("A1")
Bla3.Copy Sheets("SheetTotaal").Range("A" & rows.count).End(xlup).Offset(1)

End Sub

Die laatste copy regel met in het achterhoofd dat in de laatste regel die is ingevuld op het totaalblad, de cel in kolom A een waarde heeft (maw geen blanco is).
 
Beste Finch

Die laatste vragen waren wel dom van mij, ik dagt dat sheet totaal een code was...:eek:
Maar:

Dot t ni...
Hij geeft een eror:
fout 1004 tijdens uitvoeren:
Door de toepassing of object gedefinieerde fout

Ik heb in het werk in het bestandje(Dieren) die ik ook bij "Verwijder alle rijen waarde 0 " ge-upload.
Daarbij heb ik een knop gemaak met jouw formule en dan geeft hij die error.

Tom
 
Nu nog?

Code:
Private Sub CommandButton2_Click()
Dim Bla2 As Range
Dim Bla3 As Range

With Sheets("blad2")
    Set Bla2 = .Range("A9", .Range("G" & Rows.Count).End(xlUp))
End With

With Sheets("blad3")
Set Bla3 = .Range("A9", .Range("G" & Rows.Count).End(xlUp))
End With

Bla2.Copy Sheets("SheetTotaal").Range("A1")
Bla3.Copy Sheets("SheetTotaal").Range("A" & Rows.Count).End(xlUp).Offset(1)
end sub
 
Jaaaaaaaaaaaaaaaaaaaaaah hij doet hetttttttttttttt:D:D
Zon simpele aanpassing, ik had het alleen zelf niet zo geprobeerd.
Mijn probleem met VBA is volgens mij dat ik weet hoe het ongeveer moet en dat het mogelijk is, maar ik ken al die thermen niet.
En als ik die termen eindelijkgevonde heb ze niet volgens VBA gramatica neer zet.
Dan ga je het op allerlei manniere neerzetten en heeeeeeeeeeeel afentoe doet hij het dan oppeens.

Maarja ik kan weer veder bedankt:thumb:

Macro Man
 
Mijn probleem met VBA is volgens mij dat ik weet hoe het ongeveer moet en dat het mogelijk is, maar ik ken al die thermen niet.
En als ik die termen eindelijkgevonde heb ze niet volgens VBA gramatica neer zet.
Dan ga je het op allerlei manniere neerzetten en heeeeeeeeeeeel afentoe doet hij het dan oppeens.

Hoe meer je met VBA werkt, hoe beter je het onder de knie krijgt, en dat soort fouten tot het verleden gaan behoren.

TIP: het is altijd inspirerend om code van anderen grondig te analyseren, en nieuwe elementen daaruit zelf gaan te onderzoeken en proberen toe te passen op eigen problemen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan