Ich habe eine Tabelle der Form
1 | 2 | 3 | 4
A
B
C
D
E
F
vorliegen, und muss die Werte der Zeilen untereinander in eine Spalte schreiben, do dass das dann so aussieht:
A1 __
A2 __
A3 __
A4 __
B1 __
B2 __
B3 __
B4 __
C1 __
usw.
also zuerst die Bennenung des Tabelleneintrags (A1) und dhinter der Wert in der 2. Spalte (__).
Der "umzuschreibende" Bereich sollte frei markiert werden können (also zB ich markiere zuerst den Bereich und führe dann das Makro aus).
Die neue Spalte sollte ein paar Zeilen unter der Tabelle beginnen, eine neue Mappe zB ist aber auch möglich.
Diesen Code habe ich, damit kann ich aber zum Beispiel keine Tabelle frei markieren (er fängt immer an A1 an) usw.
Danke
Zitat
Sub horizontal_zu_vertikal()
' Fügt eine Spalte ein in die dann alle Werte, die horizontal drin stehen auf vertikal umgeschichtet werden...
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
startcell = "B1"
ausgabe = "A1"
spalte = 0
x = 0
y = 0
z = 0
While spalte = 0
inhalt = Range(startcell).Offset(x, y).Value
If inhalt = "" Then
x = x + 1
y = 0
Else
Range(ausgabe).Offset(z, 0).Value = inhalt
z = z + 1
y = y + 1
End If
inhalt = Range(startcell).Offset(x, 0).Value ' prüfung auf erste Zelle der Zeile leer
If inhalt = "" Then spalte = 1 ' abbruch
If x > 10000 Or y > 10000 Then spalte = 1 ' sicherheitsausbruch
Wend
End Sub
' Fügt eine Spalte ein in die dann alle Werte, die horizontal drin stehen auf vertikal umgeschichtet werden...
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
startcell = "B1"
ausgabe = "A1"
spalte = 0
x = 0
y = 0
z = 0
While spalte = 0
inhalt = Range(startcell).Offset(x, y).Value
If inhalt = "" Then
x = x + 1
y = 0
Else
Range(ausgabe).Offset(z, 0).Value = inhalt
z = z + 1
y = y + 1
End If
inhalt = Range(startcell).Offset(x, 0).Value ' prüfung auf erste Zelle der Zeile leer
If inhalt = "" Then spalte = 1 ' abbruch
If x > 10000 Or y > 10000 Then spalte = 1 ' sicherheitsausbruch
Wend
End Sub

Hilfe
Neues Thema
Antworten

Nach oben

