Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
224to228
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
224to228
224to228
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Min/Max/Median/Standardabweichung unter Bedingung

Min/Max/Median/Standardabweichung unter Bedingung
27.02.2003 17:57:32
Karsten
Hallo,

wäre super wenn mir mit diesem Problem jemand helfen könnte:

Ich habe eine Tabelle in der in der A-Spalte das Alter von Mitarbeitern steht (fortlaufend von 22 bis 62) und in der B-Spalte die Anzahl der Mitarbeiter in dem jeweiligen Alter.

Nun würde interessieren wie alt der jüngste Mitarbeiter ist (kleinster A Wert für den B >< 0), der älteste (größter A Wert für B><0), und richtig kniffelig: Der Median sowie die Standardabweichung.

Mit der Tabelle bin ich sonst doch etwas überfordert und wäre echt dankbar wenn mir jemand sagen könnte, wie sich das in Excel direkt oder mittels VBA umsetzen lässt.

cya Karsten


10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Min/Max/Median/Standardabweichung unter Bedingung
27.02.2003 18:13:31
Christopher Nolte

Hallo Karsten,

wenn in Deiner Tabelle keine Spaltenüberschriften vorhanden sind, also der belgte Bereich A1 bis A41 für das Alter und B1 bis B41 für die Anzahl der Mitarbeiter dieser Altersklasse ist, funktionieren für das Min- und das Max-Problem folgende Makros:

Suche den jüngsten Mitarbeiter:

Sub JuengsterMA()

Dim intRow As Integer
Dim ergebnis As Integer
intRow = 1
Do Until Cells(intRow, 2) <> 0
intRow = intRow + 1
Loop
ergebnis = Cells(intRow, 1)
MsgBox "Der jüngste Mitarbeiter ist " & ergebnis
End Sub

Suche den ältesten Mitarbeiter:

Sub AeltesterMA()

Dim intRow As Integer
Dim ergebnis As Integer
intRow = 41
Do Until Cells(intRow, 2) <> 0
intRow = intRow - 1
Loop
ergebnis = Cells(intRow, 1)
MsgBox "Der älteste Mitarbeiter ist " & ergebnis
End Sub

Zu Median und Standardabweichung muss ich noch ein wenig grübeln.

Viele Grüße

Christopher



Anzeige
Re: Min/Max/Median/Standardabweichung unter Bedingung
28.02.2003 09:18:23
Karsten

Hallo Christopher,

danke das hilft mir schonmal weiter. Leider fängt aber die Liste nicht in A1 an (Überschrift etc.), aber versuche gerade das anzupassen.

cya Karsten

Re: Min/Max/Median/Standardabweichung unter Bedingung
28.02.2003 10:29:46
Christopher Nolte

Hallo Karsten,

ersetze im Makro "JuengsterMA" einfach die Zeile

intRow = 1

durch

intRow = 2

und im Makro "AeltesterMA" die Zeile

intRow = 41

durch

intRow = 42

Dann klappt es auch mit den Überschriften.

Viele Grüße

Christopher


Re: Min/Max/Median/Standardabweichung unter Bedingung
28.02.2003 11:58:35
Karsten

Danke!

Hab nun noch ne Lösung gefunden - geht auch direkt in Excel:
=MIN(WENN(B3:B43<>0;A3:A43))

Allerdings ist die Median-Geschichte ne recht harte Nuss. Irgendwelche Ideen ?

Anzeige
Re: Min/Max/Median/Standardabweichung unter Bedingung
28.02.2003 13:24:03
Christopher Nolte

Hallo Markus,

der Median ist in der Tat eine harte Nuss, aber ich habe eine einigermaßen vernünftige Lösung gefunden.

Trage zunächst in die Zelle B44 folgende Formel ein:

=(SUMME(B2:B43)+1)/2

Anschließend in Zelle C44 folgende Formel:

=GANZZAHL(B44)

Jetzt musst Du Dir nur noch folgendes Makro einfügen und schon läuft es mit dem Median:

Sub Median()

Dim intRow As Integer
Dim ergebnis As Variant
Dim Hugo1 As Integer
Dim Hugo2 As Integer
intRow = 2
summe = 0
Do Until summe >= Cells(44, 3)
summe = summe + Cells(intRow, 2)
intRow = intRow + 1
Loop
Hugo1 = Cells(44, 3)
If Cells(44, 3) <> Cells(44, 2) _
Then Hugo2 = Cells(44, 3) + 1 _
Else: Hugo2 = Cells(44, 3)
If Cells(44, 3) = Cells(44, 2) _
Then ergebnis = Cells(intRow - 1, 1) _
Else: If summe >= Hugo2 _
Then ergebnis = Cells(intRow - 1, 1) _
Else ergebnis = (Cells(intRow - 1, 1) + Cells(intRow, 1)) / 2
MsgBox "Der Median ist: " & ergebnis

