Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

2-dimensionales Range-Array in 1-dimensionales Daten-Array umwandeln

1 view
Skip to first unread message

Peter Schleif

unread,
Aug 19, 2010, 7:08:48 AM8/19/10
to

f'up: de.comp.office-pakete.ms-office.excel

Hallo.

Kürzlich tauchte hier in einem anderen Zusammenhang die Frage auf, wie
man ein 2-dim-Array welches aus einem Range entstanden ist, in ein
1-dim-Array umwandeln kann. Mein damaliger Ansatz mit
WorksheetFunction.Transpose funktionierte zwar, war aber unnötig
kompliziert.

Im Prinzip reicht schon WorksheetFunction.Index um die Umwandlung
vorzunehmen, wenn man diese auf eine Array anwendet, dem man zuvor die
Daten des Range übergeben hat. Nur bei Spalten ist vorher noch Transpose
nötig – aber auch nur in seiner eigentlichen Funktion als Spiegelung
entlang der Diagonalen.

Im Beispiel-Code unten habe ich einen 4x4 Bereich genommen; es geht aber
auch mit 4x1 oder 1x4 oder 1x1. Letzterer benötigt die If-Abfrage.

Peter

Sub TEST_Dim2to1()
Dim arr As Variant
Dim r As Range

Set r = [A1:D4]
r.Formula = "=ADDRESS(ROW(),COLUMN(),4)" 'Test-Daten
arr = r

If Not IsArray(arr) Then
MsgBox arr
Else
'Zeile 1
MsgBox Join(WorksheetFunction.Index(arr, 1, 0), ",")

'Spalte 1
MsgBox Join(WorksheetFunction.Index( _
WorksheetFunction.Transpose(arr), 1, 0), ",")
End If
End Sub

0 new messages