Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1648to1652
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

Berechnungen der Summen nicht korrekt

Berechnungen der Summen nicht korrekt
11.10.2018 11:10:18
Andreas
Hallo liebe Formuer,
ich doch schon wieder.
Ich hoffe ich bekomme nochmal eine Hilfestellung von euch Profis.
In meinem Code berechne ich verschiedene Werte. Wenn in .Cells(raSpalte.Row, 2)
nur ein Wert gespeichert ist, rechnet er richtig. Sobald aber mehrere Werte dort
gespeichert werden bekomme ich immer eine falsche Berechnung der Werte.
Wie kann man dies abfangen? Über Msgbox gibt er mir auch 2 Werte einzeln aus wenn diese gespeichert sind. Diese müsste ich aber doch irgendwie für die Berechnung zusammenfassen, oder ?
Option Explicit
Public Sub Daten_holen_Aggregation()
Dim strPfad As String, strDatei As String
Dim raSpalte As Range
Dim wbQuelle As Workbook
Dim loSuchbegriff As Long
Dim Kostenstelle As Long
Dim KostenstelleStr As String
Dim boGefunden As Boolean
Dim loSumBewkum As Double
Dim Summe, Summe1, Summe2, Summe3, Summe4, Summe5, Summe6, Summe7, Summe8 As Double
Dim i As Long
Dim aktJahr As Long
aktJahr = Year(Now) Mod 100
'Pfad an deine Bedürfnisse anpassen
strPfad = "C:\Users\A.Harzer\Desktop\"
strDatei = "Aggregation Baustellenbewertung und Leistungsplanung_ab 2015.xlsx"
loSuchbegriff = ActiveSheet.Range("J1")
loSumBewkum = ActiveSheet.Range("I43")
Kostenstelle = CLng(Mid(loSuchbegriff, 1, 2))
'Bildschirmaktualisierung aus
Application.ScreenUpdating = False
'Datei öffnen
Set wbQuelle = Workbooks.Open(strPfad & strDatei)
With wbQuelle.Worksheets("Werte für Bewertung")
' Variabel initialisieren
Summe = 0
Summe1 = 0
boGefunden = True
For i = Kostenstelle To aktJahr
KostenstelleStr = "Summe 20" & i
'Suche nach Kostenstelle in Spalte 1
Set raSpalte = .Range("A:A").Find(what:=KostenstelleStr, LookIn:=xlValues, lookat:= _
xlWhole)
'wenn gefunden dann
If Not raSpalte Is Nothing Then
'bei Fund Variable auf Wahr setzen
boGefunden = boGefunden And True
'Daten berechnen:Summe Spalte B und C in der gefundenen Zeile
'Summe1 = Summe + .Cells(raSpalte.Row, 2).Value + .Cells(raSpalte.Row, 3).Value
'Werkstattkosten
 Summe1 = Summe + .Cells(raSpalte.Row, 3).Value
Summe2 = Summe1 * loSumBewkum / .Cells(raSpalte.Row, 2).Value
'MsgBox Summe1
'MsgBox Summe2
'Dieselkosten
Summe3 = Summe + .Cells(raSpalte.Row, 4).Value
Summe4 = Summe3 * loSumBewkum / .Cells(raSpalte.Row, 2).Value
'MsgBox Summe4
'Grätekosten
Summe5 = Summe + .Cells(raSpalte.Row, 5).Value
Summe6 = Summe5 * loSumBewkum / .Cells(raSpalte.Row, 2).Value
'MsgBox Summe6
'Verwaltungkosten
Summe7 = Summe + .Cells(raSpalte.Row, 6).Value
Summe8 = Summe7 * loSumBewkum / .Cells(raSpalte.Row, 2).Value
'MsgBox Summe8
Else
boGefunden = False
End If
Set raSpalte = Nothing
Next i
'Summe übertragen
ThisWorkbook.ActiveSheet.Range("A65") = Summe2
ThisWorkbook.ActiveSheet.Range("A66") = Summe4
ThisWorkbook.ActiveSheet.Range("A67") = Summe6
ThisWorkbook.ActiveSheet.Range("A68") = Summe8
End With
'Quelldatei ohne Speichern schließen
wbQuelle.Close (False)
'kein Fund - Meldung ausgeben
'If Not boGefunden Then MsgBox "Mindest eine der Kostenstellen wurde nicht gefunden."
'Variable aufräumen
Set wbQuelle = Nothing
'Bildschirmaktualisierung an
Application.ScreenUpdating = True
End Sub
DAnke vorab.
Gruß
Andreas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechnungen der Summen nicht korrekt
11.10.2018 11:12:57
Daniel
Hi
in einer Zelle kann immer nur ein Wert gespeichert werden.
was steht den in der Zelle drin, wenn es deiner Meinung nach 2 oder mehr Werte sein sollen?
Gruß Daniel
AW: Berechnungen der Summen nicht korrekt
11.10.2018 11:37:58
Andreas
Hallo Daniel,
danke für die Rückinfo.
Ich habe mal die Datei hochgeladen aus der die Werte gezogen (z.B. Summe1 = Summe + .Cells(raSpalte.Row, 3).Value) werden. Wenn KostenstellenStr z.B. 2016 ist zieht er sich aus Spalte 3 die Werte von Summe 2016, 2017 und 2018. Und da scheint das Problem zu liegen. Wenn KostenstellenStr 2018 ist holt er sich nur einen Wert und rechnet korrekt.
https://www.herber.de/bbs/user/124563.xlsx
Gruß
Andreas
Anzeige
AW: Berechnungen der Summen nicht korrekt
11.10.2018 11:51:15
Daniel
Hi
ich checks noch nicht so ganz, was du willst, aber die Zeile
Summe1 = Summe + .Cells(raSpalte.Row, 3).Value
scheint nicht sinnvoll zu sein, da die Variable Summe den Wert 0 hat und diese nie geändert wird.
ich weiß ja nicht was du da vorhast, aber wenn du in einer Schleife mehrere Werte in Summe1 aufaddieren willst, müsstest du schreiben:
Summe1 = Summe1 + .Cells(raSpalte.Row, 3).Value
Gruß Daniel
AW: Berechnungen der Summen nicht korrekt
11.10.2018 11:41:49
PeterK
Hallo
Public Sub Daten_holen_Aggregation()
     Dim strPfad As String, strDatei As String
     Dim raSpalte As Range
     Dim wbQuelle As Workbook
     Dim loSuchbegriff As Long
     Dim Kostenstelle As Long
     Dim KostenstelleStr As String
     Dim boGefunden As Boolean
     Dim loSumBewkum As Double
     Dim Summe1 As Double, Summe2 As Double, Summe3 As Double, Summe4 As Double
     Dim i As Long
     Dim aktJahr As Long
 
     aktJahr = Year(Now) Mod 100
 
     'Pfad an deine Bedürfnisse anpassen 
     strPfad = "C:\Users\A.Harzer\Desktop\"
     strDatei = "Aggregation Baustellenbewertung und Leistungsplanung_ab 2015.xlsx"
     loSuchbegriff = ActiveSheet.Range("J1")
 
     loSumBewkum = ActiveSheet.Range("I43")
     
     Kostenstelle = CLng(Mid(loSuchbegriff, 1, 2))
 
     'Bildschirmaktualisierung aus 
     Application.ScreenUpdating = False
 
     'Datei öffnen 
     Set wbQuelle = Workbooks.Open(strPfad & strDatei)
 
     With wbQuelle.Worksheets("Werte für Bewertung")
         ' Variabel initialisieren 
         Summe1 = 0
         Summe2 = 0
         Summe3 = 0
         Summe4 = 0
         boGefunden = True
         
         For i = Kostenstelle To aktJahr
         
             KostenstelleStr = "Summe 20" & i
 
             'Suche nach Kostenstelle in Spalte 1 
             Set raSpalte = .Range("A:A").Find(what:=KostenstelleStr, LookIn:=xlValues, lookat:=xlWhole)
 
             'wenn gefunden dann 
             If Not raSpalte Is Nothing Then
                 'bei Fund Variable auf Wahr setzen 
                 boGefunden = boGefunden And True
                 'Daten berechnen:Summe Spalte B und C in der gefundenen Zeile 
                 'Summe1 = Summe + .Cells(raSpalte.Row, 2).Value + .Cells(raSpalte.Row, 3).Value 
                 
                 'Werkstattkosten 
                 Summe1 = Summe1 + .Cells(raSpalte.Row, 3).Value * loSumBewkum / .Cells(raSpalte.Row, 2).Value
                 
                 'Dieselkosten 
                 Summe2 = Summe2 + .Cells(raSpalte.Row, 4).Value * loSumBewkum / .Cells(raSpalte.Row, 2).Value
                 
                 'Grätekosten 
                 Summe3 = Summe3 + .Cells(raSpalte.Row, 4).Value * loSumBewkum / .Cells(raSpalte.Row, 2).Value
                 
                 'Verwaltungkosten 
                 Summe4 = Summe4 + .Cells(raSpalte.Row, 4).Value * loSumBewkum / .Cells(raSpalte.Row, 2).Value
                 
             Else
                boGefunden = False
             End If
             Set raSpalte = Nothing
             
         Next i
         'Summe übertragen 
         ThisWorkbook.ActiveSheet.Range("A65") = Summe1
         ThisWorkbook.ActiveSheet.Range("A66") = Summe2
         ThisWorkbook.ActiveSheet.Range("A67") = Summe3
         ThisWorkbook.ActiveSheet.Range("A68") = Summe4
     End With
 
     'Quelldatei ohne Speichern schließen 
     wbQuelle.Close (False)
 
     'kein Fund - Meldung ausgeben 
     'If Not boGefunden Then MsgBox "Mindest eine der Kostenstellen wurde nicht gefunden." 
 
     'Variable aufräumen 
     Set wbQuelle = Nothing
     
     'Bildschirmaktualisierung an 
     Application.ScreenUpdating = True
 End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige
AW: Berechnungen der Summen nicht korrekt
11.10.2018 12:54:05
Andreas
Hallo Peter,
danke. Ich habe den Code so geändert. Er rechnet aber immernoch nicht korrekt.
Beispiel Summe1 Werkstattkosten (Bis dato waren dort in Masterdatei normale Formeln hinterlegt.) "A65"
Mit folgenden Daten wurde dort für Beispiel 2017 gerechnet:
Datei Aggregation: gefunden 2017 = Zelle C28 + 2018 = C41 = 503.587 €
* loSumBewkum (976.220,50 €) / Datei Aggregation: gefunden 2017 = Zelle B28 + 2018 = B41 = 18.873.512 €
Ergebnis: 26.047,72 €
Ergebnis mit Makro: 51.758,38 €
Gruß
AW: Berechnungen der Summen nicht korrekt
12.10.2018 09:21:08
PeterK
Hallo Andreas
Public Sub Daten_holen_Aggregation()
     Dim strPfad As String, strDatei As String
     Dim raSpalte As Range
     Dim wbQuelle As Workbook
     Dim loSuchbegriff As Long
     Dim Kostenstelle As Long
     Dim KostenstelleStr As String
     Dim boGefunden As Boolean
     Dim loSumBewkum As Double
     Dim SummeL As Double, SummeW As Double, SummeD As Double, SummeG As Double, SummeV As Double
     Dim i As Long
     Dim aktJahr As Long
 
     aktJahr = Year(Now) Mod 100
 
     'Pfad an deine Bedürfnisse anpassen 
     strPfad = "C:\Users\A.Harzer\Desktop\"
     strDatei = "Aggregation Baustellenbewertung und Leistungsplanung_ab 2015.xlsx"
     
     loSuchbegriff = ActiveSheet.Range("J1")
     loSumBewkum = ActiveSheet.Range("I43")
     
     Kostenstelle = CLng(Mid(loSuchbegriff, 1, 2))
 
     'Bildschirmaktualisierung aus 
     Application.ScreenUpdating = False
 
     'Datei öffnen 
     Set wbQuelle = Workbooks.Open(strPfad & strDatei)
 
     'With wbQuelle.Worksheets("Werte für Bewertung") 
         ' Variabel initialisieren 
         SummeL = 0
         SummeW = 0
         SummeD = 0
         SummeG = 0
         SummeV = 0
         boGefunden = True
         
         For i = Kostenstelle To aktJahr
         
             KostenstelleStr = "Summe 20" & i
 
             'Suche nach Kostenstelle in Spalte 1 
             Set raSpalte = .Range("A:A").Find(what:=KostenstelleStr, LookIn:=xlValues, lookat:=xlWhole)
 
             'wenn gefunden dann 
             If Not raSpalte Is Nothing Then
                 'bei Fund Variable auf Wahr setzen 
                 boGefunden = boGefunden And True
                 
                 'Leistung 
                 SummeL = SummeL + .Cells(raSpalte.Row, 2).Value
                 
                 'Werkstattkosten 
                 SummeW = SummeW + .Cells(raSpalte.Row, 3).Value
                 
                 'Dieselkosten 
                 SummeD = SummeD + .Cells(raSpalte.Row, 4).Value
                 
                 'Grätekosten 
                 SummeG = SummeG + .Cells(raSpalte.Row, 5).Value
                 
                 'Verwaltungkosten 
                 SummeV = SummeV + .Cells(raSpalte.Row, 6).Value
                 
             Else
                boGefunden = False
             End If
             Set raSpalte = Nothing
             
         Next i
         'Summe übertragen 
         ThisWorkbook.ActiveSheet.Range("A65") = (SummeW * loSumBewkum) / SummeL
         ThisWorkbook.ActiveSheet.Range("A66") = (SummeD * loSumBewkum) / SummeL
         ThisWorkbook.ActiveSheet.Range("A67") = (SummeG * loSumBewkum) / SummeL
         ThisWorkbook.ActiveSheet.Range("A68") = (SummeV * loSumBewkum) / SummeL
     End With
 
     'Quelldatei ohne Speichern schließen 
     wbQuelle.Close (False)
 
     'kein Fund - Meldung ausgeben 
     'If Not boGefunden Then MsgBox "Mindest eine der Kostenstellen wurde nicht gefunden." 
 
     'Variable aufräumen 
     Set wbQuelle = Nothing
     
     'Bildschirmaktualisierung an 
     Application.ScreenUpdating = True
 End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige
AW: Berechnungen der Summen nicht korrekt
12.10.2018 10:04:26
Andreas
Hallo Peter,
DAAAAAAAAAAANNNNNNNNNNKKKKKKKEEE.
Ich habe seit Stunden rumprobiert.....
Irgendwann bekomme ich das mal selber hin.
Endlich gelöst.
Gruß
Andreas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige