Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Werte in mehreren Arbeitblättern kopieren

Werte in mehreren Arbeitblättern kopieren
08.11.2019 13:54:33
Ernst
Hallo liebe Forum Freunde,
Folgendes Problem (Wissenslücken) habe ich in der Programmierung, was ich so noch nicht umsetzen kann, ich hoffe, dass ihr mir helfen könnt.
Ich habe eine Arbeitsmappe „WerteKopieren_Test“ mit 7 Tabellenblättern.
In dem Tab „Tab1999“ stehen in der Spalte A die Kegler Nummern, in der Spalte B Namen und in der Spalte C-D stehen die Kegler Werte.
In dem Tab „Tabelle2“ stehen in der Spalte A die Kegler Nummern, in der Spalte B Namen und in der Spalte C-D stehen die Kegler Werte.
Programmablauf:
Zurzeit funktioniert das Marko wie folgt:
In der Tab1999 werden in der Spalte A die Nummern gesucht. Wird eine Nummer gefunden so wird in der Tabelle2 geprüft ob dort die gleiche Nummer vorhanden ist.
Wenn ja, wird der Kegler Wert aus der jeweiligen Spalte, im ersten Lauf, die Spalte C der Tabelle2 ermittelt und in der „Tab1999“ in der Spalte C kopiert.
Das funktioniert auch.
Wenn ich die anderen Felder kopieren will, muss ich jeweils manuell in der Anweisung den Befehl
Nummer.Offset(0, 2).Value = Treffer.Offset(0, 2).Value um 1 erhöhen
Nummer.Offset(0, 3).Value = Treffer.Offset(0, 3).Value bis alle Spalten gefüllt sind.
Das funktioniert auch.
Meine Frage an euch, kann man das im Programm so einstellen, dass das automatisch erfolgt?
Wenn ja, bitte ich euch um eure Hilfe.
Ferner frage ich euch, wie der Programmablauf wäre, wenn ich den jeweiligen Wert direkt in die jeweiligen Arbeitsblätter und der entsprechenden Spalte kopieren würde.
Ich hoffe, ihr könnt mir helfen.

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in mehreren Arbeitblättern kopieren
08.11.2019 14:40:10
fcs
Hallo Ernst,
mit dem Makro (natürlich ungetestet) könnte man die Werte variable übertragen.
probiere mal, ob es so passt.
LG
Franz Dim lngSpalte As Long Dim lngOffset As Long Dim rngStart As Range 'letzte ausgefüllte Zelle in Zeile mit Nummer setzen = Zelle mit Name With Nummer.Parent Set rngStart = .Cells(Nummer.Row, .Columns.Count).End(xlToLeft) End With With Treffer.Parent lngOffset = 0 'Werte aus Zeile mit Treffer ab Spalte 3 (C) bis zur letzten ausgefüllten Spalte ü _ bertragen. For lngSpalte = 3 To .Cells(Treffer.Row, .Columns.Count).End(xlToLeft).Column lngOffset = lngOffset + 1 rngStart.Offset(0, lngOffset).Value = .Cells(Treffer.Row, lngSpalte).Value Next End With
Anzeige
AW: Werte in mehreren Arbeitblättern kopieren
08.11.2019 16:04:33
Ernst
Hallo Franz,
habe es versucht, leider traten Fehler auf
Dim lngSpalte As Long
Dim lngOffset As Long
Dim rngStart As Range
Dim Nummer As Range
Dim Treffer As Range
'letzte ausgefüllte Zelle in Zeile mit Nummer setzen = Zelle mit Name
' An dieser Stelle beanstandete er Variable (Nummer) nicht definiert
With Nummer.Parent
Set rngStart = .Cells(Nummer.Row, .Columns.Count).End(xlToLeft)
End With
' An dieser Stelle beanstandete er Variable (Nummer) nicht definiert
With Treffer.Parent
lngOffset = 0
'Dann kommt ein laufzeitfehler 91, Objekvariable oder with-Blockanweisung nicht festgelegt
'Werte aus Zeile mit Treffer ab Spalte 3 (C) bis zur letzten ausgefüllten
'Spalte übertragen.
For lngSpalte = 3 To .Cells(Treffer.Row, .Columns.Count).End(xlToLeft).Column
lngOffset = lngOffset + 1
rngStart.Offset(0, lngOffset).Value = .Cells(Treffer.Row, lngSpalte).Value
Next
End With
End Sub
Habe ich was falsch gemacht Franz?
Anzeige
AW: Werte in mehreren Arbeitblättern kopieren
09.11.2019 16:04:30
Piet
Hallo Ernst
am besten ist es eine kleine Beispieldatei hochzuladen, mit ca. 20 Fantasiedaten, und einer Lösung von Hand, wo wir sehen können wie die Lösung aussehen soll. Das geht schneller als über Worte herumtesten. Wie ich die Aufgabe verstanden habe soll das ja über 7 Tabellen gehen?
mfg Piet
AW: Werte in mehreren Arbeitblättern kopieren
09.11.2019 19:59:33
Ernst
Hallo Piet,
schön dass du dich meiner annimmst, ich erde die Datei noch einmal hochladen.
Gruß
Ernst
https://www.herber.de/bbs/user/133046.zip
AW: Werte in mehreren Arbeitblättern kopieren
09.11.2019 22:24:05
Piet
Hallo Ernst
ich habe die Datei herunter geladen, kann sie aber nicht Öffnen. Es wir ein Passwort verlangt!
Am besten eine einfache Excel Datei, keine ZIP, ohne Passwort.
mfg Piet
Anzeige
AW: Offen stellen vergessen oWt
09.11.2019 22:25:47
Piet
...
AW: Offen stellen vergessen oWt
10.11.2019 13:22:06
Piet
Hallo Ernst
ich habe in zwei neuen Modulen zwei Makros geschrieben. Du kannst sie per Button starten.
Das 1. Makro kopiert die Daten aus Tabelle 1999 nach Tabelle2. Das 2. Makro kopiert alle Daten aus Tabelle 1999 in die Kegler Tabellen "Werth", Rademacher, usw. Ich hoffe alles klappt wie gewünscht. Viel Spass beim Testen, am besten zuerst in meinem Beispiel.
https://www.herber.de/bbs/user/133073.xlsm
mfg Piet
Anzeige
AW: Offen stellen vergessen oWt
10.11.2019 16:00:44
Ernst
Hallo Piet,
habe soeben deine Makro getestet.
Zu Makro 1
Hier sollen die Daten aus der Tabelle2 in die Tabelle 1999 kopiert werden, also genau umgekehrt.
Zu Makro 2
Hier sollen die Werte aus der Tabelle 1999 in die jeweiligen Tabellen "Wehrt", Rademacher usw.kopiert werden und zwar mit den Werten aus der Tabelle 1999
Spalte C Wert 356 im TB "Wehrt"
Spalte D Wert 326 im TB "Rademacher"
Spalte E Wert 324 im TB "Feicks"
Spalte F Wert 0 im TB "Stubbe Vorne"
Spalte F Wert 0 im TB "Stubbe Hinten"
Die Tabelle 1999 ist die Stammdatentabelle und die Tabelle2 ist die Datenquelle.
Bitte baue mir das so um.
Vielen Dank im Voraus.
Gruß
Ernst
Anzeige
AW: Offen stellen vergessen oWt
10.11.2019 18:36:33
Piet
Hallo Ernst
okay, das Makro "umdrehen" war keine grosse Sache. Anbei der geaenderte Code zum austauschen.
Getauscht werden muss nur das 1. Makro, von Tabelle2 in Tab1999 kopieren. Das andere ist richtig.
Frage: - im Augenblick lösche ich die alten Daten in Tab1999, weil ja nicht mehr alle aktuell sind. Ist das richtig, oder sollen nur die Werte pro Person ausgetauscht werden? Wenn nicht gelöscht werden soll brauchst du nur den Befehl hinter dem Kommentar mit "**" löschen. Es ist diese Code Zeile:
.Range("C2:G" & ZeileMax).ClearContents
Mir ist aufgefallen das bei mir in Tab1999 die Überschrift in Spalte E nicht stimmt. Da steht Wehrt statt Feicks wie in Tabelle2. Der Reiter hat den Namen "Fricks" statt "Feicks". Würde mich freuen wenn jetzt alles perfekt klappt.
mfg Piet
Option Explicit      '10.11.2019   Piet   für Herber Forum
'Makro1 übertraegt Daten aus Tabelle 1999 in Tabelle 2
Sub InTabelle2_WerteKopieren()
Dim ZeileMax As Long
Dim Treffer As Range
Dim ZeileMax2 As Long
Dim KKNr As Range        'KKNr als Range
Dim i As Integer         'For Next Spalten C-G
With Tab1999
'Zeile max in Spalte A suchen über Cells
ZeileMax = .Cells(Rows.Count, 1).End(xlUp).Row
'** Tab1999 alten Datenbereich löschen
.Range("C2:G" & ZeileMax).ClearContents
Application.ScreenUpdating = False
'Schleife um alle Kegler Nummern zu suchen
For Each KKNr In .Range("A2:A" & ZeileMax)
Set Treffer = Tabelle2.Columns("A").Find(what:=KKNr, lookat:=xlWhole)
If Not Treffer Is Nothing Then
'Kegler Name zusaetzlich mit vergleichen
If Treffer.Offset(0, 1).Value = KKNr.Offset(0, 1).Value Then
'Übertrage Spalte C-G in Tabelle2 wenn Wert  ""
For i = 2 To 6
If KKNr  "" Then KKNr.Offset(0, i).Value = Treffer.Offset(0, i).Value
Next i
Else  'anzeigen welcher Kegler nicht mehr dabei ist
'MsgBox KKNr & " / " & KKNr.Offset(0, 1) & " - Name in Tabelle2 nicht gefunden!"
End If
End If
Next KKNr
MsgBox "Tabelle2 fertig"
End With
End Sub

Anzeige
AW: Offen stellen vergessen oWt
11.11.2019 20:31:59
Ernst
Hallo Piet,
ich bin deinen Weisungen gefolgt, leider komme ich noch immer nicht zum Erfolg.
Die Werte stimmen nicht überein.
Folgend Arbeitsschritte habe ich durchgeführt:
1. Anlegen einer Arbeitsmappe „Piet_133073_Vorlauf“ mit der Werten lt. Makros
2. Anlegen einer unbeschrieben Arbeitsmappe „Piet_133073 noch nicht gelaufen.
In der Tabelle „Tab1999“ und der Tabelle2 habe ich zur Kontrolle Gesamtsummenfelder gebildet.
Die kopieren Werte aus der Tabelle2 in die Tab1999 müssen dann übereinstimmen.
Nochmal zum PGM-Ablauf:
Das AB „Tab1999“ ist die Datenstammdatei, dort dürfen die Felder A,B,H Und I nicht verändert werden.
In den AB „ Wehrt bis StubbeH“ dürfen die Felder A,B und D, auch nicht verändert werden.
Zum PGM-Ablauf:
Über die Tab1999 werden die entsprechen KKNr mit den KKNr. mit den KKNr aus der Tabelle2 verglichen.
Ist die KKNr vorhanden, dann sollen die jeweiligen Werte der KKNr. aus der Tabelle2
in die Tab1999 kopiert werden.
Beide Tabellen sollten dann die gleichen Kontrollsummen aufweisen.
Hier stimmt was nicht, ich weiss aber nicht warum.
Im Makro2 werden die Werte auch nicht richtig abgebildet, hier müssen die aus der „Tab1999“ der jeweiligen KKNr auf die AB Wehrt bis StubbeH verteilt werden.
Zur Zeit wird nur die Spalte C in allen TB kopiert.
Um weitere Hilfe wird gebeten.
Gruß
Ernst
https://www.herber.de/bbs/user/133106.xlsm
https://www.herber.de/bbs/user/133107.xlsm
Anzeige
AW: Offen stellen vergessen oWt
12.11.2019 02:11:53
fcs
Hallo Ernst,
ich hab in deiner ursprünglichen Beispiel-Datei mal 2 Makros erstellt.
Probiere mal, ob die das gewünschte Ergebnis liefern.
LG
Franz
Sub WerteKopieren()
'übertragen von Tabelle2 (Tabelle2) nach Tab1999 (Tab 1999)
Dim Zeile As Long
Dim ZeileMax As Long
Dim Treffer As Range
Dim Nummer As Range
Dim Namen As Range
Dim lngOffset As Long
Dim wksZiel As Worksheet
Dim wksQuelle As Worksheet
Dim StatusCalc As Long
Set wksZiel = Tab1999
Set wksQuelle = Tabelle2
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With wksZiel
ZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
'Altdaten löschen in Spalten C bis G
.Range(.Cells(1, 3), .Cells(ZeileMax, 7)).ClearContents
'Keglernamen kopieren in Zeile 1
With wksQuelle
.Range(.Cells(1, 3), .Cells(1, 7)).Copy
End With
.Range(.Cells(1, 3), .Cells(1, 7)).PasteSpecial Paste:=xlPasteValues
For Zeile = 2 To ZeileMax
Set Nummer = .Range("A" & Zeile)
If Not Nummer Is Nothing Then
Set Treffer = wksQuelle.Columns("A").Find(what:=Nummer.Value, _
LookIn:=xlValues, lookat:=xlWhole)
If Not Treffer Is Nothing Then
'Werte aus Spalten C bis G
For lngOffset = 2 To 6
Nummer.Offset(0, lngOffset).Value = _
Treffer.Offset(0, lngOffset).Value
Next lngOffset
End If
End If
Next Zeile
With Application
.Calculate
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End With
End Sub
Sub WerteKopieren_Tab1999_nach_Name()
'übertragen von Tab1999 (Tab 1999) nach Tabellenblätter mit Namen
Dim Zeile As Long
Dim ZeileMax As Long
Dim Treffer As Range
Dim Nummer As Range
Dim Namen As Range
Dim lngSpalte As Long
Dim iTab As Integer
Dim wksZiel As Worksheet
Dim wksQuelle As Worksheet
Dim bolName As Boolean
Dim StatusCalc As Long
Set wksQuelle = Tab1999
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
For lngSpalte = 3 To 7 'Spalten mit den Namen in Zeile 1 des Quellblatts
bolName = False
For iTab = 3 To ThisWorkbook.Sheets.Count
Set wksZiel = ThisWorkbook.Sheets(iTab)
With wksZiel
'Prüfen, ob Name mit Name in Quelle übereinstimmt
If .Range("C1") = wksQuelle.Cells(1, lngSpalte).Value Then
bolName = True
ZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
'Altdaten löschen in Spalte C ab Zeile 2
.Range(.Cells(2, 3), .Cells(ZeileMax, 3)).ClearContents
For Zeile = 2 To ZeileMax
Set Nummer = .Range("A" & Zeile)
If Not Nummer Is Nothing Then
Set Treffer = wksQuelle.Columns("A").Find(what:=Nummer.Value, _
LookIn:=xlValues, lookat:=xlWhole)
If Not Treffer Is Nothing Then
Nummer.Offset(0, 2).Value = _
wksQuelle.Cells(Treffer.Row, lngSpalte).Value
End If
End If
Next Zeile
End If
End With
Next iTab
If bolName = False Then
MsgBox "Kein Blatt mit Name """ _
& wksQuelle.Cells(1, lngSpalte).Value & """ in C1 vorhanden!"
End If
Next lngSpalte
With Application
.Calculate
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End Sub

Anzeige
AW: Offen stellen vergessen oWt
12.11.2019 19:20:48
Ernst
Hallo Franz,
vielen lieben Dank für deine Unterstützung in meiner Angelegenheit.
Ich habe beide Makro eingepflegt und getestet.
Die Arbeitsmappe habe ich wie folgt genannt: „Franz_12.11.2019.xlsm“
Bei meiner Überprüfung ist folgendes dabei herausgekommen:
Zum Makro 1 „Sub WerteKopieren()“'übertragen von Tabelle2 (Tabelle2) nach Tab1999 (Tab 1999)
Das Makro habe ich gestartet und es lief auch durch.
Danach habe ich alle Werte geprüft, dabei ist mit aufgefallen, dass es einige Ungereimtheiten gibt.
In der Tabelle2 sind die Werte bei den KKNr 33 und 55 richtig eingetragen.
Beim Kopieren der Daten wurden jedoch die Ergebnisse der beiden KKNr vertauscht.
Siehe Tabelle 2 und Tab1999.
In der Tabelle2 sind die Werte für die KKNR 114 und 168 richtig eingetragen.
Beim Kopieren der Daten in die Tab1999 wurden jedoch die Werte nicht mit ausgewiesen, sie fehlen also.
Bei der Summenbildung am Ende habe ich die Werte manuell nachgepflegt und die Gesamtsumme ist stimmig.
Zum Makro 2 „Sub WerteKopieren_Tab1999_nach_Name()“
'übertragen von Tab1999 (Tab 1999) nach Tabellenblätter mit Namen
Hier wurden nur die Werte für Wehrt und Rademacher übertragen, bei allen anderen Mappen kam folgender Fehler:
„Kein Blatt mit Name Feicks in C1 StubbeV und StubbeH vorhanden“
Natürlich sind auch die Fehler aus Makro 1 mit übernommen worden.
Franz, würdest du dir bitte das noch einmal anschauen?
Für deine Mühe bedanke ich mich im Voraus.
Gruß
Ernst
https://www.herber.de/bbs/user/133150.xlsm
Anzeige
AW: Offen stellen vergessen
12.11.2019 22:29:44
fcs
Hallo Ernst,
Makro 1:
Es gibt Unstimmigkeiten in deinen Ausgangsdaten.
Nr. 33 und 55: hier sind in den beiden Tabellen die Namen zu den Nummern vertauscht.
Nr. 114 und 168: Diese kommen in Tabelle2 doppelt vor.
Tabelle2

 ABCDEFGHI
1KK Nr.NameWehrtRadem.FeicksStubbe  HintenStubbe  VorneGesamtKegelclub
11433Maack, Hans-Peter4704604774754792.361He wackelt
11555Maack, Martin4674484724654732.325He wackelt
189114Stubbe, Wilhelm 1000000Rube Gesell'n
195168Tenzer, Wolfgang000000Rube Gesell'n
200114Unshelm, Rolf4753344704624762.217Rube Gesell'n
205168Voß, Ernst449431000880Rube Gesell'n


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Tab1999

 ABCDEFGHI
1Kegler NummerKeglernameWehrtRadem.FeicksStubbe  HintenStubbe  VorneGesamtKegelclub
12955Maack, Hans-Peter4674484724654732325He wackelt
13033Maack, Martin4704604774754792361He wackelt
21522Stubbe, Wilhelm 1     0Rube Gesell'n
22181Tenzer, Wolfgang     0Rube Gesell'n
226114Unshelm, Rolf000000Rube Gesell'n
231168Voß, Ernst000000Rube Gesell'n


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Makro 2:
Hier stimmen die Namen in Zelle C1 der Blätter "Feicks", "StubbeV" und "StubbeH" nicht mit einem der Namen in Zeile 1 von Blatt "Tab 1999" überein. Bei allen 3 Blättern ist in C1 der Name "Radem." eingetragen.
Die Namen in C1 müssen genau mit einem Namen in Zeile 1 von Blatt "Tab 1999" übereinstimmen. Namen dürfen auch nicht doppelt vorkommen.
Nach Bereinigung der Unstimmigkeiten sollten die Makros korrekt arbeiten.
LG
Franz
AW: Offen stellen vergessen
13.11.2019 15:10:28
Ernst
Hallo Franz,
vielen lieben Dank für deine Hilfe, hiermit bitte ich dich um Nachsicht, denn ich habe sicherlich den Wald vor lauter Bäume nicht mehr gesehen.
Sorry.
Zu Makro 1
Ich habe alle Werte neu gepflegt und erneut gestartet. Das Makro Ist durchgelaufen und alle Werte stimmen.
Zu Makro 2
Hier habe ich alle Namen nochmal gepflegt. Das Makro ist durchgelaufen und alle Werte wurden kopiert.
Dafür möchte ich mich bei dir in aller Form bedanken.
Jetzt kann ich die Chronik der Kegelbröder für das 2023 (70 Jahre) per PGM aufarbeiten.
DANKE
Lieber Franz,
zu diesem Beitrag habe ich noch eine Frage bzw. eine weitere Bitte.
Ist es möglich, das Makro 2 NOCH so anzupassen, dass wenn die Werte für Wehrt bis Stubbe Vorne ermittelt werden, direkt in die AM “ AW_KK_EG_1953“ für Wehrt bis Stubbe Vorne in der Spalte 117 und folgende zu kopieren?
Alle KKNr, Namen in der AB „AW_KK_EG_1953“ sind wie in der Tab1999 gleich.
Mein Wissen reicht dazu nicht aus, um das umzusetzen.
Für weitere Unterstützung wäre ich dir dankbar.
Gruß
Ernst
https://www.herber.de/bbs/user/133178.png
AW: Offen stellen vergessen
14.11.2019 12:29:32
fcs
Hallo Ernst
ich hab nicht genau verstanden, was jetzt von wo nach wo kopiert werden soll.
Nur die Werte unter den Namen aus Tab1999 jetzt in die Spalte 117?
Oder soll da noch mehr kopiert werde?
Wenn ja - wo stehen diese Daten.
Für die Anpassung ist es ggf. einfacher, wenn du mir die Original-Datei schickst.
Meine E-mail-adresse findest du hier: http://www.herber.de/cgi-bin/profile/call_profile.pl?user=3552034
LG
Franz
AW: Werte in mehreren Arbeitblättern kopieren
12.11.2019 12:42:27
Piet
Hallo Ernst
ich sehe das dir fcs einen Code geschickt hat und warte mal ab ob er besser ist.
Würde mich freuen wenn damit dein Problem zufriedenstellend gelöst ist.
Ob die Summen übereinstimmen haengt m.E. davon ab, ob man Tab1999 vor dem kopieren komplett löscht, weil die Liste in Tabelle2 von den Zeilen her viel kürzer ist. Da gibt es m.E in Tab1999 alte Daten die nicht mehr zutreffen. Ich warte mal deinen Test mit dem Code von fcs ab ....
mfg Piet

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige