Frage zum Editieren einer Excel-Liste

Schnipp

Lt. Commander
Registriert
Feb. 2004
Beiträge
1.141
Hallo zusammen,

ich bin leider nur Standard-Nutzer von Microsoft Excel und nun muss ich eine recht große Excel-Datei bearbeiten und bevor ich alles manuell machen muss, höre ich doch lieber mal nach, ob man das nicht einfacher haben kann.

Ich versuche es mal zu beschreiben, was mein Problem ist:

In der Excel-Tabelle stehen jeweils in 5 aufeinanderfolgenden Spalten zusammengehörige Informationen. Von diesen zusammengehörigen Informationseinheiten gibt es insgesamt 23 Stück, also 23 x 5 Spalten. Jeder Datensatz hat in einem dieser 23 Bereich Daten stehen. Nun möchte ich diese Informationen so zusammenfassen, dass am Ende nur noch einmal 5 Spalten pro Datensatz da sind, wo die Infos drin stehen. Heißt also: er soll die Infos aus jedem Datensatz immer in die Spalten 1-5 holen.

Hoffe ich konnte mich verständlich ausdrücken. Leider sind es sensible Daten, so dass ich nicht einfach einen Auszug aus dieser Datei hier verfügbar machen kann.

Kann mir jemand einen Tipp geben, wie ich das mache (wenn so etwas überhaupt möglich ist)?

Gruß Schnipp
 
Punkt 1 und sehr wichtig: Erstelle eine Kopie der Datei und spiele damit rum! Dann geht nix verloren.
Punkt 2: Sind es Zahlenwerte? Kann man doch mit "summe=" arbeiten.

lg
fire
 
Wie der Vorredner schon sag kommt es darauf an welchen Typ die "zusammenhängenden Informationen" haben.

Kennst du den Befehl
=verketten(Zelle1;"Text blabla";Zelle2)
Beliebig erweiterbar
 
Nein, keine Zahlen. Ich zeige doch mal ein Beispiel, was es denke ich verdeutlicht:

[table="width: 500, class: grid, align: left"]
[tr]
[td]Beitragsbezeichnung1[/td]
[td]Beitragsstart1[/td]
[td]Beitragsende1[/td]
[td]Beitragszahlweise1[/td]
[td]Beitragsbezeichnung2[/td]
[td]Beitragsstart2[/td]
[td]Beitragsende2[/td]
[td]Beitragszahlweise2[/td]
[td]Beitragsbezeichnung3[/td]
[td]Beitragsstart3[/td]
[td]Beitragsende3[/td]
[td]Beitragszahlweise3[/td]
[/tr]
[tr]
[td]Erwachsene Quartal[/td]
[td]01.01.2014[/td]
[td]31.12.2016[/td]
[td]vierteljährlich[/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[/tr]
[tr]
[td]Erwachsene Quartal[/td]
[td]01.01.2014[/td]
[td]31.12.2016[/td]
[td]vierteljährlich[/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[/tr]
[tr]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td]Erwachsene Jahr[/td]
[td]01.01.2014[/td]
[td]31.12.2016[/td]
[td]jährlich[/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[/tr]
[tr]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[td]Jugendlich Halbjahr[/td]
[td]01.01.2014[/td]
[td]31.12.2016[/td]
[td]halbjährlich[/td]
[/tr]
[/table]

So in etwa ist die Tabelle aufgebaut. Ich möchte nun quasi überall da, wo die Informationen nicht ganz links in den ersten 5 Spalten steht, die Infos ganz nach links rüber ziehen. Heißt: die Infos in Zeile 3 wandern 4 Spalten nach links. Die Infos in Zeile 4 wandern 8 Spalten nach links usw.
 
Über ein Makro wäre das sehr leicht.

Müsstest prüfen ob in Spalte 1 was steht (dann nichts machen), wenn nicht ob in Spalte 5 was steht (dann spalte 5,6,7,8 um 4 nach links nacheinander verschieben), wenn nicht, ob in Spalte 9 etwas steht (Spalte 9,10,11,12 um 8 nach links verschieben).

Das ganze könnte man so gestalten, dass du mit einem Klick alle Daten richtig formatierst.

Man müsste sich natürlich in VBA etwas reinarbeiten.
 
Das würde auch mit einer verschachtelten Wenn Funktion funktionieren, dann braucht man den VBA Aufwand nicht zu betreiben.
In Spalte A: Wenn Spalte E nicht leer, dann Spalte E, sonst Wenn Spalte I nicht leer, dann Spalte I, sonst ... usw.
In Spalte B, C und D analog dazu.

Edit: wenn du dann nur die ersten Spalten gefüllt haben willst, hilft im Anschluss ein Kopieren der ersten Spalten und Werte in eine neue Tabelle einfügen.
 
Zuletzt bearbeitet:
@sthyen: Danke für den Tipp, das werde ich mal versuchen!
 
Es müsste sogar reichen diese Formel einmal in Spalte A zu erstellen und entsprechend zur Seite und nach unten zu kopieren. Dann wird's noch einfacher ;)

Edit: ich hab einen Denkfehler gemacht.:rolleyes: Da obige funktioniert natürlich nur dort, wo in Spalte A nichts steht. Cleverer wäre wahrscheinlich gleich eine neues Tabellenblatt zu nehmen und dieses komplett mit der vorgeschlagenen Formel zu füllen.
 
Zuletzt bearbeitet:
Oder einfach per Makro ;)

Dim zelle(0 To 1) As Integer
Dim x As Integer

Sub Makro1()

zelle(0) = Selection.Row
zelle(1) = Selection.Column

Dim check As Integer: check = 1

Do While check = 1

x = 0

If Cells(zelle(0), zelle(1)) = "" Then
x = 4
If Cells(zelle(0), zelle(1) + x) <> "" Then
x = 4
move
Else
x = 8
If Cells(zelle(0), zelle(1) + x) <> "" Then
x = 8
move
Else
check = 0
End If
End If
End If

zelle(0) = zelle(0) + 1

Loop

End Sub

Private Sub move()
Dim counter As Integer
For counter = 0 To 3
Cells(zelle(0), zelle(1) + counter) = Cells(zelle(0), x + counter + zelle(1))
Cells(zelle(0), x + counter + zelle(1)) = ""
Next
End Sub


Das in ein einziges Modul einfügen (am Besten alles andere aus dem Modul rauslöschen, falls was drinne sein sollte).
Bei der Tabelle auf den ersten Wert ("links oben") klicken und dann das Makro ausführen.
Lässt sich natürlich noch optimieren :D
 
Zuletzt bearbeitet: (Kleiner Fehler behoben)
Zurück
Oben