Hallo Freddy,
klar kann ich. Hier nochmal der Code mit Kommentaren, was in jeder Zeile passiert.
Gruss Torsten
Sub test()
Dim ws As Worksheet 'Variablendeklaration fuer das Worksheet
Set ws = ThisWorkbook.Sheets("Sheet2") 'der Variablen den Worksheetnamen geben Tabellenname anpassen
'das oben, um nicht immer den gesamten Workbook und Worksheetnamen angebe zu muessen
Dim letzteA As Long, letzteB As Long 'Varaiblendeklaration fuer Zahelenwerte, hier fuer Zeilennummern
letzteA = ws.Cells(Rows.Count, 1).End(xlUp).Row 'letzte benutzte Zeile in Spalte A finden
Dim Adr As String 'Varaiblendeklaration fuer einen Text, hier fuer die Spalte C (Bereich)
Dim i As Long 'Variablendeklaration fuer den Schleifenzaehler
Dim Anzahl As Long 'Varaiblendeklaration fuer Zahelenwerte, hier fuer die Anzahl
ws.Range("B2:C" & letzteA).ClearContents 'den Bereich B2:C bis zur letzten benutzten Zeile loeschen
Anzahl = 6 'Wert fuer die Variable Anzahl angeben, Anzahl der Zahlen eingeben, aus denen der Durchschnitt berechnet werden soll
ws.Cells(1, 2) = "Durchschnittt aus " & Anzahl 'hier wird die Ueberschrift in B erzeugt
For i = 2 To letzteA - Anzahl - 1 'Schleifenstart in Zeile 2, da Zeile 1 Ueberschrift ist
letzteB = ws.Cells(Rows.Count, 2).End(xlUp).Row 'letzte benutzte Zeile in Spalte B ermitteln
ws.Cells(letzteB + 1, 2) = Application.WorksheetFunction.Average(ws.Range("A" & i & ":A" & i + Anzahl - 1)) 'den Durchschnitt berechnen und in die erste freie Zelle in Spalte B eintragen
ws.Cells(letzteB + 1, 2).NumberFormat = ("0.000") 'die Zelle Formatieren mit 3 Nachkommastellen
Adr = ws.Range("A" & i & ":A" & i + Anzahl - 1).Address 'den berechneten Bereich in Variable Adr speichern
ws.Cells(letzteB + 1, 3) = Adr 'Adr in C eintragen
Next 'naechsten Schleifendurchgang starten
End Sub
|