Daten einer Excel-Tabelle neu anordnen

Lieber Excel-Experte,

für die Datenzusammenführung bei InDesign benötige ich eine spezielle Anordnung, die ich möglichst automatisch erzeugen möchte.

Gegeben sind Datensätze mit den Inhalten: „Vorname, Name, Ort usw.“. Dieser Datensatz sei die Personenbeschreibung 1 (P_1). Die folgenden seien P_n+1.

Üblicherweise stehen diese Datensätze jeweils in einer Zeile.
Zeile 1: Überschriften
Zeile 2: P_1
Zeile 3: P_2
usw.

Das Ziel ist nun folgendes:
Zeile 1: Überschriften
Zeile 2: Spalte a: P_1 Spalte n: P_2
Zeile 3: Spalte a: P_3 Spalte n: P_4
usw.

Aus den ursprünglichen Überschriften werden dann „Vorname_1, Name_1, Ort_1 …“ und „Vorname_2, Name_2, Ort_2 …“

Zum Nachvollziehen ein Beispiel mit Daten (Komma trennt Spalte):
Vorher:
Zeile 1: Anna, Müller, Bonn
Zeile 2: Berta, Meyer, Berlin
Zeile 3: Klaus, Schulze, Hamburg
Zeile 4: Dieter, Schröder, Köln
usw.
Nachher:
Zeile 1: Anna, Müller, Bonn, Berta, Meyer, Berlin
Zeile 2: Klaus, Schulze, Hamburg, Dieter, Schröder, Köln

Ich hoffe, das Problem ist verständlich dargestellt. Ich habe i.d.R. 200 - 500 Datensätze, die ich auf diese Art und Weise sortieren muss. Eine Automatik lohnt sich deshalb bestimmt. Auch die Anzahl der einzelnen Kriterien ist wesentlich länger.

Ich freue mich auf einen regen Wissensaustausch.

Viele Grüße aus dem Emsland
Maik

Das geht sicherlich, aber ich weiß auch nicht wie.
Gruß
Mike

Hallo Maik,

bin leider kein „Experte“ - woher mir diese Ehre zugeschrieben wird ist mir unklar. Bitte an jemand anderen wenden.

Frohe Ostern, Michael L.

… mehr auf http://www.wer-jeweils in einer Zeile.

Ich freue mich auf einen regen Wissensaustausch.

Viele Grüße aus dem Emsland
Maik

Hallo Maik,
eine gänzliche Automatisierung mit Makros kann ich Dir leider nicht bieten.
versuche es einmal auf folgende Weise:

=zelle1&" ,"&zelle2&" ,"&Zelle3& usw. usw.

Dabei steht das & für Textverbindung und das " ," zum Kommata setzen!

Ergebnis:  Anna, Müller, Bonn ,Berta, Meyer, Berlin ,Klaus, Schulze, Hamburg

Grüße aus dem Sauerland 

Karl-Heinz

Hallo Karl-Heinz,

vielen Dank für den Tipp. Ich kenne die Technik.

Leider komme ich auf diesem Weg nicht zum Ziel. Ich benötige zwei Datensätze nebeneinander, nicht alle. Und die sollen dann in den Spalten angeordnet sein.

Bei deinem Ansatz stünden alle Werte in einer Zelle.

Das ist nicht die Lösung. Schade, aber Danke für die Mühe.

Viele Grüße
Maik

Danke für deine Antwort, Mike,

die Frage hat es auch in sich :smile:

Ein Programmierer könnte sicher die Zeilen auslesen und zu je zwei Datensätzen pro Zeile wieder zusammenfügen. Aber das sollte auch ohne Programmierung gehen.

Viele Grüße
Maik

Das geht sicherlich, aber ich weiß auch nicht wie.
Gruß
Mike

Hallo Michael,

vielen Dank für deine Antwort und auch dir noch eine gute Osterwoche.

Maik

Hallo
Ich kenne InDesign nicht. In Excel kannst Du aber diese Daten wie folgt Verknüpfen:

  1. gehe in eine leere zelle und füge dort eine Formel ein. (Alle Folmeln beginnen mit dem Zeichen „=“.

= A1 & ", " & B2 & ", " & $C$1

Was macht die Formel?
Sie nimmt die Werte aus A1, B1 und immer aus C1.
Wenn die Formel nach unten kopiert wird, bleibt C1 in der Formel bestehen, während sich z.B. die A1 nach A2 umwandelt.
Schaue noch auf den Befehl WENN.

Grüsse Sebastian

Hallo Sebastian,

vielen Dank für deine Antwort. Wenn ich das Ergebnis in eine Zelle schreiben wollte, dann wäre das ein Lösungsansatz. Aber ebenso wie Karl-Heinz’s Antwort hast du möglicherweise übersehen, dass das Komma die Spalte trennen soll.

Das Ziel ist ja, dass ich aus einer einspaltigen Tabelle eine zweispaltige Tabelle machen möchte.

Muster:
Vorhanden: (übliche Listen auch in Datenbanken)
|Person_0|
|Müller |
|Meier |
|Schulze |

Neu: (neue Liste in zwei Spalten)
|Person_1|Person_2|
|Müller |Meier |
|Schulze |… |
usw.

Ich sehe die Lösung bei deinem Vorschlag noch nicht.

Viele Grüße aus dem Emsland

Maik

Hi Malk
unter VBA wäre es die Funktion Split. Diese gibt es aber im Excel nach meinem Wissensstand als Formel nicht.
Deshalb mal ein alternativer, einfacher Ansatz:
Den Text in den Notepad Editor exportieren, alle Kommas duch nichts ersetzten, dann alles Markieren, Kopieren und in Excel einfügen.
Grüsse Sebastian

Hallo Sebastian,

vielen Dank für deine Bemühungen. Bisher haben sich die wenigsten Experten gemeldet.

Wenn du den Weg mit so vielen Spalten gehen möchtest, wie sie bei mir anfallen, dann würdest du sicher auch nach einer anderen Lösung weitersuchen. Die Notepad-Lösung ist zu Fehleranfällig (ich arbeite mit Ziffern, Zahlen, Datumangaben usw.).

Ein praktikabler Weg, den ich mir inzwischen erarbeitet habe, sieht folgendermaßen aus:

Ich kopiere die komplette Spalte (bezogen auf das beschriebene Muster) einfach in eine zweite Spalte und versetze sie um eine Zeile nach oben. Dadurch erhalte ich automatisch mein gewünschtes Muster - zumindest in jeder zweiten Zeile.

Die überflüssigen Zeilen kennzeichne ich mit einer zusätzlichen Spalte, die ich mit der Kennzahl 1 und 2 versehe (Reihe 1, 2, 1, 2…). Das geht ja fix und fast automatisch. Danach kann ich die Zeilen mit der Kennzahl 2 mit dem Excel-Filter ausblenden und habe das Ergebnis.

Diese Lösung ist schon recht elegant, weil sie sehr schnell und fehlerfrei funktioniert und das auch bei meinen Anforderungen.

Keine Ahnung, ob man diese Schritte automatisieren kann.

Soviel erst einmal auch für die Interessierten, die ein ähnliches Problem haben.

Viele Grüße aus dem Emsland

Maik

Hallo, Ist denn dein trennzeichen immer ein Komma?
Grüsse Sebastian

Hallo Sebastian,

die Daten aus der neu sortierten Tabelle übernehme ich nach InDesign entweder als Text (Tabstop-getrennt) oder csv-Datei (Zeichengetrennt). Das Zeichen kann ich wählen.

Ich persönlich ziehe die Textdatei mit Tabstops vor. Die macht bisher keine Probleme.

Die Kommas, das hatte ich ja geschrieben, symbolisierten nur die Spaltentrennung. Irgendwie muss ich das ja textalisch hier umschreiben.

Alle anderen Fakten hatte ich ja sehr genau dargestellt.

Am einfachsten ist es wohl, wenn ich eine Tabelle im Ist- und Sollzustand liefere. Wo soll ich die hinschicken?

Viele Grüße
Maik

Hallo, Ist denn dein trennzeichen immer ein Komma?
Grüsse Sebastian

Hallo Herr Ahrens,

es ging leider nicht früher, aber ich sende meine Idee der Vollständigkeitshalber noch.
Es sind sicherlich schon bessere Vorschläge gekommen.

Sub Persondaten()
Dim Zeilen As Integer
Dim x As Integer
Dim y As Integer
Dim a As String
Dim b As String
'Anzahl Zeilen ermitteln
Zeilen = Worksheets(„Tabelle1“).Cells(Rows.Count, 1).End(xlUp).Row
'Zeilenzähler Tabelle2 setzen
x = 1
'Schleife für Datenzusammenführung immer zwei Zeilen übertragen
For y = 2 To Zeilen Step 2
a = Worksheets(„Tabelle1“).Cells(y, 1) & " " & Worksheets(„Tabelle1“).Cells(y, 2) & " " & Worksheets(„Tabelle1“).Cells(y, 3)
Worksheets(„Tabelle2“).Cells(x, 1) = a
b = Worksheets(„Tabelle1“).Cells(y + 1, 1) & " " & Worksheets(„Tabelle1“).Cells(y + 1, 2) & " " & Worksheets(„Tabelle1“).Cells(y + 1, 3)
Worksheets(„Tabelle2“).Cells(x, 2) = b
'Zeile auf Tabelle2 erhöhen
x = x + 1
'nächsten zwei Zeilen auf Tabelle1 bearbeiten
Next y
'Spalten auf optimale Breite setzen
Worksheets(„Tabelle2“).Columns(„A:B“).Select
Worksheets(„Tabelle2“).Columns(„A:B“).EntireColumn.AutoFit
'Markierung entfernen
Cells(1, 1).Select
End Sub

Gruß Hugo

Wow - Hugo,

nein, es gibt gar keine praktikablen Lösungen. Ich habe eine eher mechanische gefunden (habe ich in einer der Antworten beschrieben), aber die vorgeschlagene Lösung ist schon sehr professionell und sicher praktikabel.

Ich werde mich in den nächsten Tagen damit auseinandersetzen, um die Schritte zu verstehen. Das bin ich Ihnen schuldig, bei so viel Mühe.

Vielen lieben Dank. Wenn ich noch Fragen habe, würde ich mich gerne noch einmal diesbezüglich bei Ihnen melden.

Viele Grüße aus dem Emsland

Maik

Sie können mir ja mal ein Beispiel per Mail senden an [email protected]

Grüsse Sebastian

Hallo,

so sollte es klappen:
Schreib Deine Ausgangsdaten in den Zellenbereich
von Tabelle1 von Range(A2:C500) und dann starte das
Makro (siehe unten).
Voraussetzung: es muss ein Blatt „Tabelle2“ existieren.
Du kannst aber alles individuell anpassen.

Sub sort()

letzteZeile_a = 17
letzteZeile_b = Int((letzteZeile_a / 2) + 1)

For i = 2 To 5 Step 2
Sheets(„Tabelle1“).Select
wert1a = Cells(i, 1).Value
wert2a = Cells(i, 2).Value
wert3a = Cells(i, 3).Value
wert1b = Cells(i + 1, 1).Value
wert2b = Cells(i + 1, 2).Value
wert3b = Cells(i + 1, 3).Value

Sheets(„Tabelle2“).Select
Range(„A1“).Value = „Vorname_1“
Range(„B1“).Value = „Name_1“
Range(„C1“).Value = „Ort_1“
Range(„D1“).Value = „Vorname_2“
Range(„E1“).Value = „Name_2“
Range(„F1“).Value = „Ort_2“

j = [A65536].End(xlUp).Row + 1

Cells(j, 1).Value = wert1a
Cells(j, 2).Value = wert2a
Cells(j, 3).Value = wert3a
Cells(j, 4).Value = wert1b
Cells(j, 5).Value = wert2b
Cells(j, 6).Value = wert3b

Next i
Range(„A1“).Select
End Sub

Gruß,
Ptonka