Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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

Formel für Monatsumsätze aus Gesamtliste

Formel für Monatsumsätze aus Gesamtliste
05.05.2017 21:01:39
Florian
Hallöchen
Vor ein paar Monaten wurde mir hier geholfen ein "Jahreswechselmakro" zu erstellen.
Dieses soll aus allen meinen Firmenseiten in einer Exceltabelle die Jahresumsätze zu beginn eines neuen Jahres automatisch auf einer neuen Seite anzeigen.
https://www.herber.de/bbs/user/113356.xlsm
Diese Liste möchte ich nun erweitern, um eine Monatsübersicht.
Also nicht nur 2017, sondern jeden Monat einzeln (so wie auf dem Sheet "so solls aussehen").
Hierfür bräuchte ich jedoch eine Formel, welche eben dies erledigt.
Da es vorkommen kann, dass der Name der Firma aus mehreren Zeichen besteht (was ja bei der Benennung der intelligenten Tabelle nicht möglich ist) wäre es glaube ich besser, wenn diese nicht in die Formel mit einfließt.

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: eine Formel? Warum dann eine XLSm-Datei? ...
06.05.2017 08:10:31
...
Hallo Florian,
... eine XLSx-Datei würde ich mir anschauen, eine XLSm-Datei dagegen nicht.
Gruß Werner
.. , - ...
AW: eine Formel? Warum dann eine XLSm-Datei? ...
06.05.2017 08:56:10
Florian
Ok.
Hier die xlsx Datei und das Makro der xlsm.

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

