HERBERS Excel-Forum - das Archiv

Thema: Aus einem Datensatz bestimmte Zeile kopieren

Aus einem Datensatz bestimmte Zeile kopieren
Armagan61
Hallo zusammen,

ich habe folgendes Problem:

Ich habe 8 verschiedene Excel Tabellen (zu jedem Mitarbeiter einzeln)
und einen großen Datensatz aus ca. 400 Zeilen pro Monat zu Eingangsrechnungen.

Jedes Projekt hat ein eigenes Arbeitsblatt bei dem jeweiligen Mitarbeiter. Dort wird u.A. die Projektnummer stehen.

Ich möchte, dass in jedes einzelne Arbeitsblatt, wenn die Projektnummer zutrifft, er sich die komplette Zeile aus dem Datensatz zieht und diese in eine bestimmte Zeile in dem Arbeitsblatt kopiert.

https://www.herber.de/bbs/user/168702.xlsx Hier wäre ein Beispiel

Zusammengefasst, wenn aus dem Datensatz die Spalte Kostenträge mit der Projektnummer aus den einzelnen Blätter übereinstimmt, dann kopiere die Zeile in das einzelne Arbeitsblatt :)

DANKE!!
AW: Aus einem Datensatz bestimmte Zeile kopieren
Oberschlumpf
Hi,

und in den Zellen A1 steht wirklich immer das Wort "Projektnummer" und eine Zahl drin?
Wieso stehen Wort und Zahl nicht getrennt voneinander in 2 Zellen nebeneinander?
Wenn du dich in der Bsp-Datei "geirrt" hast, dann zeig bitte eine korrigierte Bsp-Datei.

Ciao
Thorsten
AW: Aus einem Datensatz bestimmte Zeile kopieren
Armagan61
https://www.herber.de/bbs/user/168703.xlsx

Sorry ! Es ist getrennt. Hab das Beispiel nochmal neu hochgeladen.

AW: Aus einem Datensatz bestimmte Zeile kopieren
Oberschlumpf
Hi,

hier, versuch mal...
https://www.herber.de/bbs/user/168704.xlsm

Nach deinen Wünschen werden die passenden Datensätze aus Blatt "Datensatz" in die unterschiedlichen Projekt-Blätter verteilt. Projekt 15 erhält keine Datensätze, da Projektnr nicht in "Datensatz" enthalten ist.

Beachte alle Kommentare im Code.

Hilfts?

Ciao
Thorsten
AW: Aus einem Datensatz bestimmte Zeile kopieren
Oberschlumpf
hmm, du musst nich antworten, aber es wär schon cool, wenn du es mal tun würdest... :-/
AW: Aus einem Datensatz bestimmte Zeile kopieren
Armagan61
Hey! Sorry, dadurch, dass ich ein VBA Neuling bin, habe ich erst versucht den Code zu verstehen.

Das Funktioniert im ersten Schritt sehr gut, jedoch habe ich ein paar Rückfragen.

Jede Woche kommen neue Daten in den Reiter "Datensatz", bei dem aktuellen Code läuft er alle Blätter durch und es wird bei mir nicht geprüft, ob der Datensatz schon vorhanden ist. Wenn ich eine Schaltfläche erstelle zum abrufen der Daten, wächst die Tabelle in den einzelnen Projektblättern mit den selben Daten.

Bei dem Kommentar 'bestimme im gerade geprüften Blatt (Projekt 14, 15 oder 16) die nächste, freie Zeile in Spalte A = kann ich hier eine andere Zeile bestimmen? Bzw. andere Spalte?

Bei meinen vorgefertigten Tabellen habe ich schon für 500 Projekte diese vorbereitet, sodass die Excel Tabelle Grundsätzlich sehr groß ist. Ich vermute, dass das abrufen aus dem Datensatz länger dauert, oder?



AW: Aus einem Datensatz bestimmte Zeile kopieren
Oberschlumpf
Hi,

du solltest aber mit dem Antworten auch deswegen nicht zu lange warten, weil jeder Beitrag ab Erstelldatum nach ca 1 Woche ins Forums-Archiv verschoben wird.
Dann ist Antworten nicht mehr möglich, auch, wenn noch nicht alle Fragen beantwortet sind.
Dann musst du so oft neue Beiträge erstellen, bis all deine Fragen beantwortet sind (wenn du immer so lange mit Antworten wartest wie jetzt).

So, nun zu deinen neuen Fragen:

1) "...und es wird bei mir nicht geprüft, ob der Datensatz schon vorhanden ist..."
Ja, da hast du recht. Ich hatte nicht berücksichtigt, dass ja alle Datensätze immer wieder übertragen werden, wenn mein Makro mehrmals durchgeführt wird. Tut mir leid.

Meine heutigen Versuche, zu kontrollieren, dass jeder Datensatz - nur einmal - in das jeweilige Blatt übertragen wird, funktioniert bis jetzt noch nicht, weil...
...ich benötige im Blatt "Datensatz" mindestens 1 Spalte, in der auf jeden Fall immer! unterschiedliche Werte stehen.

