Danke mal wieder für die Antwort Torsten,
ja das stimmt, die Schleife soll der Anfang einer größeren berechnung werden, die später noch automatisiert die werte in ein Extra blatt kopieren soll (was jetzt aber erstmal noch nicht so wichtig ist, da der wert noch weiter verarbeitet werden soll), allerdings verstehe ich grundsätzlich nicht was ich tun muss um einen Loop zu bauen der bei den jeweiligen Zeilenzugriffe immer dieie obere zeile um eine Zeile verringert und die untere Zeile um eine Zeile erweitert, das versuche ich in deinem Code zu verstehen, ich denke das hast du in diesem Teil beschrieben richtig?
For i = 2 To letzteA - Anzahl - 1 'Schleifenstart in Zeile 2, da Zeile 1 Ueberschrift ist
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
Next 'naechsten Schleifendurchgang starten
Und warum musst du mit Excel erstmal die letzte Spalte ermitteln?
letzteB = ws.Cells(Rows.Count, 2).End(xlUp).Row 'letzte benutzte Zeile in Spalte B ermitteln
Ich habe selber versucht einen Code zu bauen, mit Makroaufzeichnungen und Youtube Tutorials, warum kann ich nicht einfach in der Zeile für die Average Funktion das X für den Loop einfügen, sodass er die Zeile des Durchschnitts automatisch verändert?
Sub AverageHelp()
'
' AverageHelp Macro
'
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim x As Variant
x = 1 'weil er in zeile 2 anfangen soll'
Do
x = x + 1
Range("A20").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-18-x]C:R[-15-x]C)" 'hier habe ich das "-x" hinzugefügt, funktioniert aber nicht-> Runtime Error 1004'
Range("A21").Select
Loop Until x > 18 'In zeile 18 sind meine letzten werte'
End Sub
Viele Fragen.. sorry dafür
MfG Freddy
|