'Makro zum Anpassen der Seiten beim Jahreswechsel
Sub Jahreswechselmakro()
'Variablen für Firmenübersicht
Dim rng As Range
Dim wks As Worksheet
Dim strFehler As String
Dim i As Long
Dim lngletztezeile As Long
Dim strSep As String
'Variablen für Statistik
Dim q As Integer, j As Integer, k As Integer, l As Integer, m As Integer, p As Integer
Dim n As Integer, o As Integer
Dim c As Range
Dim lngletzterFeiertag As Long
Dim strFT As String
Dim Datum As Date
Dim intAnzahlTage As Integer
Dim strspalte As String
Dim lngzeile As Long, lngZeileUmsatz As Long, lngZeileKunden As Long
'Variablen für online Statistik
Dim r As Integer
Dim s As Integer
'-------------------------------Seite Firmenübersicht--------------------------
'TrennText in Fehlermeldung
strSep = " / "
With ThisWorkbook.Worksheets("Firmenübersicht")
'letzte Zeile
lngletztezeile = .Cells(Rows.Count, 6).End(xlUp).Row
'ersetzen der Formeln in Spalte J (vorletztes Jahr) durch Werte
If .Range("J2").HasFormula Then
With .Range(.Cells(2, 10), .Cells(lngletztezeile - 2, 10))
.Calculate
.Value = .Value
End With
End If
'Einfügen drei neuer Spalten und setzen der Formate
.Columns("G:I").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
.Columns("G:I").ColumnWidth = 10
.Columns("G:I").HorizontalAlignment = xlCenter
.Columns("G:G").NumberFormat = "0.00"
.Columns("H:H").NumberFormat = "#,##0"
.Columns("I:I").NumberFormat = "0%"
'Setzen der Überschriften
.Range("G1").Value = Year(Date)
.Range("G1").NumberFormat = "0"
.Range("H1").Value = "#"
.Range("I1").Value = "%"
'Färben der Spalte G
With .Columns("G:G").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.14996795556505
.PatternTintAndShade = 0
End With
'Schleife durchläuft alle Arbeitsblätter und schreibt Umsatz in Firmenübersicht
For Each wks In ActiveWorkbook.Worksheets
'Prüfung ob es sich um Firmenseite handelt
If wks.Name = wks.Range("E1") Then
Set rng = .Columns(6).Find(wks.Name, LookAt:=xlWhole)
'Wenn gefunden, dann schreiben der Werte
If Not rng Is Nothing Then
'Formel für aktuelles Jahr
rng.Offset(0, 1).FormulaR1C1 = "='" & wks.Name & "'!R2C10" 'aus J2
'Formel für vorheriges Jahr
rng.Offset(0, 4).FormulaR1C1 = "='" & wks.Name & "'!R3C10" 'aus J3
Else
'Speichern der nicht gefunden Firmen in einer Variablen
strFehler = wks.Name & strSep & strFehler
End If
End If
Next
If strFehler  "" Then strFehler = strSep & strFehler
'Schreiben der Formeln in Spalte H (#)
With .Range(.Cells(2, 8), .Cells(lngletztezeile - 2, 8))
.FormulaR1C1 = "=RC[-1]-RC[2]"
End With
'Schreiben der Formeln in Spalte I (%)
With .Range(.Cells(2, 9), .Cells(lngletztezeile - 2, 9))
.FormulaR1C1 = "=IFERROR((RC[-2]-RC[1])/ABS(RC[1])," & Chr(34) & Chr(34) & ")"
End With
'Schreiben der Werte in letzteZeile (Summe)
.Range("G" & lngletztezeile).Formula = "=SUM(G2:G" & lngletztezeile - 2 & ")"
.Range("H" & lngletztezeile).Formula = "=G" & lngletztezeile & "-J" & lngletztezeile
.Range("I" & lngletztezeile).FormulaR1C1 = "=IFERROR((RC[-2]-RC[1])/ABS(RC[1]),"""")"
End With
'erneute Schleife durch alle Arbeitsblätter - Anpassen der Umsatzspalten
Application.Calculate
For Each wks In ActiveWorkbook.Worksheets
'Prüfung ob es sich um Firmenseite handelt
If wks.Name = wks.Range("E1") Then
'Pfüfung ob es bei aktueller Firma Fehler gab
'Hier die Abfrage, ob wks.name NICHT in der Variable strFehler vorkommt
If InStr(1, strFehler, strSep & wks.Name & strSep) = 0 Then
wks.Range("I3").Value = Year(Date) - 1
wks.Range("I2").Value = Year(Date)
End If
End If
Next
'Schreiben des Datums in Einstellungen A1
ThisWorkbook.Worksheets("Einstellungen").Range("A1") = Year(Date)
'Wenn Variable strFehler belegt, dann zeigen der Fehler
If (strFehler)  "" Then MsgBox ("Fehler bei folgenden Firmen. Bitte manuell prüfen." & _
Chr(13) & strFehler)
End Sub

Anzeige
AW: eine Formel? Warum dann eine XLSm-Datei? ...
06.05.2017 09:21:12
Florian
Edit:
Mir würde die entsprechende Formel natürlich erst mal reichen.
Den Rest tüddel ich mir dann zusammen und Frage ggf. zu konkreten Problemen noch mal einzeln nach.
AW: mit SUMMEWENNS() ...
06.05.2017 09:31:22
...
Hallo Florian,
... wenn ich Deine bisherigen Angaben richtig deute, in R2 so:
=SUMMEWENNS(INDIREKT($F2&"!"&"L:L");INDIREKT($F2&"!"&"G:G");">="&R1;INDIREKT($F2&"!"&"G:G"); " Gruß Werner
.. , - ...
AW: mit SUMMEWENNS() ...
06.05.2017 15:00:38
Florian
Nein, das haut nicht hin (ich verstehe aber leider die Formel auch nicht - kann sie also nicht umstellen)
Ich möchte, dass die Seite "Firmenübersicht" so aussieht wie "so solls aussehen".
Hier brauche ich dann die Formel in G2 für den Monatsumsatz Dezember der "Firmaname"
Grundlage für das Datum soll dabei das Rechnungsdatum - also Spalte H - sein.
Anzeige
AW: Deine Beispiel-Vorgaben sind umgesetzt ...
06.05.2017 17:49:19
...
Hallo Florian,
... eine andere Interpretation Deiner Angaben ist mir momentan nicht möglich. Du musstest nur die Formeln von R1:R2 nach links kopieren - Das Bezugsdatum ist nun von Spalte G auf H geändert.
Nachfolgend beispielsweise der Auszug für 2016 (gesteuert über Dropdownzelle S1):
 FGHIJKLMNOPQRS
1 Dez 16Nov 16Okt 16Sep 16Aug 16Jul 16Jun 16Mai 16Apr 16Mrz 16Feb 16Jan 162016
2Firmaname772,01-704,201511,271685,40372,00692,28703,721813,45142,17-1197,009593,50

Formeln der Tabelle
ZelleFormel
R1=("1."&13-SPALTE(L1)&"."&$S1)+0
R2=SUMMEWENNS(INDIREKT($F2&"!"&"L:L"); INDIREKT($F2&"!"&"H:H"); ">="&R1;INDIREKT($F2&"!"&"H:H"); "<="&WENN(MONAT(R1)=12;R1+31;Q1))
S2=SUMME(G2:R2)

Datengültigkeit der Tabelle
ZelleZulassenDatenEingabe 1Eingabe 2
S1Liste 2015;2016;2017;2018 

Gruß Werner
.. , - ...
Anzeige
AW: Deine Beispiel-Vorgaben sind umgesetzt ...
06.05.2017 18:55:59
Florian
Das sieht gut aus :)
ABER
Besteht die Möglichkeit diese FOrmel so anzupassen, dass sie ohne Dropdown läuft?
Da die Formel teil eines Makros wird der zu Beginn des Jahres die entsprechenden Formeln auf die Übersichtsseite schreibt, finde ich (gerne lasse ich mich aber eines besseren belehren), das Dropdown hinderlich.
Und ich habe vergessen zu erwähnen, dass ich die Netto Summe als Ergebnis brauche.
Also nicht das Ergebnis aus Spalte L, sondern aus J und K.
AW: die notw. Anpassung sollte Dir möglich sein...
07.05.2017 10:11:38
...
Hallo Florian,
... die Dropdownzelle hatte ich ja nur zur Demonstration der Formelermittlung eingeführt.
Und um die Nettosummen zu ermitteln, hast Du zwei Alternativen zur Auswahl. Die eine wäre, die Ergebnisse zweier entsprechender SUMMEWENNS()-Formeln wie aufgezeigt zu addieren.
Die andere Du schreibst die SUMMEWENNS()-Formel zu einer SUMMENPRODUKT()-Formel um. Die hätte den "Vorteil", dass sie kürzer wäre, aber den Nachteil, dass sie wohl etwas länger rechnet, wenn Du sicher gehen willst, dass alle Datensätze auch verarbeitet werden sollen.
Brauchst Du dazu noch Hilfe?
Gruß Werner
.. , - ...
Anzeige
AW: die notw. Anpassung sollte Dir möglich sein...
07.05.2017 12:12:43
Florian
Ok.
Da ich so an die 50 Firmen habe und zwei Jahre berechnet werden sollen, also um die 120 Formeln, werde ich wohl bei der Summewenn Formel bleiben und diese entsprechend umstellen.
Ich versuchs erstmal, wenns nicht klappt, gebe ich nochmal laut.
Bis hierhin erstmal danke!
AW: die notw. Anpassung sollte Dir möglich sein...
07.05.2017 12:28:57
Florian
Das ist meine Formel für den Januar 2017 (ersmtal zum testen auf der Seite der Firma)
Die anderen Monate würde ich dann ensprechend anpassen.
Kannst du mal schauen, ob das so gemeint war?
=SUMMEWENNS(J:J;H:H;">1.1.17";H:H;"1.1.17";H:H;"

AW: die notw. Anpassung sollte Dir möglich sein...
07.05.2017 12:32:21
Florian
Edit:
Die erste Prüfung in beiden Formeln soll natürlich >=1.1.17 lauten, um den ersten des Monats nicht auszuschließen
=SUMMEWENNS(J:J;H:H;">=1.1.17";H:H;"=1.1.17";H:H;"

Anzeige
AW: so kommst Du nicht zum gewünschten Ergebnis...
07.05.2017 15:14:32
...
Hallo,
... warum willst Du denn für jede Zelle eine eigene Formel definieren? Warum nutzt Du nicht meinen Vorschlag, dieser greift auf Zelldaten zurück und lässt sich kopieren. Diese Formel könntest Du z.B. auch nach unten (für weitere Firmennamen) kopieren, wenn es für diese ein entsprechendes Datenblatt gleichen Namens gibt.
Gruß Werner
.. , - ...
AW: so kommst Du nicht zum gewünschten Ergebnis...
07.05.2017 15:19:59
Florian
Weil ich es nicht geschafft habe, deine Formel umszustellen^^
Anzeige
AW: so kommst Du nicht zum gewünschten Ergebnis...
07.05.2017 15:53:57
Florian
Also ich verstehe nicht, wie du auf die Daten (Datums) kommst - die Formel in Zeile 1 raffe ich nicht und damit verbunden dann auch die zweite Prüfung nicht.
Aber ich habe folgende Überlegung.
Da ich die Formeln alle per Makro schreiben lasse würde mir ja ein runterziehen onehin nichts bringen.
Ich würde eine Schleife von oben nach unten laufen lassen und dann alle 3 Zeilen die FOrmel schreiben lassen.
Formel / Rechnung in % zum Vorjahr / Rechnung absolut zum Vorjahr / und Formel für nächste Firma.
Meine Variante hat dabei dann den klaren Nachteil, dass ich mir 12 Formlen (für jeden Monat) in eine Variable packen muss.
Bei dir wäre sie immer gleich. Dafür habe ich oben noch Datumsformeln.
Aber sollte nicht (das weiß ich nicht) - die Berechnung meiner Formel schneller gehen, als die Berechnung deiner?
Und spielt diese eventuelle mehr Geschwindigkeit bei der Menge meiner Formeln eine Rolle?
Anzeige
AW: gesucht war von Dir eine Formellösung ...
07.05.2017 16:07:22
Dir
Hallo Florian,
... aus VBA-Lösungen halte ich mich grundsätzlichen außen vor und somit werde ich hier auch keinen Vergleich mit einer solchen aufstellen. Wenn Du nun doch eine VBA-Lösung anstrebst, dann stelle den thread auf offen und schreibe in den Betreff: "VBA-Lösung gesucht"
Gruß Werner
.. , - ...
AW: gesucht war von Dir eine Formellösung ...
07.05.2017 17:17:45
Dir
Hallöchen
Nein, das hast du falsch verstanden.
Ich suche (wie in meinem Eingangspost beschrieben) KEINE VBA Lösung.
Ich werde nur diese Formel (welche ich Suche) per VBA in mein Tabellenblatt einfügen, damit ich nicht jedes Jahr die Formeln manuell eingeben muss.
Anzeige
AW: gesucht war von Dir eine Formellösung ...
07.05.2017 17:18:55
Dir
Das Problem ist also kein VBA Problem,
sondern ein Problem der richtigen Formel, meine Frage bezüglich der Geschwindigkeit aus dem letzten Post besteht also weiterhin.
AW: zu Deiner Zusatzfrage ...
07.05.2017 19:06:45
...
Hallo Florian,
... SUMMEWENNS() mit "Direktdatenwerten" wie von Dir angedacht, rechnet natürlich schneller als wenn die Argumente erst ermittelt werden müssen. Wie bereits geschrieben, kann ich aber nicht wirklich abschätzen, ob der Vorteil nicht dadurch wieder aufgehoben wird, dass Deine Formeln erst durch Dein VBA-Vorgehen eingeschrieben werden.
Übrigens wäre die schnellste Berechnung weder eine VBA- noch eine Formellösung sondern eine PIVOTauswertung und zwar am besten für zuvor konsolidierte Datentabellen.
Für eine reine Formellösung käme ich nie auf so eine Idee, wie es Dir vorschwebt. Hinzu kommt, dass Deine "Formelübersetzung" falsch war und nur zu 0-Werten geführt hätte. Im Tabellenblatt "Firmaname" hätte diese für Januar 2017 nämlich z.B. so aussehen müssen:
=SUMMEWENNS(J:J;H:H;">="&0+"1.01.17";H:H;"="&0+"1.01.17";H:H; "
oder darin anstelle 0+ z.B. auch 1* um aus dem Datumstextwert ein Datumswert zu ermitteln.
Gruß Werner
.. , - ...
Anzeige
AW: zu Deiner Zusatzfrage ...
08.05.2017 08:54:53
Florian
Guten Morgen Werner
Hier muss ich dir widersprechen.
Meine Formel liefert das gewünschte Ergebnis (habe ich vor dem Posten getestet).
Allerdings könnte das ja daran liegen, dass mein Datum zufällig im richtigen Format ist.
Ob das bei allen Firmen so der Fall ist, weiß ich natürlich nicht.
Deine Formel liefert mir auch ein Ergebnis, nimmt allerdings den ersten des Folgemonates mit.
Also konkret in deiner Formel wird der Wert vom 1.1.17 bis einschließelich 1.2.17 wiedergegeben.
AW: da hast Du natürlich Recht ...
08.05.2017 09:44:13
...
Hallo Florian,
... ich hatte gestern nicht daran gedacht, dass SUMMEWENNS() und ZÄHLENWENNS() quasi automatisch textl. Datumsangaben in den Argumenten in "echte (Dezimlazahlen-)" Datumswerte wandelt. Insofern war und ist das von mir gewählte doch recht aufwendige Umrechnen der Textdatumswerte wie 0+"1.01.17" ja gar nicht notwendig. Mein Gleichheitszeichen vor dem Vergleich mit dem 01.02 war ein gedankenloser Schreibfehler. Sorry.
Gruß Werner
.. , - ...
AW: da hast Du natürlich Recht ...
08.05.2017 10:37:58
Florian
Ach scheiße, sorry. Das Gleichheitszeichen hätte mir auch auffallen können :)
Dann habe ich noch eine abschließende Frage:
Stell dir vor jemand anders würde die Formeln für dich eintragen (was anderes macht VBA ja nicht), und es spielt keine Rolle wie lange dieses Eintragen dauert.
Würdest du dann aus Geschwindigkeitsgründen meine verwenden, oder doch eher deine?
AW: hmm ...
08.05.2017 11:27:13
...
Hallo Florian,
... wenn es keine Rolle spielt, dann ist es doch auch egal, welche Formel Du verwendet. Ich würde dann immer die nehmen, die am schnellsten erstellt und bereitgestellt ist, denn die Rechengeschwindigkeitsdifferenzen dürften sich nur geringfügig unterscheiden, solange keine Massendatenbearbeitung geplant ist. Im letzteren Fall würde ich eh für eine Pivotauswerrung plädieren.
Gruß Werner
.. , - ...
AW: hmm ...
08.05.2017 12:05:22
Florian
Alles klar.
Dann hast du mir extrem geholfen.
Die Formel hätte ich so alleine nicht hinbekommen (bzw. nicht gewusst, dass es sie gibt)
Vielen, vielen Dank!
AW: bitte, gern owT
08.05.2017 12:21:23
...
Gruß Werner
.. , - ...
AW: Deine Beispiel-Vorgaben sind umgesetzt ...
07.05.2017 12:02:54
Florian
Das sieht gut aus :)
ABER
Besteht die Möglichkeit diese FOrmel so anzupassen, dass sie ohne Dropdown läuft?
Da die Formel teil eines Makros wird der zu Beginn des Jahres die entsprechenden Formeln auf die Übersichtsseite schreibt, finde ich (gerne lasse ich mich aber eines besseren belehren), das Dropdown hinderlich.
Und ich habe vergessen zu erwähnen, dass ich die Netto Summe als Ergebnis brauche.
Also nicht das Ergebnis aus Spalte L, sondern aus J und K.

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige