[Excel] Verschillende kolommen onder elkaar plaatsen

Pagina: 1
Acties:
  • 13.279 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • King
  • Registratie: September 2001
  • Laatst online: 03-10 20:39

King

War. War never changes.

Topicstarter
Ik zit met het volgende probleem.
Ik heb een excel sheet met data in ongeveer 200 kolommen en 96 rijen.
Nou wil ik al deze kolommen onder elkaar zetten zodat de data in één kolom komt te staan

voorbeeld:
code:
1
2
3
1     4     7
2     5     8
3     6     9

moet worden:
code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9

Ik denk dat ik dit alleen kan bereiken met een Macro, maar mijn kennis van VBA is niet groot genoeg om dit voor elkaar te krijgen.

De opzet van die macro zou in mijn ogen als volgt moeten zijn:
- Selecteer kolom 2
- Selecteer alle cellen in kolom 2 met een waarde erin
- Kopieer deze cellen naar de eerstvolgende lege cel in kolom 1
- Selecteer kolom 3, enz.
- En dat dus herhalen tot de kolom waar geen waardes meer instaan

Enig idee hoe ik dit het beste kan bereiken in excel?

Acties:
  • 0 Henk 'm!

  • KingRichard
  • Registratie: September 2002
  • Laatst online: 21-03 22:06

KingRichard

former Duke of Gloucester

Neem een macro op, voer de acties uit voor één kolom en bekijk de gegenereerde code. Kijk daarna in de Help bij For... Next.

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


Acties:
  • 0 Henk 'm!

  • tHe_BiNk
  • Registratie: September 2001
  • Niet online

tHe_BiNk

He's evil! Very EVIL!

Het is een oude topic, maar ik kan niet echt verder met het antwoord. Ik heb nu de eerste twee kolommen onder elkaar gecopy/past, en met een marco opgenomen. Maar hoe laat ik deze macro dit 300 keer doen.

Dus hoe krijg ik +/- 300 rijen onder elkaar?

Van

1 4 7
2 5 8
3 6 9

Naar

1
2
3
4
5
6
7
8
9

Sub Macro1()
'
' Macro1 Macro
'

'
Range("D421").Select
ActiveWindow.SmallScroll Down:=-730
Range("D38:D421").Select
Range("D421").Activate
ActiveWindow.SmallScroll Down:=378
Selection.Copy
Range("D423").Select
ActiveSheet.Paste
Range("E421").Select
ActiveWindow.SmallScroll Down:=-576
Range("E38:E421").Select
Range("E421").Activate
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=766
Range("D807").Select
ActiveSheet.Paste
End Sub

[ Voor 5% gewijzigd door tHe_BiNk op 17-04-2008 18:18 ]

APPLYitYourself.co.uk - APPLYitYourself.com - PLAKhetzelf.nl - Raamfolie, muurstickers en stickers - WindowDeco.nl Raamfolie op maat.


Acties:
  • 0 Henk 'm!

  • tHe_BiNk
  • Registratie: September 2001
  • Niet online

tHe_BiNk

He's evil! Very EVIL!

Okay ik heb de formule uit de volgende link gebruikt.

http://www.ozgrid.com/forum/showthread.php?t=83170

APPLYitYourself.co.uk - APPLYitYourself.com - PLAKhetzelf.nl - Raamfolie, muurstickers en stickers - WindowDeco.nl Raamfolie op maat.


Acties:
  • 0 Henk 'm!

  • tHe_BiNk
  • Registratie: September 2001
  • Niet online

tHe_BiNk

He's evil! Very EVIL!

Mmmmm, dit werkt dus ook niet. In lege cellen komt nu een nul te staan, en het duurt allemaal enorm lang voordat het klaar is. Iemand een idee?

Ik kwam dit tegen maar hoe krijg ik dit aan de praat? Wat staat er?

http://www.ozgrid.com/forum/showthread.php?t=75449

[ Voor 124% gewijzigd door tHe_BiNk op 18-04-2008 18:26 ]

APPLYitYourself.co.uk - APPLYitYourself.com - PLAKhetzelf.nl - Raamfolie, muurstickers en stickers - WindowDeco.nl Raamfolie op maat.


Acties:
  • 0 Henk 'm!

  • tHe_BiNk
  • Registratie: September 2001
  • Niet online

tHe_BiNk

He's evil! Very EVIL!

Okay het gaat er op lijken.

=OFFSET($A$1,INT((ROWS($1:1)-1)/3),MOD(ROWS($1:1)-1,3))

Geeft

1
4
7
2
5
8
3
6
9

Dus hoe tover ik dit om dat ik het volgende krijg

1
2
3
4
5
6
7
8
9

APPLYitYourself.co.uk - APPLYitYourself.com - PLAKhetzelf.nl - Raamfolie, muurstickers en stickers - WindowDeco.nl Raamfolie op maat.


