Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  SumIfs mit Datumsproblem

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  SumIfs mit Datumsproblem (1000 / mal gelesen)
Chriss7819
Mitglied


Sehen Sie sich das Profil von Chriss7819 an!   Senden Sie eine Private Message an Chriss7819  Schreiben Sie einen Gästebucheintrag für Chriss7819

Beiträge: 3
Registriert: 02.09.2020

erstellt am: 02. Sep. 2020 16:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Sumifs1.jpg


Sumifs2.jpg

 
Hallo, in die Runde,

seit kurzem setze ich mich mit VBA auseinander um meine umfangreiche Excelkalkulation schrittweise auf VBA umzustellen.

Bei der SumIfs-Umsetzung gibt es Probleme, wenn zu den Sum-If-Kriterien ein Datumsbereich (Datum: TT.MM.TTTT) definiert wird. Ich vermute, es liegt an dem europäischen und amerikanischen Datumsformat.

Allerdings wurden auch keine Ergebnisse in der Beispieldatei (siehe Anhang) geliefert, als die Formatierung auf "M/T/YYYY" umgestellt wurde.
SumIf funktioniert bei mir leider nur, wenn ich den Datumswert als String (mit "") in die SumIfs-Formel eintrage.

Sub der Beispieldatei:
Sub SumIfs_mit_Einsatzdatum()

    Dim ws As Worksheet
    Set ws = Worksheets("Tabelle2")


   
    For i = 9 To 11 Step 2
        ws.Cells(i, 12) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
                            ws.Range("D9: D20"), ws.Cells(i, 11), _
                            ws.Range("G9: G20"), ws.Cells(8, 12), _
                            ws.Range("C9: C20"), ">" & ws.Cells(i, 14), _
                            ws.Range("C9: C20"), "<" & ws.Cells(i + 1, 14))
        ws.Cells(i, 13) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
                            ws.Range("D9: D20"), ws.Cells(i, 11), _
                            ws.Range("G9: G20"), ws.Cells(8, 13), _
                            ws.Range("C9: C20"), ">" & "01/01/2020", _
                            ws.Range("C9: C20"), "<" & "03/31/2020")

    Next i


End Sub

Die Beispieldatei hat die Datenquelle und die Übersicht der Auswertung im selben Tabellenreiter.
In meiner eigentlichen Datei ist die Datenquelle im Reiter "Daten" und die Auswertung in den Reiter "1" abgebildet.

Das Thema "VBA - SUMIFS (Summewenns)-Problem" habe ich mir bereits durchgelesen - neben vielen anderen Foren und YouTube-Videos - aber einen Lösungsansatz konnte ich leider noch nicht finden.

Über eure Unterstützung bin ich euch sehr dankbar.

Beste Grüße,
Chriss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chriss7819
Mitglied


Sehen Sie sich das Profil von Chriss7819 an!   Senden Sie eine Private Message an Chriss7819  Schreiben Sie einen Gästebucheintrag für Chriss7819

Beiträge: 3
Registriert: 02.09.2020

erstellt am: 02. Sep. 2020 16:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Eine kurze Ergänzung (sorry):

Die Angabe des Datumsbereichs soll ">=" und "<=" lauten.

Sub SumIfs_mit_Einsatzdatum()
    Dim ws As Worksheet
    Set ws = Worksheets("Tabelle2")

   
    For i = 9 To 11 Step 2
    ws.Cells(i, 12) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
                ws.Range("D9: D20"), ws.Cells(i, 11), _
                ws.Range("G9: G20"), ws.Cells(8, 12), _
                ws.Range("C9: C20"), "> =" & ws.Cells(i, 14), _
                ws.Range("C9: C20"), "< =" & ws.Cells(i + 1, 14))
    ws.Cells(i, 13) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
                ws.Range("D9: D20"), ws.Cells(i, 11), _
                ws.Range("G9: G20"), ws.Cells(8, 13), _
                ws.Range("C9: C20"), ">=" & "01/01/2020", _
                ws.Range("C9: C20"), "<=" & "03/31/2020")
    Next i

End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 03. Sep. 2020 10:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chriss7819 10 Unities + Antwort hilfreich

Hallo Chriss,
Willkommen im Forum 
Auf den ersten Blick sieht ja alles ganz vernünftig aus. Könntest Du eine Exceltabelle zum testen hochladen? Wäre dann einfacher den Fehler zu finden.

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chris7818
Mitglied


Sehen Sie sich das Profil von Chris7818 an!   Senden Sie eine Private Message an Chris7818  Schreiben Sie einen Gästebucheintrag für Chris7818

Beiträge: 1
Registriert: 03.09.2020

erstellt am: 03. Sep. 2020 12:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chriss7819 10 Unities + Antwort hilfreich


SumIfs.zip

 
Hallo, Klaus,

danke für das herzliche Willkommen auch für die rasche Durchsicht! 

