Mittelwerte über x Mappen und y Tabellenblätter

Guten Tag,
ich habe x Excel-Arbeitsmappen und in diesen etwa 10 Tabellenblätter. Die Tabellenblätter enthalten mehrere Spalten beginnend ab Spalte 3 und Zeilen beginnend ab 11 mit Zeitwerten oder eben leere Zellen. Ich möchte nun von den jeweiligen Zellen in einer neuen Mappe einen Mittelwert/Zelle bilden. Der Mittelwert soll sich aus dem Mittelwert aller Mappen und Tabellen je Zelle ergeben.
Kann mir jemand helfen. Bin VBA-Anfänger.

Hallo gast007,
nicht ganz elegant.

Gruß Skaletti!

Ich kopiere die Werte der TabBlätter in eine Spalte (Spalte C) des ersten Tabellenblatts, wenn A2 = WAHR. Damit habe ich alle Werte in einer Spalte stehen. Die Rechenoperation führe ich dann über Excel direkt durch (=MITTELWERT(C1:C1000).

Hier der Code:

Dim i As Byte
Dim a As Integer
Dim z As Integer

a = Worksheets.Count
z = 1

For i = 2 To a

If Worksheets(i).Range(„B1“).Value = „Wahr“ Then

Worksheets(1).Range(„C“ & z).Value = Worksheets(i).Range(„A1“).Value

End If

z = z + 1

Next i

ich habe x Excel-Arbeitsmappen und in diesen etwa 10
Tabellenblätter. Die Tabellenblätter enthalten mehrere Spalten
beginnend ab Spalte 3 und Zeilen beginnend ab 11 mit
Zeitwerten oder eben leere Zellen. Ich möchte nun von den
jeweiligen Zellen in einer neuen Mappe einen Mittelwert/Zelle
bilden. Der Mittelwert soll sich aus dem Mittelwert aller
Mappen und Tabellen je Zelle ergeben.
Kann mir jemand helfen. Bin VBA-Anfänger.

hallo James Bond,

In dieser Zeile:

For Spa = 3 To wks.Cells(11, Columns.Count).End(xlToLeft).Column

wir die Anzahl der Spalten pro Blatt ermittelt, ggfs. die 11 abändern gegen eine andere Zeile im Blatt.

Sub MW()
Dim wkb As Workbook, wks As Worksheet, Spa As Long, Zei As Long
Dim Anz As Long, MW As Double
For Each wkb In Workbooks
 If wkb.Name ThisWorkbook.Name And UCase(wkb.Name) "PERSONL.XLS" Then
 With wkb
 For Each wks In wkb.Worksheets
 For Spa = 3 To wks.Cells(11, Columns.Count).End(xlToLeft).Column
 For Zei = 11 To wks.Cells(Rows.Count, Spa).End(xlUp).Row
 Anz = Anz + 1
 MW = MW + wks.Cells(Zei, Spa).Value
 Next Zei
 Next Spa
 Next wks
 End With
 End If
Next wkb
ThisWorkbook.Worksheets(1).Range("A1") = MW / Anz
End Sub

Gruß
Reinhard