Acties:
  • 0 Henk 'm!

  • Pinobigbird
  • Registratie: Januari 2002
  • Laatst online: 22:05

Pinobigbird

doesn't share food!

code:
1
=OFFSET($A$1,MOD(ROWS($1:1)-1,3),INT((ROWS($1:1)-1)/3))
?

Joey: Nice try. See the Netherlands is this make believe place where Peter Pan and Tinkerbell come from.
https://kattenoppasleiderdorp.nl
PV: 3080Wp ZO + 3465Wp NW = 6545Wp totaal 13°tilt


Acties:
  • 0 Henk 'm!

  • tHe_BiNk
  • Registratie: September 2001
  • Niet online

tHe_BiNk

He's evil! Very EVIL!

YES! Geweldig! Thanks! Werkt perfect! _/-\o_

Als er geen waarden in een cel staan zet de formule een 0 neer, dit is op te lossen door

code:
1
=IF((OFFSET($A$1,MOD(ROWS($1:1)-1,3),INT((ROWS($1:1)-1)/3)))=>0,(OFFSET($A$1,MOD(ROWS($1:1)-1,3),INT((ROWS($1:1)-1)/3))),"")

[ Voor 72% gewijzigd door tHe_BiNk op 19-04-2008 23:36 ]

APPLYitYourself.co.uk - APPLYitYourself.com - PLAKhetzelf.nl - Raamfolie, muurstickers en stickers - WindowDeco.nl Raamfolie op maat.


Acties:
  • 0 Henk 'm!

  • ebuko
  • Registratie: Januari 2010
  • Laatst online: 07-03 17:56
omdat ik hier veel te lang naar heb gezocht en dit antwoord graag zou willen hebben gezien toen ik deze thread wel kon vinden,

er bestaat een functie "naar.kolom()" die bijna doet wat hier gevraagd wordt, hij scant namelijk eerst elke rij, maar als je
=naar.kolom(transponeren(A1:C3))
krijg je exact wat hier gevraagd werd

voor toekomstige excel beoefenaars

[ Voor 0% gewijzigd door ebuko op 11-12-2022 19:58 . Reden: ned en engels door elkaar in formule ]


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
ebuko schreef op zaterdag 10 december 2022 @ 23:03:
er bestaat een functie "naar.kolom()" die bijna doet wat hier gevraagd wordt, hij scant namelijk eerst elke rij, maar als je krijg je exact wat hier gevraagd werd
En hoe ziet die functie 'naar.kolom(...' er dan uit?
Want =naar.kolom(transpose(A1:C3)) doet uiteraard niets.
Als het om 100 kolommen gaat met elk 100 rijen, kun je overigens met een macro het resultaat ook in enkele seconden realiseren.

Acties:
  • +1 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Laatst online: 04-10 11:14
dix-neuf schreef op zondag 11 december 2022 @ 16:27:
[...]

En hoe ziet die functie 'naar.kolom(...' er dan uit?
Want =naar.kolom(transpose(A1:C3)) doet uiteraard niets.
Als het om 100 kolommen gaat met elk 100 rijen, kun je overigens met een macro het resultaat ook in enkele seconden realiseren.
Hoezo doet dat niets? Hij geeft toch precies aan wat de functie moet zijn?
code:
1
=naar.kolom(A1:C3)
zou met het voorbeeld van de ts dit resultaat geven
1
4
7
2
5
8
3
6
9

Door de TRANSPOSE toe te voegen krijg je precies het resultaat dat gevraagd wordt.
Wat overigens een oplossing is die in 2004(!) nog niet bestond, de TOCOL functie bestaat pas sinds office 365. Dus de TS is hier niet mee geholpen, als hij/zij überhaupt nog een tweaker is....

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Ik heb geen Excel 365; daarom zou ik een macro gebruiken.

De functie TRANSPONEREN ken ik wel en heb ik ook al vaak gebruikt,
maar NAAR.KOLOM(TRANSPONEREN(.... ben ik nog nooit tegengekomen en ik kan op de helppagina's van Microsoft NAAR.KOLOM(... ook niet zo gauw vinden.

Acties:
  • 0 Henk 'm!

  • ebuko
  • Registratie: Januari 2010
  • Laatst online: 07-03 17:56
inderdaad, wat dixet zegt, en ik gebruikte nederlands en engels door elkaar, dat pas ik direct even aan

en het zijn 2 verschillende functies die inelkaar gebrukt worden om het resultaat van TS te krijgen

Acties:
  • 0 Henk 'm!

  • ebuko
  • Registratie: Januari 2010
  • Laatst online: 07-03 17:56
link met meer info: https://exceljet.net/functions/tocol-function
je kan blijkbaar ook met de data van TS dit toevoegen om direct per kolom te scannen:

code:
1
=NAAR.KOLOM(A1:C3;;WAAR)


resultaat:
code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
Pagina: 1