Supportnet Computer
Planet of Tech

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

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.

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

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

Antwort 5 von Roha

hey

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

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

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

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

  • 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




    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

    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

    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

    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)

    Antwort 15 von Roha

    Hallo zusammen

    Habe es getestet und es funktioniert einwandfrei

    danke und schönen abend an alle

    roha (alias Monica)