Ich muss die Reihenfolge der Daten beibehalten. Um dies zu erklären, muss ich die Daten von Zelle
a1 bis b1,
a2 bis c1,
a3 bis d1,
a4 bis e1,
a5 bis f1,
a6 bis g1,
a7 bis h1,
a8 bis i1,
a9 bis B2
a10 bis C2
a11 bis D2
a12 bis E2
a13 bis F2
a14 bis G2
a15 bis H2
a16 bis I2
Wiederholen Sie den Vorgang, bis Sie alle 24.000 Einträge in Spalte A durchgegangen sind.
Gibt es dafür doch sicher eine einfache Möglichkeit per Makro oder VBA? Vielleicht gibt es in den neuesten Versionen bereits eine Funktion, die das ermöglicht?
Antwort1
Hier ist eine VBA-Lösung:
Option Explicit
Private Sub ReArrangeCells()
Dim ws As Worksheet, LastRow As Long
Set ws = Excel.ActiveSheet
LastRow = Range("A65536").End(xlUp).Row
Dim i As Long, j As Long, FromCell As Range, ToCell As Range, sNewCol As String, sNewRow As String
For i = 1 To LastRow
Set FromCell = ws.Range("A" & i) 'the cell we want to move
sNewCol = IIf(i Mod 8 = 0, Chr$(72), Chr$((i Mod 8) + 64))
sNewRow = IIf(i Mod 8 = 0, (i \ 8), (i \ 8) + 1)
Set ToCell = ws.Range(sNewCol & sNewRow) 'the cell we want to copy the data to
FromCell.Copy ToCell
If i <> 1 Then FromCell.Clear
If i Mod 100 = 0 Then DoEvents
Next i
End Sub
Antwort2
Hier ist eine Lösung. Sie setzt Folgendes voraus:
- Alle Originaldaten befinden sich in Spalte A
- Spalte B enthält nur den Index der Zeile
Formel: =INDIRECT(CONCATENATE("a",$B2*8 + col_offset))
wobei col_offset die Spaltennummer ist (mit Nullindex). In der ersten Spalte wäre es also =INDIRECT(CONCATENATE("a",$B2*8))
und in der achten Spalte wäre es =INDIRECT(CONCATENATE("a",$B2*8+7))
.
Ein Bild zur Verdeutlichung:
Bearbeiten:Neue Formel: =INDIRECT(CONCATENATE("a",(ROW()-2)*8+(COLUMN()-3)))
wobei -2
und -3
Zeilen- und Spaltenoffsets sind. Fügen Sie diese einfach in alle Zellen ein, in denen Ihre Daten angezeigt werden sollen. (Diese Lösung ist besser, da Spalte B jetzt gelöscht werden kann.)
Antwort3
Die VBA-Antworten sind am besten für die Verarbeitung großer Datenmengen geeignet, aber ich möchte darauf hinweisen, dass Sie dies auch per Kopieren/Einfügen mit „Transponieren“ tun können. Für kleine Anforderungen ist das eine einfache Rechtsklick-Lösung. Dies gilt auf jeden Fall für 2010 und ich glaube auch für 2007.
Sieht aus, als ob ich auch noch keine Bilder machen kann.
- Kopieren Sie Ihre Zellen vertikal
- Klicken Sie mit der rechten Maustaste auf eine andere Zelle und verwenden Sie die vierte Option unter „Einfügeoptionen“ (sieht aus wie zwei blaue Rechtecke im rechten Winkel).
Unter bestimmten Umständen schneller.