Die Beispieldatei ist als Zip beigefügt.

In der Originaldatei kommen zwei Reiter vor, weshalb es dann zwei Worksheets gibt.

Beste Grüße,
Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 03. Sep. 2020 14:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chriss7819 10 Unities + Antwort hilfreich

Hallo Chris,
Habe eine Lösung gefunden, mußt halt sehen ob Du damit weiterkommst.

Code:

Sub SumIfs_mit_Einsatzdatum()
    Dim ws As Worksheet
    Set ws = Worksheets("Tabelle2")
    ws.Activate
    Dim sd As Variant ' Startdatum
    Dim ed As Variant ' Endedatum
   
    For i = 9 To 11 Step 2
'        ws.Cells(i, 12) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
'                            ws.Range("D9:D20"), ws.Cells(i, 11), _
'                            ws.Range("G9:G20"), ws.Cells(8, 12), _
'                            ws.Range("C9:C20"), ">" & Chr(35) & ws.Cells(i, 14).Value & Chr(35), _
'                            ws.Range("C9:C20"), "<" & Chr(35) & ws.Cells(i + 1, 14).Value & Chr(35))
'        ws.Cells(i, 13) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
'                            ws.Range("D9:D20"), ws.Cells(i, 11), _
'                            ws.Range("G9:G20"), ws.Cells(8, 13), _
'                            ws.Range("C9:C20"), ">" & "01/01/2020", _
'                            ws.Range("C9:C20"), "<" & "03/31/2020")
        ' Übernahme der Werte, in den Feldern Value2 und Formula
        ' befinden sich die bereits umgerechneten Zeitangaben
        sd = ws.Cells(i, 14).Value2
        ed = ws.Cells(i + 1, 14).Value2
       
        ws.Cells(i, 12) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
                            ws.Range("D9:D20"), ws.Cells(i, 11), _
                            ws.Range("G9:G20"), ws.Cells(8, 12), _
                            ws.Range("C9:C20"), ">=" & sd, _
                            ws.Range("C9:C20"), "<=" & ed)
        ws.Cells(i, 13) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
                            ws.Range("D9:D20"), ws.Cells(i, 11), _
                            ws.Range("G9:G20"), ws.Cells(8, 13), _
                            ws.Range("C9:C20"), ">=" & sd, _
                            ws.Range("C9:C20"), "<=" & ed)
    Next i
End Sub

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chriss7819
Mitglied


Sehen Sie sich das Profil von Chriss7819 an!   Senden Sie eine Private Message an Chriss7819  Schreiben Sie einen Gästebucheintrag für Chriss7819

Beiträge: 3
Registriert: 02.09.2020

erstellt am: 04. Sep. 2020 11:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


SumIfs_Forum.zip

 
Hallo, Klaus,

wow, super, DANKE! Es funktioniert!

Besten Dank für den tollen und superschnellen Support!
Die Ursache war, dass .value2 bei  ws.Range("C9: C20"), ">=" bzw.  ws.Range("C9: C20"), "<=" gefehlt hat.

Für alle, die vor demselben Problem standen, hier das aktualisierte Beispiel und auch noch einmal als Anhang (siehe Tabelle 2a):

Sub SumIfs_mit_Einsatzdatum()

    Dim ws As Worksheet
   
    Set ws = Worksheets("Tabelle2a")
       
   
    For i = 9 To 11 Step 2
    ws.Cells(i, 12) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
                            ws.Range("D9: D20"), ws.Cells(i, 11), _
                            ws.Range("G9: G20"), ws.Cells(8, 12), _
                            ws.Range("C9: C20"), ">=" & ws.Cells(i, 14).Value2, _
                            ws.Range("C9: C20"), "<=" & ws.Cells(i + 1, 14).Value2)
   
    Next i
   
    For i = 9 To 11 Step 2
    ws.Cells(i, 13) = WorksheetFunction.SumIfs(ws.Range("H9:H20"), _
                            ws.Range("D9: D20"), ws.Cells(i, 11), _
                            ws.Range("G9: G20"), ws.Cells(8, 13), _
                            ws.Range("C9: C20"), ">=" & ws.Cells(i, 14).Value2, _
                            ws.Range("C9: C20"), "<=" & ws.Cells(i + 1, 14).Value2)

    Next i


End Sub


Wie kann ich das Thema schließen?

Herzliche Grüße und Danke!
Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 04. Sep. 2020 12:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chriss7819 10 Unities + Antwort hilfreich

Hallo Chriss,
Thema schließen gibt es nicht aber man kann das Thema als erledigt markieren.
Dazu beim Antworten über dem Textfenster bei Grafik für den Beitrag das grüne Häkchen auswählen (habe ich gerade gemacht).
Als Threadersteller kann man das auch über die Unities machen, dazu beim Lösungsbeitrag oben, dort wo "Nur für Chriss7819" steht 10+ anklicken.

Grüße
Klaus   

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz