De inhoud van cellen samenvoegen
- 23/12/2018
Voorbeeldbestanden bij dit artikel: | |
Inleiding
Het heeft een tijdje geduurd, maar ik heb eindelijk nog eens wat tijd gevonden voor een nieuw artikel en voorbeeldbestandje (bovenaan deze pagina). In het bijgevoegde bestandje ga je heel wat slimmigheidjes ontdekken, maar voornaamste doelstelling van dit artikel is om te laten zien hoe je de inhoud van cellen handig in een overzicht in 1 cel kan zetten, zodat je dat overzicht in 1 keer kan kopiëren/plakken.
De case gaat als volgt. Ik moet dagelijks het aantal uren rapporteren dat ik aan 2 verschillende projecten besteed heb. De output is steeds identiek, enkel het aantal uren op beide projecten verschilt. Om dit zo vlot mogelijk te doen maakte ik een kleine Excel file:
We zien onder andere:
- de datum van vandaag (met een formule, geen input)
- hoeveel uren gespendeerd werden per project, voor en op vandaag, en hun totaal
- de gele cellen zijn m.a.w. input
De gewenste output omvat de uren uit het verleden, de uren van vandaag, en het totaal van alle uren. Dit moet uitgesplitst worden per project. De bedoeling is het onderstaande tekstuele overzicht te genereren:
We zouden dus graag de tekst uit de verschillende tabelcellen verzamelen in 1 cel. We plakken daarbij de verschillende regels aan mekaar door middel van een carriage return karakter: als we die cel dan kopiëren/plakken in een email of andere applicatie, dan gaat de output daar op verschillende regels onder mekaar komen:
Hier plakte ik de output in een nieuwe email in Outlook. Als randbemerking geef ik mee dat we vanuit Excel VBA met gemak Outlook kunnen aansturen, en bijvoorbeeld een mail kunnen genereren met onze output in de body van de email. Uiteraard is dit voorbeeld niet waarheidsgetrouw aangezien ik mijn uren doorgeef in een Excel bestand via SharePoint.
Je zal je afvragen hoe we de samengevoegde output in 1 cel hebben kunnen zetten? Dat doe ik met de functie TEXTJOIN (in het Engels), of TEKST.COMBINEREN (in het Nederlands). Opgelet ! Deze functie werd pas geïntroduceerd in Excel 2016. Mocht je een oudere versie hebben, dan zal je dit niet kunnen gebruiken.
De functie laat toe om op te geven welke cellen je wil samenvoegen, met ook welk scheidingsteken. Optioneel, en nogal nuttig, is dat we lege cellen kunnen uitsluiten in de output. Dit is dan ook de aanleiding om dit artikel te schrijven. Vroeger moesten we met veel ALS-functies en veel omwegen werken om hetzelfde resultaat te bereiken, wat nu in 1 stap/functie gedaan wordt.
=TEKST.COMBINEREN( TEKEN(10); WAAR; A2:A10 )
A2:A10 zijn de cellen die je wil samenvoegen. Bekijk zeker het voorbeeldbestandje, daar is het mogelijk dat die cellen in kolom A verborgen zijn. Je moet ze dan eventueel even zichtbaar maken. TEKEN(10) is de carriage return, oftewel, 'begin een nieuwe regel'. WAAR staat voor het uitsluiten van de lege cellen. Hoe kan je in ons voorbeeld lege cellen krijgen ? Wel, als een cel in de tabel 0 is, dan wens ik die niet in de output. Niet elke dag wordt er op beide projecten gewerkt. Indien je dat wenst kan je eenvoudig een keuze inbouwen om al dan niet de lege cellen op te nemen of uit te sluiten.
De meer eenvoudige manieren om teksten aan mekaar vast te plakken, zijn: TEKST.SAMENVOEGEN functie (CONCATENATE in het Engels), of & (zie de cellen in kolom A voor voorbeelden).
Je kan dan eenvoudig die TEKST.COMBINEREN functie in het werkblad zetten en als je klaar bent met de tabel bij te werken, kopieer je de cel met die functie en plak je in een ander programma. Klaar ! Maar in het bestand ben ik nog een stap verder gegaan. De groene knop met witte tekst automatiseert nog een aantal stappen:
- telt de uren van vandaag (in geel) op bij de uren in de rij erboven
- zet de uren in geel allebei op 0
- kopieert de output naar het klembord (dan hoef je zelf niet meer te kopiëren)
- er is nog een nieuwe functie in VBA om de getalopmaak van een cel af te leiden. Die opmaak gebruik ik om de output te formatteren op automatisch dezelfde manier als de opmaak van de input
Zo, alweer een leuk bestandje met een aantal tips en tricks. Verander zeker de uren en kijk wat er gebeurt als je de samengevoegde output kopieert naar elders. Als je een versie van het bestand wenst zonder VBA-code, dan kan dat. Stuur gerust een mailtje.
Voor iedereen alvast gezellige feestdagen en een fantastisch 2019 gewenst !