Datenverschiebung von zeilen in Spalten

Excel 2007

In Spalte C stehen die Namen von Mitgliedern.
Diese Mitglieder sind alphabetisch sortiert.

Diese Mitglieder sind in einer unterschiedlichen Anzahl in der Tabelle vorhanden, stehen aber sortiert immer direkt untereinander.

In der Spalte A befinden sich unterschiedliche Merkmale dieser Mitglieder, pro Zeile aber immer nur ein Merkmal.

Ich möchte die Tabelle jetzt so eingerichtet haben, daß jedes Mitglied in der Tabelle nur einmal vorkommt und die Merkmale ab der Spalte I stehen, als hintereinander.

Die Merkmale aus Spalte A sollen also von der ersten Zeile in die Spalte I wandern, das zweite Merkmal eine Zeile tiefer soll in die Spalte J wandern, u.s.w., bis in der Zeile ein anderes Mitglied kommt.

Danke!!

Hallo Uwe,

Excel 2007
In Spalte C stehen die Namen von Mitgliedern.
Diese Mitglieder sind alphabetisch sortiert.
Diese Mitglieder sind in einer unterschiedlichen Anzahl in der
Tabelle vorhanden, stehen aber sortiert immer direkt
untereinander.
In der Spalte A befinden sich unterschiedliche Merkmale dieser
Mitglieder, pro Zeile aber immer nur ein Merkmal.

Wenn also in C alphabetisch sortiert, aber mehrere Merkmale, dann würde ein Mitglied mit bspw. drei Merkmalen dadurch kennzeichnen, dass es für dieses Mitglied drei Zeilen mit jeweils unterschiedlichen Einträgen in Spalte A gibt. Habe ich das richtig erfasst?

Ich möchte die Tabelle jetzt so eingerichtet haben, daß jedes
Mitglied in der Tabelle nur einmal vorkommt und die Merkmale
ab der Spalte I stehen, als hintereinander.

Ist das eine einmalige Aktion, oder könnte sich der Vorgang ggf. von Zeit zu Zeit wiederholen?

Die Merkmale aus Spalte A sollen also von der ersten Zeile in
die Spalte I wandern, das zweite Merkmal eine Zeile tiefer
soll in die Spalte J wandern, u.s.w., bis in der Zeile ein
anderes Mitglied kommt.

Das ist wohl eine klassische Schleife. Gib mir Bescheid, ob ich das Problem korrekt erfasst habe. Da lässt sich sicher 'n schickes Makro stricken.

Danke!!

Da nich für.
MfG MwieMichel

Hallo Uwe, Excel 2007
In Spalte C stehen die Namen von Mitgliedern.
Diese Mitglieder sind alphabetisch sortiert.
Diese Mitglieder sind in einer unterschiedlichen Anzahl in der
Tabelle vorhanden, stehen aber sortiert immer direkt
untereinander.
In der Spalte A befinden sich unterschiedliche Merkmale dieser
Mitglieder, pro Zeile aber immer nur ein Merkmal.
Wenn also in C alphabetisch sortiert, aber mehrere Merkmale, dann würde ein Mitglied mit bspw. drei Merkmalen dadurch kennzeichnen, dass es für dieses Mitglied drei Zeilen mit jeweils unterschiedlichen Einträgen in Spalte A gibt. Habe ich das richtig erfasst?

Ja.

Ich möchte die Tabelle jetzt so eingerichtet haben, daß jedes
Mitglied in der Tabelle nur einmal vorkommt und die Merkmale
ab der Spalte I stehen, als hintereinander.
Ist das eine einmalige Aktion, oder könnte sich der Vorgang ggf. von Zeit zu Zeit wiederholen?

Es ist eine einmalige Aktion.

Die Merkmale aus Spalte A sollen also von der ersten Zeile in
die Spalte I wandern, das zweite Merkmal eine Zeile tiefer
soll in die Spalte J wandern, u.s.w., bis in der Zeile ein
anderes Mitglied kommt.

Ja.

Das ist wohl eine klassische Schleife. Gib mir Bescheid, ob ich das Problem korrekt erfasst habe.

Ja.

Da lässt sich sicher 'n schickes Makro stricken. Danke!! … mehr auf http://w-w-w.ms/a478ye

Hallo Uwe,
hast Du VBA-Erfahrung? Wenn ja, dann weiter zur Sub, wenn nein hier ‚ne Kurzanleitung:
Leg zum Testen eine Kopie Deiner Datei an. Die öffnest Du. Mit Alt + F11 (gleichzeitig) kommst Du in die „Entwicklungsumgebung“.
Links unter Menü- und Symbolleiste ist der Projektexplorer. Hier markierst Du Deine Datei (Linksklick). Mit Einfügen // Modul erzeugst Du den Kontainer für die Subroutine.
Den Text der Subroutine unten kopierst Du rechts in das leere Code-Fenster.
Mit Alt + F11 gehts wieder zurück zu Excel.
Mit Alt + F8 kannst Du Makros ausführen. Evtl. unter Makros in: „Diese Arbeitsmappe“ auswählen. Oben sollte die Routine „MitMerkmal“ zur Auswahl stehen. Die wählst Du aus und Klick auf Ausführen.
Die Texte in der Subroutine nach dem Hochkomma "‘" sind Kommentare, für den Fall dass Du was ändern oder Dich mit VBA beschäftigen möchtest.

Hier die Subroutine

Option Explicit
’ Start Subroutine
Sub MitMerkmal()
’ Variablen
Dim MG As String, MM As String, Test As String
Dim Z As Integer, S As Integer
’ Vorbelegen
Z = 2 ’ Die erste Zeile sei eine Kopzeile
S = 9 ’ Merkmal ab Spalte I
MG = Cells(Z, 3).Value ’ Mitglied aus Spalte C
MM = Cells(Z, 1).Value ’ Merkmal aus Spalte A
’ Start der äusseren Schleife
Do Until MG = „“ ’ Wiederhole bis Zelle leer ist
Cells(Z, S).Value = MM ’ Merkmal eintragen
Z = Z + 1 ’ zur nächsten Zeile
Test = Cells(Z, 3).Value ’ Mitglied einlesen
If Test = „“ Then Exit Sub
’ Start der inneren Schleife
Do Until Test MG ’ solange bis unlgeich
MM = Cells(Z, 1).Value ’ neues Merkmal lesen
Z = Z - 1 ’ Zeile zurück
S = S + 1 ’ dann Spalte weiter
Cells(Z, S).Value = MM ’ neues Merkmal eintragen
Z = Z + 1 ’ in kopierte Zeile
Rows(Z).Delete Shift:=xlUp ’ Zeile löschen
Test = Cells(Z, 3).Value ’ Testmitglied neu belegen
Loop ’ Ende der inneren Schleife
MG = Cells(Z, 3).Value ’ Mitglied und
MM = Cells(Z, 1).Value ’ Merkmal neu belegen
S = 9 ’ zurück in Anfangspalte für Merkmal
Loop ’ Ende der äusseren Schleife
End Sub

Ggf. musst Du Sicherheitseinstellungen ändern, damit Du Makros ausführen kannst. Wenn das Ergebnis gefällt, Spalte A löschen fertig.

MfG MwieMichel

Hat funktioniert.
Vielen Dank!!!

Formellösung ohne Vba

In Spalte C stehen die Namen von Mitgliedern.
Diese Mitglieder sind alphabetisch sortiert.
Diese Mitglieder sind in einer unterschiedlichen Anzahl in der
Tabelle vorhanden, stehen aber sortiert immer direkt
untereinander.

In der Spalte A befinden sich unterschiedliche Merkmale dieser
Mitglieder, pro Zeile aber immer nur ein Merkmal.

Ich möchte die Tabelle jetzt so eingerichtet haben, daß jedes
Mitglied in der Tabelle nur einmal vorkommt und die Merkmale
ab der Spalte I stehen, als hintereinander.

Hallo Uwe,
nachstehend eine Tabelle, aus Darstellungsgründen habe ich
nicht I genommen sondern D, aber ist für die Formeln wurscht.
Wenn du bei deiner Tabelle dann meine Formeln aus D/E in I/J
bei dir eingetragen hast, in I1 ^ J1 reicht, ist nach unten kopierbar.
mußt du sowas sehen wie in der gezeigten tabelle.

Dann sortierst du einfach alles nach Spalte J, die wo in
J False steht kannste dann leicht als Block löschen
So, dann die Spalte J falls nötig löschen und die Zellen in
I mit Daten—TextinSpalten umwandeln, Trenungszeichen das
leerzeichen. geht schneller als beschrieben.

Brauchste das häufig kann man genau das was du da manuell machst durch
Vba-Code erledigen lassen. Der prinziüiell genau das gleiche
macht. Ist viel schneller als eine Schleife über Zellen in Vba.

Tabellenblatt: [Mappe1]!Tabelle1
 │ A │ B │ C │ D │ E │
───┼────┼───┼───────┼─────────────┼────────┤
 1 │ 1a │ │ Name1 │ 1a 1b 1c │ WAHR │
───┼────┼───┼───────┼─────────────┼────────┤
 2 │ 1b │ │ Name1 │ 1b 1c │ FALSCH │
───┼────┼───┼───────┼─────────────┼────────┤
 3 │ 1c │ │ Name1 │ 1c │ FALSCH │
───┼────┼───┼───────┼─────────────┼────────┤
 4 │ 2a │ │ Name2 │ 2a 2b │ WAHR │
───┼────┼───┼───────┼─────────────┼────────┤
 5 │ 2b │ │ Name2 │ 2b │ FALSCH │
───┼────┼───┼───────┼─────────────┼────────┤
 6 │ 3a │ │ Name3 │ 3a 3b 3c 3d │ WAHR │
───┼────┼───┼───────┼─────────────┼────────┤
 7 │ 3b │ │ Name3 │ 3b 3c 3d │ FALSCH │
───┼────┼───┼───────┼─────────────┼────────┤
 8 │ 3c │ │ Name3 │ 3c 3d │ FALSCH │
───┼────┼───┼───────┼─────────────┼────────┤
 9 │ 3d │ │ Name3 │ 3d │ FALSCH │
───┼────┼───┼───────┼─────────────┼────────┤
10 │ 4a │ │ Name4 │ 4a │ WAHR │
───┼────┼───┼───────┼─────────────┼────────┤
11 │ 5a │ │ Name5 │ 5a 5b │ WAHR │
───┼────┼───┼───────┼─────────────┼────────┤
12 │ 5b │ │ Name5 │ 5b │ FALSCH │
───┴────┴───┴───────┴─────────────┴────────┘
Benutzte Formeln:
D1 : =WENN(C1=C2;A1&" "&I2;A1)
D2 : =WENN(C2=C3;A2&" "&I3;A2)
D3 : =WENN(C3=C4;A3&" "&I4;A3)
usw. in D

E1 : =VERGLEICH(C1;C:C;0)=ZEILE()
E2 : =VERGLEICH(C2;C:C;0)=ZEILE()
E3 : =VERGLEICH(C3;C:C;0)=ZEILE()
usw. in E

A1:E12
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Gruß
Reinhard