Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Das Update ist abgeschlossen, Ihr könnt unser Forum jetzt wieder wie gewohnt nutzen. Eventuelle Bugs und Auffälligkeiten postet Ihr bitte im entsprechenden Forum im Bereich Forumstechnik. x


Übertragung multipler Daten aus einer Datei in andere Dateien
#1
Hallo liebe Excel-Freunde,

ich bin neu hier im Excel-Forum und bedanke mich schon mal im Voraus für die Unterstützung, egal ob ihr mir helfen könnt oder nicht. Ich möchte einen Arbeitsprozess beschleunigen bzw. automatisieren um evtl. Zeit sparen zu können. Es geht um die Verknüpfung einer Hauptdatei (Testmappe_Test) mit anderen Dateien (Stundennachweis - Alex & Richard). In der Hauptdatei werden bei Personen (z.B. bei Maik oder Jason) Zeiten hinterlegt, wann diese bei z.B. bei Alex oder bei Richard (Reiter Menschen) gewesen sind. Diese Zeiten müssen am Ende des Monats stets umständlich von allerlei Menschen (je nachdem wer dort war) in andere Dateien (die Stundennachweise) eingetragen werden. Das kostet viel Zeit und Nerven. Nun meine Frage. Gibt es eine Möglichkeit, und wenn ja wie, dass Excel anhand des Namens der Personen (z.B. Maik oder Jason) erkennt, in welchen Stundennachweis die Zeiten eingetragen werden müssen und diese Zeiten (samt Datum) dann auch noch in die korrekten Zellen eingetragen werden? Das sind ziemlich viele Parameter die da zusammen spielen. Ich habe mich rudimentär damit auseinandergesetzt und bin über den XVERWEIS gestolpert, doch ich glaube, dass hier zu viele Parameter für den XVERWEIS zusammenspielen. Daher wende ich mich hier an euch, weil ich glaube bzw. hoffe hier Rat zu finden. Damit ihr nachvollziehen könnt was ich genau meine, habe ich euch die Dateien angehangen. Für detailiertere Informationen (ich habe mit Sicherheit paar Infos vergessen) einfach fragen. Ich versuche euch alles genau zu beschreiben. Vielen Dank schon mal.  Blush

VG Dschissl


Angehängte Dateien
.xlsx   Stundennachweis - Alex.xlsx (Größe: 12,94 KB / Downloads: 22)
.xlsx   Stundennachweis - Richard.xlsx (Größe: 12,94 KB / Downloads: 15)
.xlsx   Testmappe_Test.xlsx (Größe: 41,39 KB / Downloads: 21)
Antworten Top
#2
(29.01.2024, 11:55)Dschissl schrieb: ...Diese Zeiten müssen am Ende des Monats stets umständlich von allerlei Menschen (je nachdem wer dort war) in andere Dateien (die Stundennachweise) eingetragen werden. ...

Da ich gleich weg muss, hab ich jetzt nicht die Zeit, mir das anzusehen, würde aber sagen, der umgekehrte Weg führt zum Erfolg. Die "anderen" Dateien holen sich die entsprechenden Daten aus den Alex und Richard-Dateien. Relativ einfach und auch auch mit beliebig vielen Parametern ginge das mit Power Query (Menü Daten....)
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#3
...die Struktur der Tabelle1 in der Testmappe ist suboptimal. Besser wäre sowas:


Angehängte Dateien Thumbnail(s)
   
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#4
(29.01.2024, 13:20)Ralf A schrieb: Da ich gleich weg muss, hab ich jetzt nicht die Zeit, mir das anzusehen, würde aber sagen, der umgekehrte Weg führt zum Erfolg. Die "anderen" Dateien holen sich die entsprechenden Daten aus den Alex und Richard-Dateien. Relativ einfach und auch auch mit beliebig vielen Parametern ginge das mit Power Query (Menü Daten....)

Hallo Ralf,

vielen Dank für deine rasche Antwort. Ich war eine lange Zeit ausgeknocked und hatte dabei vergessen zu antworten. Tut mir Leid. Es handelt sich bei der Testmappe_Test um eine Einsatzliste für Mitarbeiter. Es ist daher nicht gewünscht, dass sich diese Liste die Zeiten aus den anderen Listen (z.B. Stundennachweis Alex und Richard) holt. Alle Mitarbeiter tragen ihre Zeiten, in denen sie bei den Klienten waren, in die Testmappe_Test ein. Und danach eben noch umständlicherweise in die Alex- und Richard-Listen, welche als Abrechnungsdateien genutzt werden. Da nun aber oft unterschiedliche Mitarbeiter bei den Klienten sind, rennt der Verantwortliche für die Abrechnung am Ende eines jeden Monats den Leuten hinterher, welche ihre Zeiten nicht in die entsprechende Abrechnung eingetragen haben. Das ist nervig, zeitaufwändig und ineffizient. Daher suche ich in Excel nach einem Weg, ob und wie es möglich ist, automatisiert, sowohl die Zeiten als auch den entsprechenden Mitarbeiter aus der Testmappe_Test in die Abrechnungen (z.B. Stundennachweis Alex und Richard) übernehmen zu lassen. Und weil mir das mit meinem erweitertem Basis-Excelwissen dann aber doch zu komplex ist, hoffe ich hier einen Weg zu finden, ob und wie das genau möglich ist.

Nachtrag: Ich glaube das bzw. ein Problem, welches sich hier ergibt, wird sein, dass eine Anforderung darin besteht, dass die Sundennachweis-Dateien von Alex und Richard den exakten Bereich in der Testmappe_Test finden müssen, um die Infos (Zeiten, Mitarbeiternamen) überhaupt übertragen zu können, denn es kann durchaus passieren, dass die Infos für den entsprechenden Tag immer an einer anderen Stelle in der Testmappe_Test stehen, je nachdem wer eben gerade an dem Tag bei Alex oder Richard gewesen ist. Für mich ist es gerade nur schwer vorstellbar, wie Excel wissen soll, dass es (um am Bsp. der Testmappe_Test zu bleiben) für den 29.10.19 die Zeiten aus den Zellen C18 + D18 und den Namen aus Zelle A18 in die entsprechenden Zellen B6 + C6 (Zeiten) und in die Zelle H6 (Mitarbeitername) der Datei Stundennachweis - Richard eintragen soll.  Huh
Antworten Top
#5
Hallo

Zitat:Für mich ist es gerade nur schwer vorstellbar, wie Excel wissen soll   ???

Excel weiss das ganz sicher nicht, aber ein Programmierer könnte die Aufgabe verstehen, und Excel es mit dem passenden Makro Code erklären. Den versteht Excel dein Anliegen in Windeseile. 

Mal schauen wie gut ich die Aufgabe verstanden habe. Und Excel mit einem "Zauberspruch" dazu bewegen konnte das richtige zu tun? Würde mich freuen wenn es klappt.  Wir werden sehen ob "Alladins Wunderlampe" aus Izmir wirkte??

Die Daten konnte ich kopieren, aber was ist mit dem Text "Angabe der Inhaltlichen Arbeit"? Den konnte ich nirgends finden.

mfg Gast 123


Angehängte Dateien
.xls   Testmappe_Test.xls (Größe: 220,5 KB / Downloads: 7)
Antworten Top
#6
Hallo Gast 123,

vielen Dank für deine rasche Hilfe. Ich bin kein Programmierer und kenne mich daher nicht so gut bzw. gar nicht mit Visual Basic aus. Ich habe deine Mappe mal getestet. Das sieht schon sehr gut aus, die Daten werden alle übertragen und in die korrekten Zellen kopiert, ich danke dir. Es wäre aber toll, wenn die Daten der Personen, welche bei "Richard" gewesen sind, auch nur in den Stundennachweis - Richard kopiert würden und andersherum bei "Alex" genauso nur in den Stundennachweis - Alex. Des Weiteren wäre es super wenn die Sortierung nicht nach Namen, sondern nach Datum erfolgen könnte. Vielen Dank schon mal im Voraus. 

VG Dschissl
Antworten Top
#7
(28.03.2024, 11:51)Dschissl schrieb: Es handelt sich bei der Testmappe_Test um eine Einsatzliste für Mitarbeiter. ... Alle Mitarbeiter tragen ihre Zeiten, in denen sie bei den Klienten waren, in die Testmappe_Test ein.
Und danach eben noch umständlicherweise in die Alex- und Richard-Listen, welche als Abrechnungsdateien genutzt werden. 

Die MA dürfen ja weiterhin ihre Daten in die Testmappe eintragen, aber dennoch ist die Gesamtstruktur komplett unpraktisch. 

