Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mittelwert aller Maxwerte ohne Hilfsspalte

Mittelwert aller Maxwerte ohne Hilfsspalte
Benjamin
Guten Morgen zusammen,
ich habe ein kleines Excelproblem, welches ich gerne ohne Hilfsspalte lösen würde.
Ich habe eine Liste mit Zeiten.
Pro Tag bis max 8 Zeiten. (ein Tag eine Zeile, also für acht Zeiten, acht Spalten)
Es können maximal 50 Tage in einem Tabellenblatt stehen.
Nun möchte ich Pro Tag die Max – Zeit finden und aus den Max werten pro Tag den Durchschnitt aller Maxwerte bilden.
Also z.B:
Tag1: 12:00, 14:00, 11:00, 17:00
Tag2: 15:00, 15:00, 16:00, 18:00
Tag4: 19:00, 16:00
Max Tag 1 = 17:00
Max Tag 2 = 18:00
Max Tag 3 = 19:00
Mittelwert der Maxwerte = 18:00
Ich habe mich schon an Summenprodukt, Teilergebnisse probiert um die Summe aller Maxwerte zu erhalten und dass dann durch die Anzahl der Tage zu teilen. Aber irgendwass mache ich falsch.
Könnt ihr mir helfen?
Viele Grüsse
Benjamin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Mittelwert der Zeilenmaxima
14.04.2010 08:52:54
WF
Hi Benjamin,
die Werte stehen pro Zeile in den Spalten B bis i
Leerzeilen dürfen nicht vorkommen
folgende Arrayformel:
{=MITTELWERT(TEILERGEBNIS(4;BEREICH.VERSCHIEBEN(B1:I1;ZEILE(1:50)-1;)))}
Salut WF
AW: Mittelwert der Zeilenmaxima
14.04.2010 10:35:07
Benjamin
Hallo zusammen,
danke für Eure Hilfe.
WF, leider habe ich leerzeilen (jede zweite) und auch leerspalten.
Also müsste immer pro gefüllte Zeile gesucht werden...
Andi, super Lösung, aber leider kann ich keine Makros laufen lassen....
Läuft es also doch auf eine Hilfsspalte hinaus?
Gruss
Benjamin
dann eben mit Leerzeilen
14.04.2010 10:49:09
WF
Hi,
ist nicht mal ne Arrayformel:
=SUMMENPRODUKT(TEILERGEBNIS(4;BEREICH.VERSCHIEBEN(B1:I1;ZEILE(1:50)-1;))) /SUMME(1*(MMULT(1*(ISTLEER(B1:I50));ZEILE(1:8)^0)<8))
Salut WF
Anzeige
AW: Mittelwert aller Maxwerte ohne Hilfsspalte
14.04.2010 09:37:45
Andi
Hi Benjamin,
Function Test()
MsgBox MittelwertMaxwerte
End Function Function MittelwertMaxwerte() As String
Dim i, n, k, LetzteSpalte, maxwert As Long
Dim arrMW() As Long
Dim sh As Object
Set sh = ThisWorkbook.Sheets("Nametabelle")
k = 0
For i = 1 To EFZVUIS(sh, 1) - 1 'Anzahl Tage ' i =1 entspricht Zeile 1
maxwert = CLng(Left(CStr(sh.Cells(i, 1)), 2))
LetzteSpalte = EFSVRIZ(sh, i) - 1
For n = 1 To LetzteSpalte '1 bis 8 Zeiten möglich n = 1 entspricht Spalte A
If n If CLng(Left(CStr(sh.Cells(i, n)), 2)) maxwert = CLng(Left(CStr(sh.Cells(i, n + 1)), 2))
End If
End If
Next
If Not IsEmpty(maxwert) Then
ReDim Preserve arrMW(0 To k)
arrMW(k) = maxwert
k = k + 1
End If
maxwert = 0
Next
On Error Resume Next
i = UBound(arrMW())
If Err.Number 0 Then Exit Function
On Error GoTo 0
maxwert = 0
For k = 0 To i
maxwert = maxwert + arrMW(k)
Next
MittelwertMaxwerte = CStr(maxwert / (i + 1)) & ":00"
Set sh = Nothing
End Function
Public Function EFSVRIZ(ByVal DasTabBlatt As Worksheet, ByVal DieZeile As Long) As Long
'Keine ausgeblendeten Spalten im Bereich
'Weiterverwendung auf eingene Gefahr
' *** Erste Freie Spalte von Rechts in einer Zeile ***
'Gibt die erste Freie Spalte von rechts  zurück.
'ist die Letzte Spalte belegt so wird - 1 zurückgegeben bei einem Fehler -2
Dim i As Long
On Error GoTo Fehler
With DasTabBlatt
If IsEmpty(.Cells(DieZeile, .Columns.Count)) Then
i = .Cells(DieZeile, .Columns.Count).End(xlToLeft).Column
If i = 1 Then
EFSVRIZ = IIf(IsEmpty(.Cells(DieZeile, i)), 1, 2)
Else
EFSVRIZ = i + 1
End If
Else
EFSVRIZ = -1
End If
End With
Exit Function
Fehler:
EFSVRIZ = -2
End Function
Public Function EFZVUIS(ByVal DasTabBlatt As Worksheet, ByVal DieSpalte As Integer) As Long
'Weiterverwendung auf eingene Gefahr
'Keine Zeilen ausgeblendet
' *** Erste Freie Zeile von unten in einer Spalte ***
'Gibt die erste Freie Zeile von unten zurück.
'ist die Letzte Zelle belegt so wird - 1 zurückgegeben bei einem Fehler -2
Dim i As Long
On Error GoTo Fehler
With DasTabBlatt
If IsEmpty(.Cells(.Rows.Count, DieSpalte)) Then
i = .Cells(.Rows.Count, DieSpalte).End(xlUp).Row
If i = 1 Then
EFZVUIS = IIf(IsEmpty(.Cells(i, DieSpalte)), 1, 2)
Else
EFZVUIS = i + 1
End If
Else
EFZVUIS = -1
End If
End With
Exit Function
Fehler:
EFZVUIS = -2
End Function
Anbei XLS.
https://www.herber.de/bbs/user/69074.xls
Gruß Andi
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige