Supportnet / Forum / Anwendungen(Java,C++...)
VBA, Mittelwert berechnen
Frage
Hallöchen
Wie verwende ich in VBA die Mittelwert-, Min-, Max- formel?
Der gewünschte Bereich ist bereicht markiert, jetzt müsste ich nur noch die genannten Werte einfügen können.
Wer kann mir helfen??
Danke schon im Voraus.
roha
Antwort 1 von Saarbauer
Hallo,
in welchem Programm ?
Normalerweise Summe aller Werte druch anzahl der Werte
Gruß
Helmut
in welchem Programm ?
Normalerweise Summe aller Werte druch anzahl der Werte
Gruß
Helmut
Antwort 2 von Roha
hallo helmut
Progr. ist VBA/ Excel:
Habe folgendes bereits geschafft: der Gewünschte Bereich (Löhne) ist bereits markiert.
Dim Zeile As Long
Zeile = Range("E65536").End(xlUp).Row
Range(Cells(4, 8), Cells(Zeile, 8)).Select
Jetzt müsste ich aus dieser Selektierung den Mittel-, Minimal- und Maximalwert herausbekommen.
Es gibt das solche "Subtotal" (nr. 1-10) aber es klappt irgendwie nicht.
Progr. ist VBA/ Excel:
Habe folgendes bereits geschafft: der Gewünschte Bereich (Löhne) ist bereits markiert.
Dim Zeile As Long
Zeile = Range("E65536").End(xlUp).Row
Range(Cells(4, 8), Cells(Zeile, 8)).Select
Jetzt müsste ich aus dieser Selektierung den Mittel-, Minimal- und Maximalwert herausbekommen.
Es gibt das solche "Subtotal" (nr. 1-10) aber es klappt irgendwie nicht.
Antwort 3 von JoeKe
Hi Roha,
folgende Codes liefern die Ergebnisse:
Option Explicit
Sub Makro1()
Range("F1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-5]:RC[-1])"
End Sub
Sub Makro2()
Range("F1").Select
ActiveCell.FormulaR1C1 = "=MIN(RC[-5]:RC[-1])"
End Sub
Sub Makro3()
Range("F1").Select
ActiveCell.FormulaR1C1 = "=MAX(RC[-5]:RC[-1])"
End Sub
In dem von mir gewählten Beispielen wird der jeweilige Wert (Mittel, Min und Max) in F1 ausgegeben, die Werte befinden sich in A1-E1.
Ich hoffe du kanst damit etwas anfangen.
Mfg JöKe
folgende Codes liefern die Ergebnisse:
Option Explicit
Sub Makro1()
Range("F1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-5]:RC[-1])"
End Sub
Sub Makro2()
Range("F1").Select
ActiveCell.FormulaR1C1 = "=MIN(RC[-5]:RC[-1])"
End Sub
Sub Makro3()
Range("F1").Select
ActiveCell.FormulaR1C1 = "=MAX(RC[-5]:RC[-1])"
End Sub
In dem von mir gewählten Beispielen wird der jeweilige Wert (Mittel, Min und Max) in F1 ausgegeben, die Werte befinden sich in A1-E1.
Ich hoffe du kanst damit etwas anfangen.
Mfg JöKe
Antwort 4 von JoeKe
So ist es besser:
Option Explicit
Sub Makro1()
Range("F1").Formula = "=Average(A1:E1)"
End Sub
Sub Makro2()
Range("F1").Formula = "=MIN(A1:E1)"
End Sub
Sub Makro3()
Range("F1").Formula = "=MAX(A1:E1)"
End Sub
gleiche Funktion wie oben. Nur eleganter und kürzer.
MfG JöKe
Option Explicit
Sub Makro1()
Range("F1").Formula = "=Average(A1:E1)"
End Sub
Sub Makro2()
Range("F1").Formula = "=MIN(A1:E1)"
End Sub
Sub Makro3()
Range("F1").Formula = "=MAX(A1:E1)"
End Sub
gleiche Funktion wie oben. Nur eleganter und kürzer.
MfG JöKe
Antwort 5 von Roha
hey
danke viiiiiiiiiiiiiiiiielmals, werde es gleich probieren und melde mich dann, nochmals
danke noch mals
gruss
roha
danke viiiiiiiiiiiiiiiiielmals, werde es gleich probieren und melde mich dann, nochmals
danke noch mals
gruss
roha
Antwort 6 von Roha
Hallo JöKe
Habe es getestet, leider klappt das nicht, da ich ja im Voraus nicht den genauen Bereich (zb. a1:e1) kenne (e1 variert). Ich habe es zwar geschafft, den gewünschten Bereich mit einem Makro zu markieren.
Dim Zeile As Long
Zeile = Range("E65536").End(xlUp).Row
Range(Cells(4, 8), Cells(Zeile, 8)).Select
Jetzt müsste ich aus dieser Selektierung den Mittel-, Minimal- und Maximalwert herausbekommen.
Hoffe du kannst mit doch noch helfen.
danke und gruss
roha
Habe es getestet, leider klappt das nicht, da ich ja im Voraus nicht den genauen Bereich (zb. a1:e1) kenne (e1 variert). Ich habe es zwar geschafft, den gewünschten Bereich mit einem Makro zu markieren.
Dim Zeile As Long
Zeile = Range("E65536").End(xlUp).Row
Range(Cells(4, 8), Cells(Zeile, 8)).Select
Jetzt müsste ich aus dieser Selektierung den Mittel-, Minimal- und Maximalwert herausbekommen.
Hoffe du kannst mit doch noch helfen.
danke und gruss
roha
Antwort 7 von JoeKe
Hi roha,
leider kann ich dir im moment nur schnell helfen ohne es überprüfen zu können.
Versuch mal folgendes:
Sub Makro1()
Zeile = Range("E65536").End(xlUp).Row
Range("F1").Formula = "=Average(Cells(4, 8), Cells(Zeile, 8))"
End Sub
MfG JöKe
leider kann ich dir im moment nur schnell helfen ohne es überprüfen zu können.
Versuch mal folgendes:
Sub Makro1()
Zeile = Range("E65536").End(xlUp).Row
Range("F1").Formula = "=Average(Cells(4, 8), Cells(Zeile, 8))"
End Sub
MfG JöKe
Antwort 8 von Roha
Hallo JöKe
Hat leider nicht geklappt. Danke trotzdem
Falls du noch eine weitere Idee hast ..... ???
Ich bin da ....
gruss
roha
Hat leider nicht geklappt. Danke trotzdem
Falls du noch eine weitere Idee hast ..... ???
Ich bin da ....
gruss
roha
Antwort 9 von JoeKe
Hi roha,
hab mir das ganze nochmal in ruhe angesehen.
Um dir weiter helfen zu können müste ich jetzt erst einmal wissen:
Welcher Bereich soll berechnet werden? H1-letzte belegte Zeile?
Wo sollen die Ergebnisse ausgegeben werden?
Soll wahlweise eine Berechnung durchgeführt werden oder sollen alle drei durchgeführt werden?
MfG JöKe
hab mir das ganze nochmal in ruhe angesehen.
Um dir weiter helfen zu können müste ich jetzt erst einmal wissen:
MfG JöKe
Antwort 10 von JoeKe
Hi roha,
versuch mal diese Codes:
Sub Mittelwert()
Dim Zeile As Long, Bereich
Zeile = Range("E65536").End(xlUp).Row
Bereich = Range(Cells(4, 8), Cells(Zeile, 8))
Range("J1") = Application.WorksheetFunction.Average(Bereich)
End Sub
Sub Max()
Dim Zeile As Long, Bereich
Zeile = Range("E65536").End(xlUp).Row
Bereich = Range(Cells(4, 8), Cells(Zeile, 8))
Range("J2") = Application.WorksheetFunction.Max(Bereich)
End Sub
Sub Min()
Dim Zeile As Long, Bereich
Zeile = Range("E65536").End(xlUp).Row
Bereich = Range(Cells(4, 8), Cells(Zeile, 8))
Range("J3") = Application.WorksheetFunction.Min(Bereich)
End Sub
MfG JöKe
versuch mal diese Codes:
Sub Mittelwert()
Dim Zeile As Long, Bereich
Zeile = Range("E65536").End(xlUp).Row
Bereich = Range(Cells(4, 8), Cells(Zeile, 8))
Range("J1") = Application.WorksheetFunction.Average(Bereich)
End Sub
Sub Max()
Dim Zeile As Long, Bereich
Zeile = Range("E65536").End(xlUp).Row
Bereich = Range(Cells(4, 8), Cells(Zeile, 8))
Range("J2") = Application.WorksheetFunction.Max(Bereich)
End Sub
Sub Min()
Dim Zeile As Long, Bereich
Zeile = Range("E65536").End(xlUp).Row
Bereich = Range(Cells(4, 8), Cells(Zeile, 8))
Range("J3") = Application.WorksheetFunction.Min(Bereich)
End Sub
MfG JöKe
Antwort 11 von Roha
Hallo JöKe
Habe es geschafft es zu lösen noch am selben Tag! Hier mein Lösungsweg:
Dim Zeile As Long
Dim ISelktMAZeile As Integer ´ mein Zeilen Zähler
Zeile = Range("E65536").End(xlUp).Row
Range(Cells(4, 8), Cells(Zeile, 8)).Select
iSelektMAZeile = iSelektMAZeile + 1
´**Mittelwert berechnen**
Range(Cells(4, 8), Cells(Zeile, 8)).Select
TabBlatt.Cells(iSelektMAZeile, "h").Activate
ActiveCell.FormulaR1C1 = "=AVERAGE(R4C8:R[-4]C)"
Range(Cells(4, 8), Cells(Zeile, 8)).Select
TabBlatt.Cells(iSelektMAZeile, "f") = "Mittelwert"
iSelektMAZeile = iSelektMAZeile + 1
usw. mit min und max
es funktionert, zum Glück!!¨
Trotzdem vielen dank für alles!!
habe aber noch weitere frage:
Weisst du, was ich für eine makro schreiben kann, wenn ich in einem Workbook über 30 Tabellen mit verschiedenen namen habe um die übersicht nicht zu verlieren?
habe jetzt eine tabelle gemacht "_Verzeichnis" und Hiperlinks eingefügt. aber ich weiss, dass es auch ein makro gibt, wo ich alle Worksheet im Workbook alphabetish ordnen lassen kann. weisst du vielleicht wie das geht?
gruss
roha
Habe es geschafft es zu lösen noch am selben Tag! Hier mein Lösungsweg:
Dim Zeile As Long
Dim ISelktMAZeile As Integer ´ mein Zeilen Zähler
Zeile = Range("E65536").End(xlUp).Row
Range(Cells(4, 8), Cells(Zeile, 8)).Select
iSelektMAZeile = iSelektMAZeile + 1
´**Mittelwert berechnen**
Range(Cells(4, 8), Cells(Zeile, 8)).Select
TabBlatt.Cells(iSelektMAZeile, "h").Activate
ActiveCell.FormulaR1C1 = "=AVERAGE(R4C8:R[-4]C)"
Range(Cells(4, 8), Cells(Zeile, 8)).Select
TabBlatt.Cells(iSelektMAZeile, "f") = "Mittelwert"
iSelektMAZeile = iSelektMAZeile + 1
usw. mit min und max
es funktionert, zum Glück!!¨
Trotzdem vielen dank für alles!!
habe aber noch weitere frage:
Weisst du, was ich für eine makro schreiben kann, wenn ich in einem Workbook über 30 Tabellen mit verschiedenen namen habe um die übersicht nicht zu verlieren?
habe jetzt eine tabelle gemacht "_Verzeichnis" und Hiperlinks eingefügt. aber ich weiss, dass es auch ein makro gibt, wo ich alle Worksheet im Workbook alphabetish ordnen lassen kann. weisst du vielleicht wie das geht?
gruss
roha
Antwort 12 von JoeKe
Hi Roha,
vielendank für deine Rückinfo.
Zum Tabellenblätter sortieren sieh dir das mal an. Beispieldatei 18.
MfG JöKe
vielendank für deine Rückinfo.
Zum Tabellenblätter sortieren sieh dir das mal an. Beispieldatei 18.
MfG JöKe
Antwort 13 von Saarbauer
Hallo,
für die Letzte Frage mit den Tabellen verschieben wäre ein neuer Thread günstiger gewesen.
Aber mit den
Sheets("Tabelle3").Select
Sheets("Tabelle3").Move Before:=Sheets(2)
Sheets("Tabelle1").Select
Sheets("Tabelle1").Move After:=Sheets(2)
Kann man im Makro die Tabellenblätter verschieben.
Da du eine Liste hast könnest du nach der Liste sortieren.
Gruß
Helmut
für die Letzte Frage mit den Tabellen verschieben wäre ein neuer Thread günstiger gewesen.
Aber mit den
Sheets("Tabelle3").Select
Sheets("Tabelle3").Move Before:=Sheets(2)
Sheets("Tabelle1").Select
Sheets("Tabelle1").Move After:=Sheets(2)
Kann man im Makro die Tabellenblätter verschieben.
Da du eine Liste hast könnest du nach der Liste sortieren.
Gruß
Helmut
Antwort 14 von Roha
Hallo Jöke und Helmut
Herzlichen Dank für eure Tips! Werde es gleich testen und gucken was am besten klappt.
danke und gruss
roha
(alias Monica)
Herzlichen Dank für eure Tips! Werde es gleich testen und gucken was am besten klappt.
danke und gruss
roha
(alias Monica)
Antwort 15 von Roha
Hallo zusammen
Habe es getestet und es funktioniert einwandfrei
danke und schönen abend an alle
roha (alias Monica)
Habe es getestet und es funktioniert einwandfrei
danke und schönen abend an alle
roha (alias Monica)