End Sub

Jetzt fehlt nur noch eine schlaue Lösung für die Standardabweichung.

Viele Grüße

Christopher

Anzeige
Re: Min/Max/Median/Standardabweichung unter Bedingung
28.02.2003 14:18:47
Karsten

Hallo Christopher,

danke erstmal für die Mühe, allerdings bekomme ich folgenden Fehler ausgegeben:

Laufzeitfehler 13:
typen unverträglich [summe = summe + Cells(intRow, 2)]

Kann das daran liegen, dass nicht in jeder Zelle ein Wert eingetragen ist? Gibt es auch eine Möglichkeit das ganz ohne die Hilfszellen B44/C44 zu machen?

Gruß,

Karsten

Re: Min/Max/Median/Standardabweichung unter Bedingung
28.02.2003 16:07:40
Christopher Nolte

Hallo Karsten,

war mein Fehler, ich habe die Variable Summe nicht definiert.

Füge einfach hinter Dim Hugo2 As Integer noch die Zeile

Dim Summe as Variant

ein. Dann solte es gehen. Daneben habe ich das Makro so angepasst, dass die erforderlichen Berechnungen (Formeln) von Dir nicht mehr eingegeben werden müssen. Das Makro gibt die Formeln selber ein und löscht Sie zum Ende wieder. Insgesamt hast Du dann folgendes Makro (Ergänzungen zum vorherigen habe ich mit einem * vor der entsprechenden Zeile versehen):

Sub Median()

Dim intRow As Integer
Dim ergebnis As Variant
Dim Hugo1 As Integer
Dim Hugo2 As Integer
* Dim Summe As Variant
* Range("B44").Select
* ActiveCell.FormulaR1C1 = "=(SUM(R[-42]C:R[-2]C) + 1) / 2"
* Range("C44").Select
* ActiveCell.FormulaR1C1 = "=INT(RC[-1])"
intRow = 2
Summe = 0
Do Until Summe >= Cells(44, 3)
Summe = Summe + Cells(intRow, 2)
intRow = intRow + 1
Loop
Hugo1 = Cells(44, 3)
If Cells(44, 3) <> Cells(44, 2) _
Then Hugo2 = Cells(44, 3) + 1 _
Else: Hugo2 = Cells(44, 3)
If Cells(44, 3) = Cells(44, 2) _
Then ergebnis = Cells(intRow - 1, 1) _
Else: If Summe >= Hugo2 _
Then ergebnis = Cells(intRow - 1, 1) _
Else ergebnis = (Cells(intRow - 1, 1) + Cells(intRow, 1)) / 2
* Range("B44").Select
* Selection.ClearContents
* Range("C44").Select
* Selection.ClearContents
MsgBox "Der Median ist: " & ergebnis

End Sub

Viele Grüße

Christopher

Anzeige
Re: Min/Max/Median/Standardabweichung unter Bedingung
03.03.2003 09:27:02
Karsten

Hallo Christopher,

trotz der "Dim Summe As Variant" Zeile erhalte ich immernoch den gleichen Fehler - Laufzeitfehler 13, Typen unverträglich bei "Summe = Summe + Cells(intRow, 3)".

Ich hab leider keine Ahnung an was das liegen könnte.

Gruß,

Karsten

Re: Min/Max/Median/Standardabweichung unter Bedingung
03.03.2003 10:45:44
Karsten

Hallo Christopher

Ok hab nun folgende Lösung verwendet:

Sub MedianM()
Dim intz As Integer
Dim inti As Integer
Dim intn As Integer
intz = 3
For inti = 3 To Cells(Rows.Count, 1).End(xlUp).Row
For intn = 0 To Cells(inti, 2).Value - 1
Cells(intz + intn, 7).Value = Cells(inti, 1).Value
Next intn
intz = intz + intn
Next inti
Range("C53").FormulaR1C1 = "=MEDIAN(R[-50]C[+4]:R[600]C[+4])"
End Sub


und als Standardabweichung dann einfach die aus der G-Spalte genommen. Ist zwar nicht so elegant mit der Hilfsspalte, aber wenn man den Druckbereich festlegt und das Zellenformat auf ";;;" ändert, fällt es nicht weiter auf.

Gruß,

Karsten


Anzeige
Re: Min/Max/Median/Standardabweichung unter Bedingung
03.03.2003 13:05:22
Christopher Nolte

Hallo Karsten,

die Ursache Deiner Fehlermeldung kann ich mir dann auch nicht erklären. Aber da Du ja inzwischen eine funktionierende Lösung gefunden hast, ist das ja nicht so schlimm.

Viele Grüße

Christopher

54 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige