Summe über mehrere nicht identische Tabellenblätter mit mehreren Bedingungen

Hallo zusammen,

ich weiß, ich habe diese Frage schon einmal gestellt, habe aber leider keine Antwort bekommen, da ich die Fragestellung nicht genau erklären konnte. Jetzt möchte ich das noch einmal versuchen, da ich unbedingt eine Lösung des Problems brauche. Würde mir sehr viel Zeit ersparen.

Ich habe eine Planungstabelle mit Materialnummern in Spalte B und den Monaten in den Spaltenüberschriften. Leider sind die Materialnummern nicht immer gleich angeordnet in den Tabellenblättern. Teilweise gibt es auch Materialnummern, die in manchen Tabellenblättern garnicht vorkommen. Unter diesen Materialnummern werden immer wieder Zeilen eingefügt, um monatliche Planungsänderungen anzugeben. Es gibt aber immer eine Zeile, die letzte Zeile pro Material, in der die Materialnummer und in Spalte D immer „Fakturamenge“ steht. Über dieser Zeile steht in der ersten Zelle mit einer Zahl die aktuelle Planmenge. Diese muss nun über alle Tabellen, wenn die Materialnummern und der Monat identisch sind, addiert werden und in eine neue Tabelle mit den Materialnummern und Monaten geschrieben werden, sodaß sich eine Gesamtplanungsübersicht ergibt.

Ich hoffe, ich habe mich diesmal verständlicher ausgedrückt. Es würde mir wirklich sehr helfen, wenn ihr mein Problem lösen könntet.

Vielen Dank im voraus.

LG Martina

Hallo Martina,

unser lieber Reinhard hat ja damals schon geduldig versucht, dir zu helfen. Leider finde ich deine jetzigen Erklärungen genau so verwirrend wie die damaligen.
Kannst du mal eine Beispielmappe hochladen. z.B. hier:
http://www.file-upload.net/
Dann können wir uns hier ein Bild machen und versuchen, deine Erklärungen mit der Mappe in Einklang zu bringen.
ich fürchte sonst geht das genau so aus wie damals: Hornberger Schießen.

Gruß, Andreas

Hallo Andreas,

ich habe versucht, die Datei hochzuladen. Ich hoffe, es hat geklappt. Ich habe die auszulesende Zeile fett geschrieben. Ich hoffe, es ist jetzt verständlicher. Ansonsten bitte Rückmeldung und ich werde versuchen, es noch verständlicher zu gestalten.

