Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
684to688
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
684to688
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro: Einzelblätter zusammenführen

Makro: Einzelblätter zusammenführen
27.10.2005 13:42:43
Daniel
Hallo Zusammen,
ich stehe vor einem Problem, das ich leider nicht selbst lösen kann.
Daher bitte ich um eure Hilfe.
Ich habe in einer Datei 3 Blätter:
- Datei1_Bericht
- Datei2_Bericht
- Datei3_Bericht
Die Inhalte dieser 3 "Berichte" sollen nun in einen Gesamtbericht zusammengefügt werden im Blatt "Bericht". Das Problem ist, das "Werte" in den Blättern doppelt vorkommen können. Diese sollen dann im Gesamtbericht addiert werden.
In diesem Blatt stehen jedoch schon Formeln, die nicht verändert werden sollen beim späteren Einfügen der Inhalte aus den 3 anderen Blättern.
Daher sollen am Anfang nur die Inhalte der Zellen A12- Ende, C12- Ende, G12- Ende und H12-Ende gelöscht werden.
Anschließend sollen in der Reihenfolge Datei1_Bericht, Datei2_Bericht und Datei3_Bericht die Inhalte der Zeilen 12 bis zur jeweils letzten gefüllten Zelle in Spalte A in diesen Gesamtbericht reinkopiert werden. Kopiert werden sollen aber jeweils von den Zeilen nur die Werte aus A,C,G und H. Zielzellen sind auch A,C,G, und H in "Bericht".
Die Zeilen sollen dort jeweils nach unten angehängt werden.
Anschließend sollen noch unter bestimmten Bedingungen Werte addiert werden.
Aber ich denke das kann man nach dem ganzen Kopierkram immer noch machen.
Ich hoffe mir kann einer helfen,
Daniel

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro: Einzelblätter zusammenführen
27.10.2005 14:11:38
UweD
Hallo
ich versuch gerne ein Makro zu basteln. Aber ich möchte nicht erst eine halbe Stunde die Datei nachbauen....

Lad mal eine Musterdatei hoch (inkl. des Gesamtberichtes, so wie es werden soll)
Gruß UweD
(Rückmeldung wäre schön)
AW: Makro: Einzelblätter zusammenführen
27.10.2005 14:38:15
Daniel
Hallo Uwe,
Ich habe mal meine Originaldatei abgeändert:

Die Datei https://www.herber.de/bbs/user/27892.xls wurde aus Datenschutzgründen gelöscht

So sieht das in etwa aus, nur eben, dass ich die Werte ändern musste in dummy-Zahlen. Geht aber leider nicht anders.
Danke für die Hilfe,
Daniel
AW: Makro: Einzelblätter zusammenführen
27.10.2005 16:57:47
UweD
Hallo
war ne harte Nuß
https://www.herber.de/bbs/user/27895.xls
Fragen erst wieder morgen...
Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Makro: Einzelblätter zusammenführen
28.10.2005 09:36:38
Daniel
Ok, es sind ja nun 2 Makros vorhanden.
Siehe bitte meinen Kommentar unter der Antwort von Matthias G.
Danke,
Daniel
AW: Makro: Einzelblätter zusammenführen
27.10.2005 17:34:19
Matthias G
Hallo Daniel,
ich bin auch fertig!

