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.

VBA Summewenn
#1
Guten Morgen Forum!

Ich würde gern eine interne Übersicht dokumentieren und habe versucht, alles in der Mappe im Anhang vereinfacht darzustellen.

Auf einem Blatt werden die wochenweisen Produktionszahlen dargestellt, nur für die grobe Übersicht der zu erwartenden Auslastung. Das ist alles an die ERP mit PQ Abfrage gekoppelt.
Ein weiteres Blatt, später dann nicht sichtbar, soll einmalig jede Woche die Summe der geplanten Mengen dokumentieren bzw. den Auftragsvorlauf festhalten.

Ich habe mir zwar eine Logik überlegt, damit ich mit einfachen Mitteln eine VBA stricken kann, doch die geht nicht, da ich keine Formeländerung prüfen kann. Ich bin also VBA "Anfänger" Wink

Ich bin für jede Idee und jeden Lösungsansatz dankbar Smile

Code:
Ich stehe am Anfang, da die Änderungen der Formelergebnisse nicht festgestellt werden :-/

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D2:D1000")) Is Nothing Then
Call SummeWenn
End If
End Sub


Angehängte Dateien
.xlsx   Mappe Test.xlsx (Größe: 13,91 KB / Downloads: 3)
Antworten Top
#2
Hallo,

wenn Du uns jetzt noch sagst, welchen Wert Du aus der Übersicht brauchst. Denn ein SUMMEWENN würde ja mehrere Werte addieren, die ein bestimmtes Kriterium aufweisen. In der Tabelle ist das einzige auswertbare Kriterium wohl die KW und die kommt ja nur einmal vor. Oder willst du nur den Einzelwert der KW anzeigen?

Für letzteres reicht diese Formel:
D2 =WENN(D8=1;WENNFEHLER(VERWEIS(B8&A8;Übersicht!$A$2:$A$17&Übersicht!$B$2:$B$17;Übersicht!$L$2:$L$17);"");"")
Einfach nach unten kopieren.
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • ÄxcelFoley
Antworten Top
#3
Hallo Michael,

ich möchte aus dem Blatt "Übersicht" die Spalte L:L als Summe in Blatt "Entwicklung" in Spalte E einmalig eintragen, wenn der Prüfwert "1" erfüllt ist. Der Prüfwert gibt zurück, ob Tag heute() = Tag Zellwert übereinstimmt (Summe nur am Freitag berechnen) und noch keine Summe erzeugt wurde (nicht jedes Mal neu, wenn an einem Freitag die Mappe geöffnet wird).
Wenn ich das mit einer Formel mache, erzeuge ich einen Zirkelbezug und habe ein neues Problem.

Zur Formelidee:
Die Werte in Blatt "Übersicht" Spalte L:L sind aus einer PQ Abfrage zusammensetzen (Summe Spalte C bis K) und ändern sich mit jedem öffnen der Datei.
Die Werte im Blatt "Übersicht" Spalte Jahr und KW sind zudem fortlaufend (nächste Woche rutscht also KW 14 in Zeile 2).

Hintergrund für den statischen Wert / ohne Formel:
Die Produktionszahlen, die in der Übersicht / Menge dargestellt werden, verändern sich stetig. Die Mengen sinken im Laufe der Woche bzw. werden abgearbeitet, neue Aufträge kommen hinzu.
Antworten Top
#4
Okay. Verstanden. Wie Du schon geschrieben hast, löst die Änderung durch eine Formel das Change-Ereignis nicht aus.

Man könnte die Aktualisierung per Makro machen und dabei gleich den Wert ermitteln und in die Zelle schreiben.

Mir ist jetzt aber noch nicht ganz klar, welche Summen wohin geschrieben werden sollen. Wenn ich es richtig verstanden habe, soll auf dem blatt "Entwicklung" in jeder Zeile eine Summe stehen, in der in spalte D eine 1 steht. Die 1 steht ja per Formel immer in der aktuellen KW. Dann soll also daneben die gesamte Summe der Spalte L aus dem Blatt "Übersicht" stehen? Sollen die alten Summen bestehen bleiben und nur die neue ergänzt werden?

Das ganze könnte zB so aussehen:
Code:
Sub Abfrage_aktualisieren()
Dim rngFind As Range
ActiveWorkbook.Connections("Abfrage - Abfrage1").Refresh
Set rngFind = Sheets("Entwicklung").Range("D2:D100").Find(what:=1, LookIn:=xlValues, LookAt:=xlWhole)
If Not rngFind Is Nothing Then
    rngFind.Offset(0, 1).Value = WorksheetFunction.Sum(Sheets("Übersicht").Range("L:L"))
End If
End Sub
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • ÄxcelFoley
Antworten Top
#5
Vielen lieben Dank Michael! Es funktioniert wunderbar. Ich muss nur noch einen Code Schnipsel suchen, damit das Makro erst nach dem Aktualisieren auslöst und dann bin ich fertig.

15
Antworten Top
#6
Das Makro aktualisiert doch die Abfrage bereits. Statt die Abfrage direkt zu aktualisieren kannst Du das Makro aufrufen (z. B. über eine Schaltfläche)
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • ÄxcelFoley
Antworten Top
#7
Das stimmt, die Abfrage ist aber so groß, dass eine 0 als Summe drin steht. Ich habe einfach das Event geändert.
Code:
'Arbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Entwicklung
End Sub

'Modul
Sub Entwicklung()
Set rngFind = Sheets("Entwicklung").Range("D2:D100").Find(what:=1, LookIn:=xlValues, LookAt:=xlWhole)
If Not rngFind Is Nothing Then
    rngFind.Offset(0, 1).Value = WorksheetFunction.Sum(Sheets("Summen").Range("L:L"))
End If
End Sub
Antworten Top


Gehe zu:


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