(28.03.2024, 11:51)Dschissl schrieb: Nachtrag: Ich glaube das bzw. ein Problem, welches sich hier ergibt, wird sein, dass eine Anforderung darin besteht, dass die Sundennachweis-Dateien von Alex und Richard den exakten Bereich in der Testmappe_Test finden müssen, um die Infos (Zeiten, Mitarbeiternamen) überhaupt übertragen zu können, denn es kann durchaus passieren, dass die Infos für den entsprechenden Tag immer an einer anderen Stelle in der Testmappe_Test stehen, je nachdem wer eben gerade an dem Tag bei Alex oder Richard gewesen ist. Für mich ist es gerade nur schwer vorstellbar, wie Excel wissen soll, dass es (um am Bsp. der Testmappe_Test zu bleiben) für den 29.10.19 die Zeiten aus den Zellen C18 + D18 und den Namen aus Zelle A18 in die entsprechenden Zellen B6 + C6 (Zeiten) und in die Zelle H6 (Mitarbeitername) der Datei Stundennachweis - Richard eintragen soll.  Huh

Das ist, bei ordentlicher Strukturierung absolut kein Problem. Im Anhang mal ein Beispiel, wie man es ohne großen Aufwand und ohne VBA schnell machen könnte.
Sieh Dir mal das Blatt Vorschlag an und spiel mal ein wenig damit rum....
Hab da zwar alles auf ein Blatt geschmissen, soll ja auch nur das Prinzip veranschaulicht werden.
Und bestimmte Daten rauszufiltern ist auch kein Problem... da geht schon ordentlich was...


Angehängte Dateien
.xlsx   Testmappe_Test.xlsx (Größe: 210,09 KB / Downloads: 6)
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#8
Hasllo

ich sehe es gibt einen Lösungsvorschlag des Kollegen Ralf A.  Wenn der besser ist, dann bitte übernehmen.
Einen Fehler im Makro habe ich korrigiert, das sortieren war bei verbundenen Zellen aber problematisch!
Hier nur der geänderte Code, ohne Beispieldatei.

mfg Gast 123

Code:
Option Explicit      'überarbeitet  20.4.24  Gast 123  für Clever Forum
Dim AC As Range, lz1 As Long
Const MyPfad = "H:\Forum Clever Jan 2024\Anfrage Offen\"
Const Alex = "Stundennachweis - Alex.xls"
Const Rich = "Stundennachweis - Richard.xls"




Sub Stundenabrechnung_übertragen()
Dim Klient As String, j, z As Long
Dim WbEx As Workbook, lsp As Integer
Dim ShtX As Worksheet, s As Integer
'Application.ScreenUpdating = False

Workbooks.Open Filename:=MyPfad & Alex
Set WbEx = ActiveWorkbook
Set ShtX = WbEx.Sheets(1)
Klient = "Alex":  GoSub Liste

Workbooks.Open Filename:=MyPfad & Rich
Set WbEx = ActiveWorkbook
Set ShtX = WbEx.Sheets(1)
Klient = "Richard":  GoSub Liste

MsgBox "Stundennachweise kopiert", vbInformation
Exit Sub


Liste:  ThisWorkbook.Activate
With ThisWorkbook.Worksheets("Tabelle1")
     z = 6 ' 1.Zeile in Stundenabrechnung
     lz1 = Cells(Rows.Count, 1).End(xlUp).Row
     lsp = Cells(1, Columns.Count).End(xlToLeft).Column

     'Alle Namen (Fett) in Testmappe auswerten
     For Each AC In .Range("A2:A" & lz1)
         If AC.Font.Bold = True And AC.Value <> "" Then
            'Alle Spalten mit Klientnamen übertragen
            For s = 2 To lsp Step 4
                If .Cells(AC.Row, s) = Klient Then
                   ShtX.Cells(z, 8) = AC.Value
                   ShtX.Cells(z, 1) = .Cells(1, s)
                   ShtX.Cells(z, 2) = .Cells(AC.Row, s + 1)
                   ShtX.Cells(z, 3) = .Cells(AC.Row, s + 2)
                   z = z + 1
                End If
            Next s
         End If
     Next AC: z = z - 1
     
     '** Verbundene Zellen können NICHT sortiert werden!
     'Verbundene Zellen zum sortieren aufheben
     ShtX.Range("E6:G" & z).MergeCells = False
     
     'Nach Datum und Uhrzeit sortieren
     ShtX.Range("A6:I" & z).Sort Key1:=ShtX.Range("A6"), Order1:=xlAscending, _
        Key2:=ShtX.Range("B6"), Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, _
        MatchCase:=False, Orientation:=xlTopToBottom
     
     'Verbundene Zellen wiederherstellen
     For j = 6 To z
         ShtX.Cells(j, 5).Resize(1, 3).MergeCells = True
     Next j
     
     WbEx.Save  'Stundennachweis Save
     'WbEx.Close False
     Return
End With
End Sub
Antworten Top
#9
Hallo Ralf, hallo Gast123

vielen Dank für deine Mühen. Der Vorschlag ist auch sehr gut. Ich würde jedoch die Lösung samt Code von Gast123 präferieren. Dazu habe ich noch eine Frage an Gast123. Wenn nun die einzelnen Stundennachweise an verschiedenen Orten auf dem Laufwerk liegen, muss ich dann einfach nur im Header mehrere neue Variablen z.B. 

Const MyPfad2 = "C:\Users\xxxxx\xxxxx\xxxxxxxxxx\" 
Const MyPfad3 = "C:\Users\xxxxx\xxxxx\xxxxxxxxxx\" 
Const MyPfad4 = "C:\Users\xxxxx\xxxxx\xxxxxxxxxx\" 

festlegen?

Und ebenso weitere Variablen

Const x = "Stundennachweis - xxxx.xlsx"
Const y = "Stundennachweis - yyyy.xlsx"
Const z = "Stundennachweis - zzzz.xlsx"

und dann verweise ich weiter unten mit 

Workbooks.Open Filename:=MyPfad2 & x
Set WbEx = ActiveWorkbook
Set ShtX = WbEx.Sheets(1)
Klient = "x":  GoSub Liste

Workbooks.Open Filename:=MyPfad3 & y
Set WbEx = ActiveWorkbook
Set ShtX = WbEx.Sheets(1)
Klient = "y":  GoSub Liste

darauf? Thats it? Oder übersehe ich etwas?

VG Dschissl
Antworten Top
#10
Hallo nochmal,

ich habe nun ein wenig herum experimentiert. Die Daten (Name samt Zeiten, alles nach Datum sortiert) werden alle, wie gewünscht in die entsprechenden Stundennachweise kopiert. Das klappt schon sehr gut.
Nun wollte ich das Ganze auf die Originaldatei anwenden und bin, wer hätte es gedacht, auf weitere Herausforderungen gestoßen, welche da wären.

1. In der Originaldatei, sowie auch in der Testdatei, gibt es drei farblich (grün) markierte Zeilen bei jedem Mitarbeiter. Diese dienen dazu, dass der Mitarbeiter dort einträgt, bei wem er wirklich an dem Tag gewesen ist, denn es kann passieren, dass Mitarbeiter aus Gründen nicht zum geplanten Klienten, sondern zu einem anderen Klienten gehen müssen. Um das nachvollziehen zu können, sind die ersten 5 Zeilen sozusagen die Sollstunden und die 3 farblichen Zeilen die Ist-Stunden wo er wirklich war. Und NUR diese 3 Zeilen sollen am Ende pro Mitarbeiter ausgewertet werden. Die Originaldatei ist aus Sicherheitsgründen so konfiguriert, dass die ersten 5 Zeilen eines jeden Mitarbeiters gesperrt sind. Sie können nur in den 3 farblichen Zeilen Änderungen vornehmen und ihre Zeiten eintragen. Das zum Hintergrund.

2. Außerdem soll nicht nur eine Woche ausgewertet werden, sondern der ganze Monat, also 5 Wochen. Dazu habe ich versucht den Code anzupassen, sodass alle Wochen ausgewertet werden. Leider scheiterte dieses Vorhaben an meinen VBA-Kenntnissen. Auch die Unterstützung durch KI brachte keinen Erfolg, diese veränderte den Code immer weiter, passte ihn zwar an, doch es schlichen sich auch hier Fehler ein, welche ich nicht zu korrigieren vermag.

3. Des Weiteren soll das Einfügen der Daten in den original Stundenabrechnungen erst ab Zeile 18 passieren. Ich denke jedoch, dass das erstmal keine große Priorität hat.

Daher hänge ich euch nochmal die veränderte Testmappe samt Stundennachweisen an, in der Hoffnung jemand kann den Code anpassen, um diese beiden Probleme zu lösen. Vielen Dank schon mal im Voraus für die anhaltende Unterstützung.

VG Dschissl


Angehängte Dateien
.xls   Testmappe_Test_Forum.xls (Größe: 291,5 KB / Downloads: 10)
.xlsx   Stundennachweis - Alex.xlsx (Größe: 13,41 KB / Downloads: 4)
.xlsx   Stundennachweis - Richard.xlsx (Größe: 13,33 KB / Downloads: 3)
.xlsx   Stundennachweis - Mirko.xlsx (Größe: 13,27 KB / Downloads: 3)
.xlsx   Stundennachweis - Manu.xlsx (Größe: 13,28 KB / Downloads: 3)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste