Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Funtion

Betrifft: Funtion von: Gregor
Geschrieben am: 20.09.2004 13:29:25

Hallo

Ich möchte mit einer Function-Funktion die Zeilen Y3 bis Y intlastRow zusammenzählen und durch die Anzahl Zeilen dividieren und diesen Wert einer Variablen übergeben. Soweit bin ich gekommen:

Function Summe()
Dim intlastRow, Wert
intlastRow = Cells(Rows.Count, 7).End(xlUp).Row
Cells(61, 25).FormulaLocal = "=SUMME(Y3:Y" & intlastRow & ")/" & "Anzahl(Y3:Y" & intlastRow & ")"
End Function


Ich will die Summe aber nicht in eine Zelle schreiben(hier Y61), sondern der Variablen Wert zuweisen. Wie gehe ich weiter vor?

Wie löse ich die
Function Summe in der 
Sub Prozedur aus?

Vielen Dank Gregor


  


Betrifft: AW: Funtion von: harry
Geschrieben am: 20.09.2004 13:44:56

hi,
versuch mal

intlastRow = Cells(Rows.Count, 25).End(xlUp).Row
For i = 3 To intlastRow
wert = wert + Cells(i, 25).Value
Next i
mittelwert = wert / (i - 1)

liebe grüße,
harry


  


Betrifft: AW: Funtion von: gregor
Geschrieben am: 20.09.2004 14:16:37

Hallo Harry

Klappt natürlich wunderbar und ist viel einfacher als mit einer Formel.

Vielen Dank für die rasche Antwort
Gregotr


  


Betrifft: AW: Function von: Christian
Geschrieben am: 20.09.2004 13:55:28

so zB:
Function Schnitt()
Dim intlastRow As Integer, Wert As Double
intlastRow = Cells(Rows.Count, 1).End(xlUp).Row
Wert = Application.Sum(Range("A1:A" & intlastRow)) / _
       Application.CountA(Range("A1:A" & intlastRow))
MsgBox Wert
End Function



  


Betrifft: AW: Function von: Gregor
Geschrieben am: 20.09.2004 15:56:30

Christian vielen Dank

Ich habe nun gemerkt, dass die Lösung von Harry nur mit ganzen Zahlen rechnet, bei meiner Aufgabe habe ich aber genaue Ergebnisse mit Kommastellen. Deine Lösung rechnet da genau.

Noch eine Frage zu CountA

Welchen Befehl muss ich nehmen, dass für den Divisor nur die Zellen mit Wert grösser Null (es gibt leere Zellen und Zellen mit 0.000) genommen wird?

Gruss Gregor


  


Betrifft: AW: Function von: Christian
Geschrieben am: 21.09.2004 09:50:34

Hallo Gregor,
wenn jetzt nur die positiven Zahlen in die Rechnung einfließen sollen, dann kannst du die Excelfunktionen "Zählenwenn" verwenden. (in VBA: CountIF)

Function Schnitt_II()
Dim intlastRow As Integer, Wert As Double
intlastRow = Cells(Rows.Count, 1).End(xlUp).Row
Wert = Application.Sum(Range("A1:A" & intlastRow)) / _
       Application.CountIf(Range("A1:A" & intlastRow), ">0")
End Function



Gruß
Christian