Sub Zusammenfassen()
Const EZ = 12
Dim LZ As Long, i As Long
Dim sh As Worksheet, sh_Z As Worksheet
Set sh = Sheets("Bericht")
Application.ScreenUpdating = False
With sh
sh.Range(.Cells(EZ, 1), .Cells(.Rows.Count, 1)).ClearContents
sh.Range(.Cells(EZ, 3), .Cells(.Rows.Count, 3)).ClearContents
sh.Range(.Cells(EZ, 7), .Cells(.Rows.Count, 7)).ClearContents
sh.Range(.Cells(EZ, 8), .Cells(.Rows.Count, 8)).ClearContents
End With
For Each sh_Z In Worksheets
If sh_Z.Name Like "*_Bericht" Then
With sh_Z
LZ = .Cells(Rows.Count, 1).End(xlUp).Row
For i = EZ To LZ
AddEintrag .Cells(i, 1), .Cells(i, 3), .Cells(i, 7), .Cells(i, 8)
Next i
End With
End If
Next sh_Z
Application.ScreenUpdating = True
End Sub
Sub AddEintrag(ByVal s1, ByVal s3, ByVal s7, ByVal s8)
Const EZ = 12
Dim LZ As Long
Dim ze As Double
Dim sh As Worksheet
Dim Werte As Range
Set sh = Sheets("Bericht")
With sh
Set Werte = .Range(.Cells(EZ, 1), .Cells(.Rows.Count, 1))
On Error Resume Next
ze = WorksheetFunction.Match(s1, Werte, 0)
If Err.Number > 0 Then
'Err.Clear
ze = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
If ze < EZ Then ze = EZ
.Cells(ze, 1) = s1
Else
ze = EZ + ze - 1
End If
On Error GoTo 0
If s3 = "" Then s3 = 0
If s7 = "" Then s7 = 0
If s8 = "" Then s8 = 0
.Cells(ze, 3) = .Cells(ze, 3) + s3
.Cells(ze, 7) = .Cells(ze, 7) + s7
.Cells(ze, 8) = .Cells(ze, 8) + s8
End With
End Sub

Gruß Matthias
Anzeige
AW: Makro: Einzelblätter zusammenführen
28.10.2005 09:46:20
Daniel
Hallo,

ich habe mir nun die Auswirkungen der beiden Makros angesehen.
Nun bin ich im Dilemma, denn beide haben ihre Vor- Nachteile.
Leider habe ich mich in der Problembeschreibung etwas unglücklich ausgedrückt, was dazu geführt hat, dass Uwe eine Anweisung hat die davon ausgeht, dass die Blätter immer Datei"n"_Bericht heißen. Nun ist diese leider in der echten Datei nicht so, sondern die Blätter haben eigene Namen, z.B. Müller_Bericht usw.
Das Makro von UWE hat aber die Reihenfolge beachtet, dass ein bestimmtes Blatt zuerst kommen muss, ich nenne das mal Schmidt_Bericht. Danach ist die Reihenfolge egal.
So, zu guter letzt kann ich in beiden Makros die Summenbildung noch nicht nachvollziehen.
Es soll dann im Sheet "Bericht" bei identischen Zeilen in Spalte A, die Zeile gelöscht werden die weiter unten steht, und der Wert in Spalte C, zur vorherigen Zeile hinzugefügt werden. Der Rest unterliegt keiner Addition.
ICh weiß nun nicht welches Makro sich dafür besser abändern lässt. Ich denke aber es ist besser wenn ihr/wir uns absprechen??
Danke für die konstruktive Arbeit,
Daniel
Anzeige
AW: Makro: Einzelblätter zusammenführen
28.10.2005 09:52:32
Matthias G
Hallo Daniel,
die Prozedur AddEintrag(ByVal s1, ByVal s3, ByVal s7, ByVal s8) macht folgendes:
Suche im Blatt "Bereich" nach Eintrag s1 ab Zelle A12 (runterwärts),
- wenn nicht gefunden, lege den Eintrag in erster freien Zeile an und schreibe die Werte s3, s7, s8 in die entsprtechende Spalten der selben Zeile.
- wenn gefunden, dann addiere zu den Werten in den Spalten 3, 7, und 8 der Zeile die Einträge s3, s7, s8.
Somit ist die Reihenfolge der Einträge egal.
Wenn du sie aber am Ende noch sortieren willst, wäre das auch kein Problem.
Gruß Matthias
AW: Makro: Einzelblätter zusammenführen
28.10.2005 10:00:00
Daniel
Hmm, ich weiß nicht ob ich dich richtig verstehe.
Mein Problem ist, dass in 12 und 13 andere Formeln in Spalte B stehen.
Daher müssen bestimmte Werte aus den Blättern in diese beiden Zeilen.
Ich dachte am praktischsten ist es, wenn man daher zuerst das Blatt kopiert, bei dem diese Werte auf jeden Fall in 12 und 13 stehen.
Vielleicht wäre es aber auch einfacher:
In Zelle A12 sollen immer die Zeilen addiert werden, in denen in den anderen Blättern "gxa" steht und in A13 "vga".
Dann ist die restliche Reihenfolge egal.
Ist es verständlich was ich bezwecken will?
Daniel
Anzeige
AW: Makro: Einzelblätter zusammenführen
28.10.2005 10:14:41
Matthias G
Hallo Daniel,
also wenn s1 (bezüglich der Prozedur AddEintrag) gxa ist, dann immer in Zeile 12, wenn es vga ist, immer in Zeile 13. Alle anderen dann erst ab Zeile 14.

Sub AddEintrag(ByVal s1, ByVal s3, ByVal s7, ByVal s8)
Const EZ = 14
Dim LZ As Long
Dim ze As Double
Dim sh As Worksheet
Dim Werte As Range
Set sh = Sheets("Bericht")
With sh
Select Case LCase(s1)
Case "gxa"
ze = 12
.Cells(ze, 1) = s1
Case "vga"
ze = 13
.Cells(ze, 1) = s1
Case Else
Set Werte = .Range(.Cells(EZ, 1), .Cells(.Rows.Count, 1))
On Error Resume Next
ze = WorksheetFunction.Match(s1, Werte, 0)
If Err.Number > 0 Then
'Err.Clear
ze = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
If ze < EZ Then ze = EZ
.Cells(ze, 1) = s1
Else
ze = EZ + ze - 1
End If
End Select
On Error GoTo 0
If s3 = "" Then s3 = 0
If s7 = "" Then s7 = 0
If s8 = "" Then s8 = 0
.Cells(ze, 3) = .Cells(ze, 3) + s3
.Cells(ze, 7) = .Cells(ze, 7) + s7
.Cells(ze, 8) = .Cells(ze, 8) + s8
End With
End Sub

Gruß Matthias
Anzeige
AW: Makro: Einzelblätter zusammenführen
28.10.2005 10:28:55
Daniel
Ok, das kopieren scheint nun zu stimmen.
Nun zur Summierung:
Es sollen, falls in Spalte A Mehrfachnennungen dabei sind, nur die Werte der Spalte C summiert werden.
Nicht die von G und H! Das ist im Moment noch der Fall.
Grüße,
Daniel
AW: Makro: Einzelblätter zusammenführen
28.10.2005 10:32:36
Matthias G
Hallo Daniel,
und was sol dan mit G und H passieren? Überschreiben? Dann wäre die Reihenfolge wieder relevant.
Gruß Matthias
AW: Makro: Einzelblätter zusammenführen
28.10.2005 10:37:09
Daniel
Das sind jeweils die gleichen Werte, es sollte also egals sein.
Z.B.
Steht im einen Blatt
A: abc
C: 100
G: 1
H: 4
im anderen steht
A: abc
C: 200
G: 1
H: 4
Dann soll das zu:
A: abc
C: 300
G: 1
H: 4
werden.
OK?
Anzeige
AW: Makro: Einzelblätter zusammenführen
28.10.2005 10:40:22
Matthias G
Hallo Daniel,
jetzt hast du doch schon so viel gelernt, das müsstest du dir doch selbst zusammenreimen können:

.Cells(ze, 3) = .Cells(ze, 3) + s3
.Cells(ze, 7) = s7
.Cells(ze, 8) = s8

Gruß Matthias
AW: Makro: Einzelblätter zusammenführen
28.10.2005 10:52:55
Daniel
Ja, du hast recht. Das Problem ist das mir die Grundlagen fehlen.
Vor allem wenn im Code keine Kommentare sind, dann stehe ich dumm da.
Aber vielen Dank für die schnelle und gute Hilfe!!!!
Wie immer bin ich sehr zufrieden.
Daniel

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige