Wie kann ich Excel-Daten aus 1 Spalte in 8 Spalten aufteilen und dabei die Daten in einer bestimmten Reihenfolge beibehalten?

Wie kann ich Excel-Daten aus 1 Spalte in 8 Spalten aufteilen und dabei die Daten in einer bestimmten Reihenfolge beibehalten?

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:

  1. Alle Originaldaten befinden sich in Spalte A
  2. 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:

Bildbeschreibung hier eingeben

Bearbeiten:Neue Formel: =INDIRECT(CONCATENATE("a",(ROW()-2)*8+(COLUMN()-3)))wobei -2und -3Zeilen- 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.

verwandte Informationen