[Access2003] Kolomwaarden opsplitsen in nieuwe kolommen

Pagina: 1
Acties:

  • Kajun
  • Registratie: Maart 2004
  • Laatst online: 21:52
[Eigen onderzoek]
Een GoT search en Google search op de combinaties 'Access', 'kolom' of 'column', 'split' e.d. leverde niet het gewenste resultaat op; mijn probleem valt onder 'tricky'.

[Situatie]
Stel ik heb de volgende tabel in Access (excuses voor de crappy layout):

ID Variabele
==========
1 a1
1 a2
1 a3
1 a4
2 b1
2 b2
3 c1
3 c2
3 c3
3 c4
3 c5
3 c6
. .
. .
. .
850 .

[Probleembeschrijving]
Hoe kan ik nu -- hetzij met een macro, hetzij met VBA -- de waarden voor de 'Variabele' kolom opsplitsen, in meerdere kolommen, of eventueel in meerdere tabellen?

Het gewenste resultaat zou dan zijn:

Var_ID1 VarID2 VarID3 .... VarID850
=============================
a1 b1 c1
a2 b2 c2
a3 b3 c3
a4
etc

N.B. De lengte van de kolommen kunnen per kolom dus verschillen, maar dat heeft weinig met het eigenlijke probleem te maken.

of als alternatief, aparte tabellen. Dus Tabel Var_ID1, VarID2, VarID3 etc etc

Ik vermoed dat dit slechts met VBA kan, maar mijn kennis van VBA is zodanig klein dat dit erg lastig voor me is. Pointers, tips e.d. zouden dan ook welkom zijn.

[Waarom wil je dat uberhaupt doen?]
Ik krijg al die variabele waarden nu eenmaal in een kolom aangeleverd. Die waarden moet ik op basis van een ID analyseren in S-Plus of een ander statistisch pakket, de data moet dus gescheiden zijn op basis van ID's. In S-Plus is het voor zover ik achtergekomen niet mogelijk.
Natuurlijk kan ik handmatig een make-table query (met ID=1, dan 2, dan 3 etc) uitvoeren, maar zoals je misschien begrijpt, als je zo'n 850 ID's hebt (en later nog meer waarschijnlijk), is dat te veel werk.

MKWii : 2750 1247 3905 || Super Metroid Orchestral Game Concert || Secret of Mana Danger!!


  • Boss
  • Registratie: September 1999
  • Laatst online: 19:01

Boss

+1 Overgewaardeerd

Hint: Je kan het met een kruistabel query proberen.... Hoewel het lijkt dat het met jouw data lastig wordt omdat je kolommen verschillende lengtes hebben.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Kajun
  • Registratie: Maart 2004
  • Laatst online: 21:52
Een crosstable-query is puur voor summary doeleinden gericht volgens mij; m.a.w. de cellen bevatten per definitie een samenvattende waarde, zoals average, sum, count e.d.

En dat zoek ik niet. Ik wil gewoon de originele waarden behouden.

Tenzij er een manier is om een niet-samenvattende crosstable te maken, maar dat heb ik niet kunnen zien..

In S-Plus heb je een functie die het splitsen van kolommen wél kan ('unstack column'), maar mijn dataset is zó groot (ruim 160000 records, met ruim 10 kolommen), dat het niet met die functie wil lukken. Ik heb het ook liever in Access formaat, vanwege toegankelijkheidsredenen (voor anderen).

MKWii : 2750 1247 3905 || Super Metroid Orchestral Game Concert || Secret of Mana Danger!!


  • Boss
  • Registratie: September 1999
  • Laatst online: 19:01

Boss

+1 Overgewaardeerd

Hm, da's waar! Dan zal je met een beetje VBA code aan de slag moeten gaan. Niet de snelste manier, maar denk ik wel goed te doen.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.