Omvandla matrisdata till
kolumn- & raddataI detta tips demonstreras en avancerad teknik för att omvandla matrisdata till antingen kolumn- eller raddata.
Tekniken kan vara lämplig om vi t ex ska exportera data från XL och där det andra programmet kräver en viss uppställning av data för att kunna läsa in det korrekt.
En annan situation är om vi vill överföra data från ett blad till ett annat med två skilda uppställningar i en och samma arbetsbok.
Exemplet:
- På Blad 2 finns data som ska överföras till Blad 1. Antal kolumner är fasta (12 st) medan antal rader är okända vid överföringen.
I exemplet återfinns 14 rader data, dvs en data matris om 168 celler (12 * 14) - se bild nedan.
- I Blad 1 ska data presenteras i B-kolumnen.
Option Explicit
Sub Omvandla_MatrisData_Kolumn()
'© 2001 Alla rättigheter XL-Dennis
Dim rnOmrade As Range
Dim i As Long
Dim j As Long
Dim k As Long
Application.ScreenUpdating = False
'Här identifieras/dimensioneras datamatrisens storlek
With Worksheets("Blad2")
Set rnOmrade = .Range(.Cells(2, 2), .Cells(Rows.Count, 2).End(xlUp))
Set rnOmrade = rnOmrade.Resize(, 4)
End With
'Slutligen förs data över till kolumn B
k = 0
With Worksheets("Blad1")
For j = 1 To rnOmrade.Rows.Count
For i = 1 To rnOmrade.Columns.Count
k = k + 1
.Cells(k, "B").Value = rnOmrade(j, i).Value
Next i
Next j
End With
Application.ScreenUpdating = True
End Sub
För att överföra data till rad 2 i exemplet ersätts raden i ovanstående procedur:
- .Cells(k, "B").Value = rnOmrade(j, i).Value med
- .Cells(2, k).Value = rnOmrade(j, i).Value