Hier dier Link:
[URL=[http://www.file-upload.net/download-9014067/Planung-…](http://www.file-upload.net/download-9014067/Planung-LEH-Test.xls.html]Planung-LEH-Test.xls[/URL)]

http://www.file-upload.net/download-9014067/Planung-…

LG Martina

Hi Martina,

danke für die Mappe. ich glaub’, ich hab’s verstanden. Werde mcih morgen Abend mal daran versuchen. Bitte hab etwas Geduld.
Gruß, Andreas

Hallo Andreas,

vielen Dank schon einmal für Deine Mühe. Nun hoffe ich, dass Du es hinbekommst. Werde mich natürlich in Geduld üben.

LG Martina

Kurz nachgefragt
Hi Martina,

ich habe deine Mappe gerade noch mal angeschaut. Eine Frage hab ich noch:
Die Summen sollen in das Blatt „Summe“, so weit richtig?
In welche Zeilen dort sollen sie? Immer in die Zeilen in denen steht „Fakturamenge lavera“ oder immer in die Zeile darüber?

Gruß, Andreas

Hallo Andreas,

immer in die Zeile über Fakturamenge lavera.

LG Martina

Ach ja, und es ist richtig die Summen sollen in dem Tabellenblatt Summe eingetragen werden.

Noch 2 Fragen:
Hi Martina,

beim durchstöbern deiner Mappe sind mir noch 2 Fragen gekommen:

  1. Auf dem Blatt „Cash & Carry“ taucht in Zelle B88 die Artikel-Nr. 102952 auf. Die ist im Blatt „Summe“ garnicht vorhanden. Was soll damit passieren?
  2. Für diese Artikelnummer tauchen auf dem Blatt „Cash & Carry“ die Einträge 2x auf: In den Zeilen 86-88 und in den Zeilen 46-48. Welche Einträge sollen denn da in die Summe einfließen? Die esten, die zweiten, beide?

Gruß, Andreas

Hallo Andreas,

es wird in jeder Tabelle jede Materialnummer nur einmal geben und im Tabellenblatt Summe werden alle Materialnummern aufgeführt sein egal ob sie geplant werden oder nicht.

LG Martina

Erster Code-Versuch
Hallo Martina,

hier der erste Versuch eines Makros. Pack mal den folgenden Code in den Codebereich des Blattes „Summe“ und starte dann den Makro „summeBilden“:

Option Explicit
Option Base 1

Sub summeBilden()
 Dim summe() As Single
 Dim zeileSu As Long, spalteSu As Long, zeile As Long, spalte As Long
 Dim artNo As Long
 Dim blatt As Worksheet
 Dim gefunden As Boolean
 Dim monat As Integer, jahr As Integer

 For zeileSu = Cells(Rows.Count, 2).End(xlUp).Row - 1 To 2 Step -2
 artNo = Cells(zeileSu, 2)
 ReDim summe(1 To 12, 2012 To 2030)
 For Each blatt In ActiveWorkbook.Worksheets
 If blatt.Name "Summe" Then
 With blatt
 gefunden = False
 For zeile = .Cells(.Rows.Count, 2).End(xlUp).Row To 2 Step -1
 If .Cells(zeile, 2) = artNo And .Cells(zeile, 4) = "Fakturamenge" Then
 gefunden = True
 Exit For
 End If
 Next zeile
 If gefunden Then
 zeile = zeile - 1
 spalte = 6
 While Not IsEmpty(.Cells(1, spalte))
 monat = monatHolen(.Cells(1, spalte))
 jahr = jahrHolen(.Cells(1, spalte))
 summe(monat, jahr) = summe(monat, jahr) + .Cells(zeile, spalte)
 spalte = spalte + 1
 Wend
 End If
 End With
 End If
 Next blatt
 spalteSu = 6
 While Not IsEmpty(Cells(1, spalteSu))
 monat = monatHolen(Cells(1, spalteSu))
 jahr = jahrHolen(Cells(1, spalteSu))
 If summe(monat, jahr) 0 Then
 Cells(zeileSu, spalteSu) = summe(monat, jahr)
 End If
 spalteSu = spalteSu + 1
 Wend
 Next zeileSu
End Sub

Function monatHolen(text As String) As Integer
 Dim monat() As Variant
 Dim i As Integer

 monat = Array("jan", "feb", "mär", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "dez")
 text = LCase(text)
 i = 1
 While InStr(text, monat(i)) = 0
 i = i + 1
 Wend
 monatHolen = i
End Function

Function jahrHolen(text As String) As Integer
 Dim ziffern As String
 Dim p1 As Integer, p2 As Integer

 ziffern = "0123456789"
 p2 = Len(text)
 While InStr(ziffern, Mid(text, p2, 1)) = 0
 p2 = p2 - 1
 Wend
 p1 = p2 - 1
 While InStr(ziffern, Mid(text, p1, 1)) \> 0
 p1 = p1 - 1
 Wend
 jahrHolen = Val(Mid(text, p1 + 1, p2 - p1))
End Function

ich habe ihn Stichprobenartig getestet. Bei meinen Tests hat er richtig gerechnet.
Allerdings sind in der Mappe, die du hochgeladen hattest für meine Begriffe einige Ungereimtheiten, was die Artikelnummern angeht: Ich dachte, ein und die selbe Nummer sollte immer paarweise auftreten, mit einer Zeile Abstand. Das stimmt z.B. für 103979 auf Blatt „E“ nicht. Aber du wirst deine Gründe dafür haben. Blos kann es sein, dass der Makro bei so etwas ins Schleudern kommt.
Na, probier’s einfach mal und gib ein „Füttern-Zurück“.

Gruß, Andreas

Hallo Andreas,

Ich kann das Makro erst morgen ausprobieren, da ich im Moment keinen PC zur Verfügung habe. Werde ich morgen früh aber sofort ausprobieren und mich dann zurück melden. Vielen Dank schon einmal im voraus und noch schöne Pfingsten.

LG Martina

Hallo Andreas,

super!!! Was ich bis jetzt testen konnte, läuft das Makro einfach spitze und macht genau das, was ich will. Ich werde das Makro morgen noch einmal auf der Arbeit an der Originaldatei testen und Dir dann noch einmal Rückmeldung geben.

Könntest Du mir die Schritte des Makros vielleicht noch ausführlich kommentieren, damit ich weiß, welcher Befehl was macht. Ich möchte das Makro gerne verstehen, damit ich vielleicht irgentwann auch selber so ein Makro schreiben kann.

Vielen Dank und viele Grüße

Martina

Hi Martina,

ich habe dir deine Mappe hier noch mal hochgeladen:
http://www.file-upload.net/download-9042500/Planung-…
Den Makro hab ich jetzt bis ins Kleinste mir Erklärungen gespickt. Da ich aber nicht genau weiß, wie weit deine VBA-Kenntnisse gehen, bin ich mir nicht sicher, ob du so einen Makro nur aus den Erklärungen heraus selber schreiben könntest.
Sorry, falls ich dich unterschätzen sollte.

Gruß, Andreas

Hallo Andreas,

vielen vielen Dank für Deine Mühe. Was ich bis jetzt getestet habe, läuft das Makro super und macht genau das, was ich möchte.

Ich weiß nicht, ob ich jemals so ein Makro schreiben kann, aber ich kann wenigstens versuchen, mich etwas einzulesen und das Makro zu verstehen. Durch Deine Kommentare kann ich wenigstensn etwas verstehen, welcher Befehl, was auslöst. Vielen Dank noch einmal dafür.

Viele Grüße

Martina