Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1568to1572
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

VBA | MittelwertWenn | Variable

VBA | MittelwertWenn | Variable
28.07.2017 09:22:06
Adam
Hallo,
kann mir bitte jemand erklären, was ich falsch mache?
der Code:
Worksheets("Brand_Reach").Cells(2, 3).Value =Application.WorksheetFunction.AverageIf(Worksheets("Brand").Range("H5:S5"), "größer 0")
funktioniert.
Sobald ich aber die Rangangabe mit Cells() vornehme. Funktioniert es nicht mehr.
Worksheets("Brand_Reach").Cells(2, 3).Value = _
Application.WorksheetFunction.AverageIf(Worksheets("Brand").Range(Cells(5, 8), Cells(5, 19)), "größer 0")
die Bedingung "größer 0" musste ich hier wörtlich schreiben, sonst meckert die Webseite...
Vielen Dank für Eure Hilfe!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: eine Vermutung
28.07.2017 09:29:30
Fennek
Hallo,
je nachdem, von welchem Sheet ein solcher Befehl aufgerufen wird, kann es klappen oder auch nicht.
Sicherer ist:

with Worksheets("Brand_Reach")
.Cells(2, 3).Value = _
Application.WorksheetFunction.AverageIf(.Range(.Cells(5, 8), .Cells(5, 19)), "größer 0")
end with
Entscheidend sind die "." vor cells
Es gibt sicher auch noch anderer mögliche Fehlerquellen.
mfg
AW: eine Vermutung
28.07.2017 09:37:09
Adam
Hi Fennek,
danke für die rasche Antwort.
Leider funktioniert es nicht. In der Funktion muss aber auch ein Verweis auf ein anderes Sheet stehen ("Brand").
With Worksheets("Brand_Reach")
.Cells(2, 3).Value = Application.WorksheetFunction.AverageIf(Worksheets("Brand").Range(.Cells(5, 8), .Cells(5, 19)), "größer 0")
End With
VG
Adam
Anzeige
AW: e2. Versuch
28.07.2017 09:42:17
Fennek

with Worksheets("Brand")
Worksheets("Brand_Reach").Cells(2, 3).Value = _
Application.WorksheetFunction.AverageIf(.Range(.Cells(5, 8), .Cells(5, 19)), "größer 0")
end with

AW: e2. Versuch
28.07.2017 10:03:52
Adam
1000 Dank Fennek! Funktioniert!
Schönen Freitag noch!
AW: eine Vermutung
28.07.2017 10:04:27
Werner
Hallo Adam,
so:
Public Sub Mittelwert()
Dim raBereich As Range
With Worksheets("Brand")
Set raBereich = .Range(.Cells(5, 8), .Cells(5, 19))
Worksheets("Brand_Reach").Cells(2, 3).Value = _
Application.WorksheetFunction.SumIf(raBereich, ">0") / _
Application.WorksheetFunction.CountIf(raBereich, ">0")
End With
End Sub
Gruß Werner
Anzeige
AW: eine Vermutung
28.07.2017 10:40:58
Adam
Auch dir Werner, vielen Dank!
Ich dachte ich kriege es alleine gebacken...
Ich möchte die Reihe mit "i" ansprechen. Geht das überhaupt mit "With"?
for i = 1 to 100
With Worksheets("Brand").Range(Cells(i, 8), Cells(i, 19))
Worksheets("Brand_Reach").Cells(i, 3).Value = _
Application.WorksheetFunction.AverageIf(.Range(.Cells(i, 8), .Cells(i, 19)), "größer 0")
End With
next
Danke
AW: eine Vermutung
28.07.2017 11:58:17
Werner
Hallo Adam,
da muss aber auch noch eine Prüfung rein, ob überhaupt Daten in der jeweiligen Zelle vorhanden sind. Ansonsten knallt es. Die Prüfung habe ich über Application.Sum mit eingebaut.
Option Explicit
Public Sub Mittelwert()
Dim i As Long
Dim raBereich As Range
With Worksheets("Brand")
For i = 1 To 100
Set raBereich = .Range(.Cells(i, 8), .Cells(i, 19))
If WorksheetFunction.Sum(raBereich) > 0 Then
Worksheets("Brand_Reach").Cells(i, 3).Value = _
Application.WorksheetFunction.AverageIf(raBereich, ">0", raBereich)
End If
Next
End With
Set raBereich = Nothing
End Sub
Gruß Werner
Anzeige
AW: eine Vermutung
28.07.2017 13:00:37
Adam
Vielen Dank Werner! Du hast mir sehr geholfen!
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
28.07.2017 13:05:28
Werner

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige