Wie kann ich in Excel durch ein Makro Listen in eine zusammenfassen lassen?

Lieber Experte,

Ich habe eine Masterliste mit verschiedenen Spalten, bspw.
Name, Rufnummer, Adresse, …. Diese wird momentan von verschiedenen Leuten befüllt. Jetzt möchte ich aber, dass jeder dieser Leute seine eigene Liste mit den gleichen Spalten hat und diese dann auf Knopfdruck in einer Masterliste zusammengeführt werden können.
Ich habe mir das so vorgestellt, dass ich ein Tabellenblatt mit der Masterliste habe und dann noch Tabellenblätter für die einzelnen Bearbeiter, also bspw. Anne, Stefan, … Nun benötige ich also ein Makro, das zuerst die Masterliste scannt, wo die erste nichtleere Zeile ist. Diese wird als Zeile „Start“ definiert. Dann scannt es das erste Bearbeiterblatt (z.B. „Anne“, das ja genau die gleichen Spalten hat wie die Masterliste) danach ab, wo die erste nichtleere Zeile ist, dann wird „Stop“ als diese Zeile -1 definiert. Dann werden aus diesem Tabellenblatt alle Zeilen von 2 (Zeile 1 sind die Tabellenüberschriften) bis Zeile „Stop“ kopiert und in die Masterliste eingefügt. Und so geht es dann auch mit den anderen Bearbeiterlisten weiter.
So weit so gut, habe ich mir alles ganz einfach vorgestellt aber das ist es irgendwie doch nicht^^

Sub Tabellenzusammenführen()

Dim start As Integer, stopp As Integer

If Sheets(„Masterliste“).Range(„A1:A200“).Value = " " Then start = row

If sheets („Anne“) .Range(A1:A200") .Value = " " then stop = row

Sheets(„Anne“).Select
Rows(„2:stop“).Select
Selection.Copy
Sheets(„Masterliste“).Select
Row(„start“).Select
ActiveSheet.Paste

End Sub

Ich weiß, das ist alles ziemliches gestümper, aber ich weiß iwie gar nicht, wie ich das richtig machen kann. Kannst du mir bitte bitte helfen, wie ich da weiterkommen könnte? Besonders wie man die Spalten richtig benennt usw.?
Vielen, vielen Dank

Gruß
Melanie

Hallo Pinguin,

der entscheidende Fehler ist das du jede Zeile scannen musst mit einer schleife und keinen Range verwenden kannst. Die meisten Makro Probleme lassen ganz einfach lösen, dazu wäre interessant warum jeder Bearbeiter ein extra Blatt bekommt? Sollen die Daten aus masterliste Und der jeweiligen Liste verglichen werden ob sich etwasverändert hat Oder einfach unten angefügt werden?

Sry für die Tippfehler bin Gerarde unterwegs kannst du mir bitte noch ein paar Infos zur Sachlichkeit geben danke

Hallo Melanie,

ist Deine Frage noch akut?

Das Zusammenführen sollte überhaupt kein Problem sein. Falls Du das Problem noch nicht gelöst hast, schicke mir einfach mal Deine Datei, ich kann Dir das recht schnell einbauen. Du kannst auch gerne die Daten vorher entfernen - mir langt der Tabellenaufbau.

Allerdings bin ich heute temporr in Besprechungen unterwegs, weiß also nicht, wie schnell ich reagieren kann.

Gruß, Manfred

Grüezi Melanie

Sorry, ich liege mit einer gröberen Infektin darnieder und kann dir daher momentan nicht weiterhelfen.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Melanie!

Ich komme leider momentan nicht dazu, das Problem zu lösen. Falls die Sache noch bis zum Wochenende oder Anfang/Mitte nächster Woche Zeit hat, kann ich gerne helfen!

Schöne Grüße!

flocko

Hallo Flocko,

vielen vielen Dank, aber das Problem ist schon gelöst:smile:.

Liebe Grüße
Melanie

Hallo Thomas,

oh, das tut mir leid, dann wünsche ich dir natürlich gute Besserung.
Aber das Problem ist gott sei dank auch schön gelöst :smile:.

liebe grüße
Melanie

Option Explicit

Sub Tabellenzusammenfuehren()

Dim wksMaster, wksEditor As Worksheet
Dim lngLastRowMaster As Long

'Masterliste definieren
Set wksMaster = ThisWorkbook.Sheets("Masterliste")

'Für jedes Worksheet
For Each wksEditor In ThisWorkbook.Worksheets

 'Ausser wenn es genauso heißt wie die Masterliste
 If wksEditor.Name wksMaster.Name Then

 'kopiere Zeilen 2 bis erste leere Zeile
 With wksEditor
 .Rows("2:" & FirstEmptyRow(wksEditor) - 1).Copy
 End With

 'Suche erste leere Zeile in Masterliste
 lngLastRowMaster = FirstEmptyRow(wksMaster)

 'Einfügen der Zwischenablage in erster leerer Zeile
 With wksMaster
 Range(.Cells(lngLastRowMaster, 1), .Cells(lngLastRowMaster, 1)).PasteSpecial xlPasteValues
 End With
 End If
'Nächstes Worksheet
Next wksEditor

Application.CutCopyMode = False
End Sub

Function FirstEmptyRow(ByVal wks As Worksheet) As Long
 With wks.UsedRange
 FirstEmptyRow = CStr(.Row + .Rows.Count)
 End With
End Function

Hallo Assel mit Rassel :wink:,

vielen Dank für deine Hinweise, ich konnte das jetzt auch wirklich ganz einfach mit einer for-next-schleife lösen :smile:.
Es ging bei der Tabelle darum, dass jeder eine eigene Tabelle hat und sie schützen kann, damit keiner behaupten kann, dass jemand anders etwas daran geändert hat (paranoid, wenn du mich fragst :smiley:)und die Daten aber danach trotzdem noch einmal in einer Liste komplett zusammengefügt sind.

Dankeschön für deine Hilfe!

lg
Melanie

Dankeschön, es hat sich toller weise schon eine Lösung gefunden.
VBMicha hat mir das Ganze mit einer for-next-schleife gelöst und das funktioniert wunderbar,
aber vielen dank für deine antwort :smile:.

lg
Melanie

Dankeschön Flockxe,

ich werde gleich morgen einmal ausprobieren, ob das bei meiner Liste auch funktioniert. Vielen vielen Dank!

lg
Melanie