[Excel] VBA: Werte auf anderem Tabellenblatt berechnen

amn.ssy

Erfahrenes Mitglied
Moin,

Seit ein paar Tagen kaue ich an einer sinnvollen Auswertung von Daten in Tabelle1 (data) auf Tabelle2 (evalution) herum.
Dort benötige ich, bestenfalls in einem Aufwasch, die Header

Batch | AVG 10 | AVG 16 | AVG 22 | Min 10 | Max 10 | Min 16 | Max 16 | Min 22 | Max 22

und darunter die entsprechden Berechnungen für die Daten auf Tabelle1 z.B. =MITTELWERT(data!C2:N2) oder =MIN(data!C2:N2)) für jede erzeugte Zeile (Batch) auf Tabelle1 (data). Jede Zeile in "data" besteht neben Batch und Date aus 3 * 12 Werten (c:n, o-z und aa-al)

Die Header in die Vorlage gleich reinzuschreiben ist das geringste Problem, auch die entsprechenden Formeln gleich darunter zu setzen bekommt notfalls noch mein Youngster hin. Theoretisch könnte ich sie auch gleich x-mal nach unterziehen. Aber das kann kaum ein sinnvolller Weg sein, zumal ich im Vorfeld gar nicht weiß wieviel Datensätze in "data" vorhanden sind - von 1 bis 200 ist alles möglich.
Idee?

Danke im Voraus und Gruß
opiWahn
 
Das Change-Event von Worksheet?
Da bekommst du die Target-Range von data genannt, wenn sich dort was ändert.
Innerhalb des Events ein Select Case, je nach dem welche Zellen in Data es betrifft, und auf Basis dessen dann in Tabelle2 per FormulaLocal-Eigenschaft dynamisch die Formel einsetzen
 
Das Change-Event von Worksheet?
Da bekommst du die Target-Range von data genannt, wenn sich dort was ändert.
Innerhalb des Events ein Select Case, je nach dem welche Zellen in Data es betrifft, und auf Basis dessen dann in Tabelle2 per FormulaLocal-Eigenschaft dynamisch die Formel einsetzen

Oder man führt einfach automatisch das aus, was als manueller Weg oben aufgeführt wurde.
Beispiel:
Visual Basic:
' Annahmen:
' 1) Zeile 1 ist der Tabellenheader
' 2) Zeile 2 sind bereits die Formeln aufgeführt
' 3) data enthält mindestens 1 Zeile abgesehen vom Header
Sub MyAutoFill()
    Dim lastLine As Integer

    lastLine = Worksheets("data").UsedRange.Rows.Count    
    With Worksheets("evalution")
        .Range("A2:J2").AutoFill Destination:=.Range("A2:J" & lastLine), Type:=xlFillDefault
    End With
End Sub
 
Zuletzt bearbeitet:
Hallo,

hab den Vorschlag mit einer kleinen Änderung so eingesetzt - Vielen Dank.
Visual Basic:
Sub fillEvalution()
    Dim lastLine As Integer
    
    lastLine = Worksheets("data").UsedRange.Rows.Count
    Sheets("evalution").Select
    With Worksheets("evalution")
        .Range("A2:J2").AutoFill Destination:=.Range("A2:J" & lastLine), Type:=xlFillDefault
    End With
    
End Sub

Sheets("evalution").Select hat sich als dringend nötig erwiesen ;-)

LG
opiwahn
 
Zurück