Mittelwert mit VBA wird nicht richtig berechnet

Bild

Betrifft: Mittelwert mit VBA wird nicht richtig berechnet
von: Manuel
Geschrieben am: 12.11.2015 21:43:54

Hi Leute,
ich habe ein kleines Problem, bei dem ich nicht weiter komme. Ich versuche mit meiner Formel den Mittelwert aller eingeblendeten Reihen zu ermitteln, der dann in B2 eingetragen wird. Mit diesem Wert werden dann noch weitere Rechnungen vorgenommen, die natürlich alle nicht stimmen können wenn schon der Mittelwert falsch ist.
Die Reihen blende ich ein/aus über einen Filter, der über eine ComboBox gesteuert wird. Sprich es wird nur das angezeigt was in der ComboBox ausgewählt wurde. Nur ist der Berechnete Mittelwert nie richtig und egal was ich aus der ComboBox auswähle verschieden.
Weiß einer von euch bescheid wo der Fehler liegt?
Hier mein Code:

Sub Formel_einfügen()
Dim lnglast As Long
Application.ScreenUpdating = False
Sheets("Cost_Developing").Unprotect
lnglast = Sheets("Cost_Developing").Range("A65536").End(xlUp).Row
Sheets("Cost_Developing").Cells(1, 2).Value = Application.WorksheetFunction.Average(Range(Cells( _
4, 6), Cells(lnglast, 6)))
For z = 4 To lnglast
Sheets("Cost_Developing").Cells(z, 8).Value = Sheets("Cost_Developing").Cells(1, 2) * Sheets(" _
Cost_Developing").Cells(1, 1) / 100
Sheets("Cost_Developing").Cells(z, 9).Value = Sheets("Cost_Developing").Cells(1, 2) * Sheets(" _
Cost_Developing").Cells(1, 3) / 100
Sheets("Cost_Developing").Cells(z, 10).Value = Sheets("Cost_Developing").Cells(1, 2).Value
Next z
Application.ScreenUpdating = True
End Sub
Danke und liebe Grüße,
Manuel

Bild

Betrifft: AW: Mittelwert mit VBA wird nicht richtig berechnet
von: Sepp
Geschrieben am: 12.11.2015 22:07:00
Hallo Manuel,
mit .Average berechnest du den Mittelwert über alle Zellen, egal ob sichtbar oder nicht.
Du musst mit .SubTotal(1,... (Teilergebnis) rechnen.

Sub Formel_einfügen()
Dim lnglast As Long, Z As Long

Application.ScreenUpdating = False

With Sheets("Cost_Developing")
  .Unprotect
  lnglast = .Range("A65536").End(xlUp).Row
  .Cells(1, 2).Value = Application.Subtotal(1, .Range(.Cells(4, 6), .Cells(lnglast, 6)))
  For Z = 4 To lnglast
    .Cells(Z, 8).Value = .Cells(1, 2) * .Cells(1, 1) / 100
    .Cells(Z, 9).Value = .Cells(1, 2) * .Cells(1, 3) / 100
    .Cells(Z, 10).Value = .Cells(1, 2).Value
  Next
End With

Application.ScreenUpdating = True
End Sub

Gruß Sepp


Bild

Betrifft: AW: Mittelwert mit VBA wird nicht richtig berechnet
von: Herbert Grom
Geschrieben am: 13.11.2015 10:47:52
Hallo Sepp, hallo Manuel,
die Zeile "lnglast = .Range("A65536").End(xlUp).Row" rechnet natürlich nur so lange richtig, wie die letzte belegte Zeile nicht über 65536 hinausgeht. Falls das aber doch mal der Fall sein sollte und ab Excel 2007 sowieso empfehlenswert, würde ich die folgende Zeile verwenden, dann bist Du auf der sicheren Seite:
lnglast = Cells(Rows.Count, 1).End(xlUp).Row
Servus

Bild

Betrifft: ...schlechte Empfehlung Herbert
von: EtoPHG
Geschrieben am: 13.11.2015 11:21:05
.... ;-)
die Punkte sollte man keinesfalls vergessen!
lnglast = .Cells(.Rows.Count, 1).End(xlUp).Row
Gruess Hansueli

Bild

Betrifft: AW: ...schlechte Empfehlung Herbert
von: Herbert Grom
Geschrieben am: 13.11.2015 11:34:51
Ok, OK, OK, Asche auf mein Haupt! Diesen . habe ich vergessen. Aber ich bin ja nicht der Papst, der von sich behauptet "unfehlbar" zu sein! ;o)=)
Servus

Bild

Betrifft: Nicht ein . sondern 2 . ! (owT) ;-)
von: EtoPHG
Geschrieben am: 13.11.2015 13:00:19


Bild

Betrifft: AW: ...schlechte Empfehlung Herbert
von: Manuel
Geschrieben am: 16.11.2015 17:49:29
Vielen Dank für euren ganzen Hilfen! Der lnglast wurde gewechselt :). Danke ihr alle!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Mittelwert mit VBA wird nicht richtig berechnet"