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