Splits kolom naar tabbladen
- 07/02/2008
Voorbeeldbestanden bij dit artikel: | |
Inleiding
In deze vraag Op Ozgrid ging het over het opsplitsen van een kolom in tabbladen. Je hebt een tabel, en daarvan neem je bv. kolom F. Voor elke unieke waarde in die kolom moet er een nieuw tabblad aangemaakt worden met daarin een deel van de tabel. Met name enkel die rijen die dezelfde waarde hebben in die kolom. Een voorbeeldje zal veel duidelijk maken.
Voorbeeld
Stel dat je kolom 6 wil splitsen, dan krijg je 3 extra tabbladen. Een blad genaamd AAAA, met daarin rijen 1 en 5. Een blad genaamd BBBB, met daarin rijen 2 en 3. En tot slot een blad genaamd DDDD, met daarin rij 4. De hoofding wordt ook telkens overgenomen. Splits je kolom 2, dan krijg je 2 extra tabbladen: blad N (met 4 rijen) en blad Y (met 1 rij).
De code zal jou 2 vragen stellen. Eerst moet je ingeven welke kolom je wil splitsen (dus het nummer van de kolom ingeven; A = 1, B = 2, C = 3, …). De tweede vraag is of de aangemaakte tabbladen alfabetisch gesorteerd moeten worden.
VBA-code
De code gebruikt een aantal van de technieken op deze pagina: autofilter en collectie. Dat garandeert dat de code supersnel uitgevoerd wordt. In ieder geval véél sneller dan indien je met lussen (loops) zou werken. Wat in dit verband niet kan, is een onderscheid maken tussen hoofd- en kleine letters. Ook extra spaties voor of achter een woord worden niet als uniek herkend (wat misschien wel een goede zaak is). Wil je een kolom splitsen in tabbladen maar met minder tabbladen dan unieke waarden, voeg dan een kolom toe, geef rijen eenzelfde waarde in die kolom, en splits ten slotte die nieuwe kolom. Dan heb je het ook!
Wil je simpelere VBA-code (met dus minder opties), kijk dan hier. Deze vraag komt trouwens geregeld voor op Excel forums, dus hopelijk heb ik hiermee mijn steentje (alweer) bijgedragen.
UPDATE: Erik Reynaert, trouwe lezer - vanaf nu toch ;) - van mijn site, merkte een foutje op. De laatste regel in de uitgangstabel werd nooit gekopieerd naar een tabblad. Ik het het rechtgezet. Bedankt Erik. Ook update voor het ondervangen van spaties in de kolom die je wil splitsen.