1. met behulp van PasteSpecial
2. met behulp van de werkbladformule Transpose
Areas
In het voorbeeld zijn de gegevens in kolom A per groep gescheiden door een lege cel.
Daardoor kan gebruik gemaakt worden van de eigenschap Areas (een gebied van aaneengesloten cellen) op basis van de niet-lege cellen in kolom A
Voor het gebruik van de eigenschap Areas is het niet van belang hoeveel lege cellen er tussen de groepen zitten.
Ook maakt het daardoor niet uit hoe groot de groep is die naar een regel moet worden omgezet: de groepen kunnen variabel van grootte zijn.
Specialcells
Met de eigenschap specialcells(xlcelltypeconstants) worden de niet-lege cellen in kolom A gefilterd.
Currentregion
In het voorbeeld worden de gegevens uit kolom A per groep (Area) als regel verplaatst naar kolom D en volgende.
De eerste lege regel voor dit gebied wordt bepaald met de eigenschap CurrentRegion. Cel D1 is daarbij de referentiecel.
In het voorbeeld met Transpose wordt daarvoor aan het aantal rijen in currentregion 1 toegevoegd; in het voorbeeld met pastespecial wordt gebruik gemaakt van de eigenschap offset.
In de bijlage staan deze 2 macro's en een kolom met gegevens in het enige werkblad, zodat de code direkt uitgetest kan worden.
- Code: Selecteer alles
Sub transpose_()
For Each ar In Columns([color=green]1[/color]).SpecialCells(xlCellTypeConstants).Areas
With [[color=green]d1[/color]].CurrentRegion.Rows
Range(Cells(.Count + 1, [color=green]4[/color]), Cells(.Count + 1, [color=green]3[/color] + ar.Rows.Count)) = WorksheetFunction.Transpose(ar)
End With
Next
End Sub
- Code: Selecteer alles
Sub pastespecial_()
For Each ar In Columns([color=green]1[/color]).SpecialCells(xlCellTypeConstants).Areas
ar.Copy
[[color=green]d1[/color]].Offset([[color=green]d1[/color]].CurrentRegion.Rows.Count).pastespecial , , , True
Next
End Sub
