Omvandla rader till kolumner på basis av horisontella sidbrytningar
I detta tips demonstreras en teknik för att omvandla radvärden till kolumnvärden på basis av horisontella automatiska sidbrytningar.
Detta kan komma väl till användning om vi har långa listor i en kolumn där data ska skrivas ut eller för att få en bättre uppställning för vidare bearbetning.
Option Explicit
Sub Rader_Till_Kolumner_Sidbrytning_XL4Makro()
'© 2002 Alla rättigheter XL-Dennis
Dim rnKolumn As Range, rnCell1 As Range, rnCell2 As Range
Dim hSidbrytningar() As Integer, i As Integer, j As Integer
Application.ScreenUpdating = False
Set rnKolumn = ActiveWorkbook.Worksheets("Blad1").Columns(1)
'Här definieras ett namn, vilket refererar till ett XL4 -makro och
'tilldelar matrisen radnummer direkt under de automatiska sidbrytningarna.
'Talet 64 refererar till en matris av rader som ligger omedelbart
'under automatiska sidbrytningar
ThisWorkbook.Names.Add Name:="Horisontella_Sidbrytningar", _
RefersToR1C1:="=GET.DOCUMENT(64,""Blad1"")"
i = 1
While Not IsError(Evaluate("Index(Horisontella_Sidbrytningar," & i & ")"))
ReDim Preserve hSidbrytningar(1 To i)
hSidbrytningar(i) = Evaluate("Index(Horisontella_Sidbrytningar," & i & ")")
i = i + 1
Wend
ReDim Preserve hSidbrytningar(1 To i - 1)
'Här loopas antalet sidbrytningar och data överförs från rad till kolumn
On Error Resume Next
For j = 1 To UBound(hSidbrytningar, 1)
Set rnCell1 = Cells(hSidbrytningar(j), 1)
Set rnCell2 = Cells(hSidbrytningar(j + 1), 1).Offset(-1, 0)
'Kontroll av sista sidbrytningen
If j + 1 > UBound(hSidbrytningar, 1) Then
Range(rnCell1.Address, rnKolumn.Cells(65536, 1).End(xlUp)).Cut _
Destination:=Cells(1, j + 1)
Else
Range(rnCell1.Address, rnCell2.Address).Cut Destination:=Cells(1, j + 1)
End If
Next j
On Error GoTo 0
Application.ScreenUpdating = True
End Sub