Ist es denn in deiner Originaldatei auch so, dass sich die Werte in den Spalten "Beleg" und "Fremdbeleg" auch wiederholen, oder hast du in der Bsp-Datei die selben Werte nur kopiert + eingefügt, weil es halt einfacher ist, wenn man "nur" eine Bsp-Datei erstellt?

Wenn sich auch im Original die Werte in den Spalten "Beleg" und "Fremdbeleg" tatsächlich wiederholen können, dann muss ich weiter nachdenken, um eine Lösung zu finden.
Wenn es aber - immer - unterschiedliche Werte in den Spalten "Beleg" und "Fremdbeleg" gibt, dann zeig uns bitte per Upload eine neue Bsp-Datei mit korrigierten Werten in den Spalten "Beleg" und "Fremdbeleg".

2) "...die nächste, freie Zeile in Spalte A = kann ich hier eine andere Zeile bestimmen? Bzw. andere Spalte?..."
Die von mir ermittelte nächste, freie Zeile in Spalte A bezieht sich immer auf das jeweilige Projekt-Blatt, weil in allen Projekt-Blättern die Datenzeilen immer in Spalte A für "Kostenträger" beginnen.

Wenn du in deiner Originaldatei für die Projekt-Blätter andere Spalten als in der Bsp-Datei benutzt, dann - musst du! - bitte per Upload eine korrigierte Bsp-Datei zeigen, in der die selben Spalten wie im Original benutzt werden.
Denn fast jeder VBA-Code ist tatsächlich so etwas wie maßgeschneidert, also immer wieder auf die verwendete Datei zeilen- und spaltengenau angepasst.

Oder erklär mir mal, wieso du anstelle von A eine andere Spalte bestimmen willst.

3) "...Ich vermute, dass das abrufen aus dem Datensatz länger dauert, oder?..."
Da es sich ja nur um eine Datei handelt (zumindest hast du uns ja auch nur 1 Bsp-Datei mit vielen Blättern gezeigt), wird diese beim Öffnen mit allen Daten in den Arbeitsspeicher des Computers geladen.
So lange genug Arbeitsspeicher vorhanden ist, spielt die Größe der Datei keine Rolle.
Mein Code bezieht sich nur auf diese eine Datei, die schon geöffnet ist, bevor der Code ausgeführt wird.
Daher ist es egal, ob die Datei lokal auf der Festplatte gespeichert ist oder ob sie aus dem Netzwerk geladen (geöffnet) wird.

So, habe fertig mit Beantworten deiner Fragen. Nun freu ich mich auf deine Antworten zu meinen Fragen.

Ciao
Thorsten
AW: Aus einem Datensatz bestimmte Zeile kopieren
Armagan61
Hallo Thorsten,

danke für deine Nachricht.

Zu 1)
Zu jeder Eingangsrechnung gibt es eine Belegnummer, dies ist im Datensatz die Spalte D, jedoch ist es so, wenn eine Eingangsrechnung Bsp. zu zwei Projekten aufgeteilt werden muss, dann steht der Wert Doppelt dort. Die Belegnummer setzt das System selber, Aufgebaut ist die Nummer wie folgt: ER24040126 ER für Eingangsrechnung,
24 für das Jahr 04 für den Monat, 126 für die Belegnummer 126. Jedoch kommt es im Monat nicht so oft vor, dass eine Eingangsrechnung auf zwei Projekte aufgeteilt werden muss. Wenn eine Eingangsrechnung auf zwei Projekte aufgeteilt wird, dann steht dort alles doppelt, außer der Netto, Steuer und Bruttowert, dies wird dann Aufgeteilt, jedoch kann es vorkommen, dass eine Eingangsrechnung z.B. über 1000 Euro Brutto 50% 50% aufgeteilt wird, dann ist es tatsächlich doppelt. Hier könnte ich ggf. dies noch Manuell filtern und in die Datensätze übertragen, wichtig für mich wäre, dass der Rest nicht doppelt erscheint, weil so oft kommt es nicht vor.

Zu 2)
In meiner Tabelle stehen in den Arbeitsblättern die Tabelle Eingangsrechnung, bzw. das zu übertragende Feld an einer anderen Stelle. Ich habe dir nochmal ein Beispiel hochgeladen. https://wetransfer.com/downloads/b7ca85dcb8b0a0fea3e63849e88cf3ca20240416083854/937fecd77b47f96e65635d852e5abe9520240416083927/6e4dfe
Leider ist die Datei größer als 600 KB, wenn es nicht gewünscht ist, dass wetransfer benutzt wird, lösche ich die Datei sofort.

Zu 3)
Tatsächlich ist es so, dass ein Mitarbeiter ca. 200-400 Projekte pro Jahr bei uns bedient. Wir haben aus dem Grund die Tabelle schon so vorbereitet, dass 500 Arbeitsblätter in der Tabelle vorbereitet sind Blanko. Ich hatte das Makro in der Tabelle ausgeführt, was beim Laden schon zu Fehler geführt hatte bzw. Absturz, deshalb bin ich mir unsicher ob VBA hier zu einer Lösung bei mir verhilft.

Danke für deine Mithilfe !

Gruß
AW: Aus einem Datensatz bestimmte Zeile kopieren
Oberschlumpf
Hi,

nun versteh ich gar nix mehr! :-/

Deine zuerst gezeigte Bsp-Datei hat so gar nix mit der jetzigen Datei zu tun!

Zitat: "Ich hatte das Makro in der Tabelle ausgeführt, was beim Laden schon zu Fehler geführt hatte..."

DAS ist auch kein Wunder!!!
In der neu gezeigten Datei gibt es kein Blatt mit dem Namen Datensatz (so heißt eins der Blätter in der zuerst gezeigten Bsp-Datei, in der auch n paar Bsp-Datenzeilen enthalten sind, die auf die Projekt-Blätter verteilt werden sollen...UND...in der Bsp-Datei auch korrekt verteilt werden! (wenn man außen vor lässt, dass ich vergessen hatte, dass jede Datenzeile dem richtigen Projektblatt nur 1x zugeordnet wird)

Und, was ich, ehrlich gesagt, "ganz doof" finde: Bitte WO in der gezeigten neuen Datei sind denn Bsp-Datenzeilen, die den Projektblättern zugeordnet werden sollen??????

Und ja, du hast recht: In der Bsp-Datei werden toootaal ganz andere Zeilen/Spalten genutzt als in der neuen Datei!!!

Ein weiterer Grund, wieso es kein Wunder ist, dass der Code zum Absturz führt.

Ich versuche dir noch 1x zu helfen.

Dafür brauch ich bitte folgendes:

- eine neue Bsp-Datei, aber bitte mit nur Projektblättern "1" bis "10"
- genügend!!! Bsp-Datenzeilen, die in die Projekte 1 bis 10 verteilt werden sollen
- und natürlich: nenn mir den Namen des Blattes, in dem die Datenzeilen für 1 bis 10 enthalten sind

Ich kann verstehen, dass du noch nich so der Freund von VBA bist, weil du dich selbst damit ja noch nicht auskennst.
Ich selbst bin aber nicht so der Freund von Formeln; wobei diese natürlich wirklich "mächtig" sein können und Grosses in Excel bewirken....aber ich mach halt lieber alles in VBA.

Wenn du also doch lieber ne Formellösung haben willst, dann musst du einen neuen Beitrag erstellen, der natürlich gleich sofort eine - passende - Bsp-Datei MIT Bsp-Datenzeilen enthält.

Ciao
Thorsten
AW: Aus einem Datensatz bestimmte Zeile kopieren
Armagan61
Hallo Thorsten,

entschuldige, ich hatte in der Blanko vergessen das Arbeitsblatt "Datensatz" hinzuzufügen. Ich hatte es bei meinem Test selbstverständlich mit den Bedingungen wie in der 1. Beispieldatei versucht.

Ich habe nun 10 Reiter, von 1-10 hinzugefügt. Das Arbeitsblatt Datensatz befindet sich ebenfalls dort. Die Daten aus Datensatz sollen in den einzelnen Blättern ab E70 erscheinen. Aus dem Datensatz ist die Projektnummer als Bezugsquelle für die einzelnen Arbeitsblätter.

https://www.herber.de/bbs/user/168794.xlsm

Danke dir vorab.

Gruß
AW: Aus einem Datensatz bestimmte Zeile kopieren
Oberschlumpf
Hi,

so, hier, versuch mal...
https://www.herber.de/bbs/user/168817.xlsm

In der neuen Bsp-Datei werden im Blatt "Datensatz" wieder alle Projektnummern, diesmal in Spalte J, in allen Projektblättern - 1 bis 10 - gesucht.
Wenn gefunden, jeweils auf die einzelnen Projektblätter 1 bis 10, ab Zeile 70, in die Spalten E bis P verteilt.

UND bei erneutem Ausführen des Makros werden schon vorhandene Datensätze in Projektblättern - nicht - erneut eingetragen = jeder Datensatz existiert in jedem Projektblatt nur einmal...wie gewünscht...und natürlich..genau so soll es sein!

Ich hab es mehrmals getestet. In der Bsp-Datei funktioniert es bestens!

Hilfts?

Ciao
Thorsten
AW: Aus einem Datensatz bestimmte Zeile kopieren
Oberschlumpf
bitte noch antworten, bevor der Beitrag im Archiv ist
AW: Aus einem Datensatz bestimmte Zeile kopieren
Armagan61
Hallo Thorsten,

besten Dank. Hat genau so Funktioniert wie ich es wollte und spart mit sehr viel Arbeit für die Zukunft!!!

Gruß