Waardes van meerdere rijen in 1 veld zetten

Status
Niet open voor verdere reacties.

Niels Ketting

Gebruiker
Lid geworden
14 feb 2009
Berichten
13
Hallo allemaal!

Korte versie:
Ik zoek een query of script die de waardes van Kolom2 achter elkaar zet in nieuwe kolommen waar de waarde in Kolom1 gelijk is.

iets van Select Kolom2-volgende regel where Kolom1=Kolom1 volgende regel

Nu de wat langere versie:

Ik heb een database die een tabel genereert als de volgende:

Kolom1 - Kolom2
A-1
A-2
A-3
B-1
B-5
B-9

Nu ben ik op zoek naar een query of VBA script waar ik het volgende resultaat krijg:

Kolom1 Kolom2_1 Kolom2_2 Kolom2_3
A 1 2 3
B 1 5 9

Of eventueel

Kolom1 Kolom2
A 1, 2, 3
B 1, 5, 9

Maar het liefst het eerste. Later van de eerste naar de 2e een makkelijker dan van 2 naar 1. De werkelijke waardes zijn namelijk teksten van verschillende lengtes.

Ik hoop dat jullie me begrijpen en een oplossing weten!

Gr. Niels
 
Laatst bewerkt:
Niels,

Voordat ik wat verder ga:
Zijn er altijd drie voorkomens van de ingelezen records of kan het zo zijn dat er 4 nummers bij de A horen en 9 nummers bij de B.

Dat maakt het nog al moelijk als dat zo is want dan weet je nooit hoeveel kolommen er moet zijn.

Laat me even weten
Wim
 
Hoi Wim,

Alvast bedankt voor je interesse.
Het aantal is wisselend met een maximum van 9 opties.
Overigens heb ik wel al berekend staat per kolom1 items hoeveel kolom2 items er zijn.

Ik heb het al geprobeerd om in een query kolom 2 n keer toe te voegen waarin n het aantal unieke kolom2 entrys is voor die Kolom1 en dan de kolommen te vergelijken. Daar waar alle kolommen verschillend zijn geef ik de inhoud van de kolommen weer. Dan heb ik per kolom1 entry een aantal keer dezelfde reeks, maar in een andere volgorde. Die plot ik in een volgende query zodat ik alleen de eerste over hou. Dit heeft 2 nadelen; 1 het wordt vreselijk groot en traag en 2 het eindresultaat staat in 1 cel en ik zou het graag in losse kolommen willen hebben.
Hoop dat dit een beetje duidelijk is.

Gr Niels
 
Hoi Wim,

Alvast bedankt voor je interesse.
Het aantal is wisselend met een maximum van 9 opties.
Overigens heb ik wel al berekend staat per kolom1 items hoeveel kolom2 items er zijn.

Ik heb het al geprobeerd om in een query kolom 2 n keer toe te voegen waarin n het aantal unieke kolom2 entrys is voor die Kolom1 en dan de kolommen te vergelijken. Daar waar alle kolommen verschillend zijn geef ik de inhoud van de kolommen weer. Dan heb ik per kolom1 entry een aantal keer dezelfde reeks, maar in een andere volgorde. Die plot ik in een volgende query zodat ik alleen de eerste over hou. Dit heeft 2 nadelen; 1 het wordt vreselijk groot en traag en 2 het eindresultaat staat in 1 cel en ik zou het graag in losse kolommen willen hebben.
Hoop dat dit een beetje duidelijk is.

Gr Niels

Niels,

Ik begrijp het niet helmaal maar dat is ook niet zo belangrijk.
Belangrijker is dat er methode bestaat die 'Normaliseren' heet.
In jouw geval betekent dat je een tabel hebt waar alle letters in voorkomen. Dus een record met 'A' een met 'B', enz.
Je hebt dan een tweede tabel waarin de voorkomens van 'A' en 'B' worden opgenomen.

Voorbeeld:
Code:
tabel1
Id

tabel2
Id
key


Op deze manier ben je niet afhankelijk van de input records.
Nu is het alleen nog zaak dat je e.e.a. goed in de tabellen krijgt vanuit de inputdatabase.

Ook is het voor mijn nog een vraag waarom je dit op deze manier wilt oplossen.
Je hebt duidelijk ideeen over wat je met de informatie gaat doen (op een rapport tonen of in een formulier), maar daar heb ik geen indruk van gekregen.
Laat dat ook even weten want veelal helpt dat bij het zoekn naar oplossingen.

Succes
Wim
 
Beste Niels,

Ik heb een oplossing voor je. Het is een vrij omslachtige oplossing, met VBA kan het vast simpeler, maar hij werkt, dus bij gebrek aan beter zou je het er voorlopig mee kunnen doen.

Wat ik gedaan heb is jouw basistabel in excel zetten (eventueel gekoppeld, als regelmatige update gewenst is), in ieder geval gesorteerd op Kolom1(A,B, enz.) en daarnaast in een derde kolom een formule geplaatst die een telling maakt voor het aantal records A, het aantal records B, enz.
Deze nieuwe tabel zet je vervolgens weer in de database(eventueel gekoppeld), waar je voor iedere tellingwaarde een aparte query maakt, die je vervolgens opneemt in nog een query tezamen met de door Wim genoemde tabel met alleen de waardes uit kolom1(A,B, enz.)

Ik heb zowel het excel bestand als de database bijgevoegd, hopelijk kom je eruit...
 

Bijlagen

Ik heb het!

Ik heb alle data in een kruistabelquery gezet. Kolom1 als rijkop, kolom2 als kolomkop en nogmaals kolom2 als waarde. Dan daarna weer in een volgende query om het er een beetje mooi uit te laten zien, maar het doel is bereikt!

Iedereen bedankt voor het meedenken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan