Anzeige
Archiv - Navigation
1036to1040
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

Ich benötige eure Hilfe.

Ich benötige eure Hilfe.
08.01.2009 14:43:00
John
Hallo ich hoffe ihr könnt mir helfen. Es ist wirklich wichtig.
Für mein Studium muss ich folgende Aufgabe lösen:
Mit Hilfe eines VBA-Makros soll für einen auf der Tabelle markierten, einspaltigen Bereich das Maximum, das Minimum und der Median (der mittlere Wert bei einer aufsteigenden Sortierung) gekennzeichnet werden. Dabei soll eine vorbereitete function Wert genutzt werden, die den n-ten Wert des Vektors nach einer aufsteigenden Sortierung zurückgibt!
Die unten aufgeführte Mappe zeigt meine bisherige Arbeit. Maximum und Minimum funktionieren schon. Jetzt fehlt noch die Berechnung, Markierung und Formatierung des Medians. Dafür müssen wir die vorbereitete function Wert verwenden.
Ich habe die vorgegebenen Angaben dazu in Modul1 eingefügt.
Meiner Meinung nach müsste der richtige Median bei den angegebenen Zahlen 10 ergeben.
Leider weiß ich nicht richtig, wie ich Modul1 jetzt verwenden kann (wahrscheinlich ist es aber nicht schwierig?).
Ich hoffe ihr könnt mir irgendwie helfen.
Falls noch etwas unklar ist, so könnt ihr mir gerne Fragen stellen.
Vielen Dank.
Grüße John
https://www.herber.de/bbs/user/58192.xls

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Min, Max und Median
08.01.2009 16:35:41
Erich
Hallo John,
so sieht bei mir jetzt der Code der UF1 aus:

Option Explicit
Private Sub CommandButton1_Click()
Dim dblM As Double, lngZ As Long
With UserForm2
If CheckBox1.Value Then
'Makro formatiert Maximum einer markierten Spalte fett
dblM = Application.max(Selection)
lngZ = Application.Match(dblM, Selection, 0)
' Formatierung je nach Wahl des Kontrollkästchens
If .CheckBox1.Value Then _
Selection.Cells(lngZ).Font.Bold = True
If .CheckBox2.Value Then
If .OptionButton1.Value Then
Selection.Cells(lngZ).Font.Color = vbGreen
ElseIf .OptionButton2.Value Then
Selection.Cells(lngZ).Font.Color = vbRed
End If
End If
End If
If CheckBox2.Value Then
'Makro formatiert Minimum einer markierten Spalte fett
dblM = Application.min(Selection)
lngZ = Application.Match(dblM, Selection, 0)
' Formatierung je nach Wahl des Kontrollkästchens
If .CheckBox1.Value Then _
Selection.Cells(lngZ).Font.Bold = True
If .CheckBox2.Value Then
If .OptionButton1.Value Then
Selection.Cells(lngZ).Font.Color = vbGreen
ElseIf .OptionButton2.Value Then _
Selection.Cells(lngZ).Font.Color = vbRed
End If
End If
End If
If CheckBox3.Value Then
'Makro formatiert Median einer markierten Spalte fett
dblM = Wert(Selection.Count / 2, Selection.Count)
' Den Median bekommt man auch so:
'        dblM = Application.Median(Selection)
lngZ = Application.Match(dblM, Selection, 0)
' Formatierung je nach Wahl des Kontrollkästchens
If .CheckBox1.Value Then _
Selection.Cells(lngZ).Font.Bold = True
If .CheckBox2.Value Then
If .OptionButton1.Value Then
Selection.Cells(lngZ).Font.Color = vbGreen
ElseIf .OptionButton2.Value Then _
Selection.Cells(lngZ).Font.Color = vbRed
End If
End If
End If
End With
End Sub
Private Sub CommandButton2_Click()
UserForm2.Show
End Sub

Zur Aufgabenstellung und den Vorgaben wäre noch Einiges zu sagen.
- Statt mit Single arbeitet man besser mit Double
- Zeilen-(und Spalten-)variablen sollten mit Long statt Integer deklariert werden.
- Was, wenn Max oder Min in mehreren Zellen angenommen werden? (extrem: wenn alle Werte gleich sind)
- Was, wenn der Median kein Wert der Tabelle ist, sondern der Mittelwert der beiden mittleren Werte? (bei gerader Werteanzahl)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Min, Max und Median
08.01.2009 17:21:00
John
Hallo, vielen Dank für deine Antwort.
Leider müssen wir zum Berechnen des Medians irgendwie die function Wert verwenden.
... Ich hoffe, dass wir nicht jeden Fall berücksichtigen müssen, sonst wirds noch schwieriger :-(
Grüße John
AW: Median mittels Wert
08.01.2009 18:28:16
Erich
Hi John,
der Median wird doch mittels der Fkt. Wert bestimmt - mit der Anweisung
dblM = Wert(Selection.Count / 2, Selection.Count)
Darunter hatte ich nur als Kommentar vermerkt, wie man das auch direkt von Excel berechnen lassen kann.
Zu meiner Frage
- Was, wenn der Median kein Wert der Tabelle ist, sondern der Mittelwert der beiden mittleren Werte? (bei gerader Werteanzahl)
hast du nichts geantwortet.
Vielleicht müsste dann die Fkt. Wert zweimal aufgerufen werden.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Median mittels Wert
08.01.2009 20:20:00
John
Hallo, vielen Dank. Ich Schussel.
Ich denke die Zahlen der Liste dürfen wir nicht verändern. Es muss also zunächst untersucht werden, ob die Liste gerade oder ungerade ist. Das müsste irgendwie mit Rest=1 gehen. Sollte die Anzahl gerade sein, so muss ein passender Hinweis erscheinen. Ich hoffe damit wäre die Aufgabe ausreichend gelöst.
Nochmals vielen Danke und Grüße
AW: Median mittels Wert
08.01.2009 20:45:35
John
Mir ist gerade aufgefallen, dass der Median nicht immer richtig mit Hilfe der function Wert ermittelt wird.
Bei 1,2,4,5,18 erhalte ich als Median 2. Hier müsste ich eigentlich 4 erhalten.
Bei 1,2,3,4,5,6,7,8,9,10,11 erhalte ich als Median 6. Dieses Ergebnis stimmt.
Woran das liegt weiß ich leider nicht.
Anzeige
AW: Median mittels Wert
08.01.2009 20:57:36
John
Also das Ergebnis stimmt erst ab 7 Zahlen. Weißt du woran das liegen könnte Erich?
Grüße
AW: Median mittels Wert
09.01.2009 09:06:00
Erich
Hi John,
Selection.Count / 2 wird wohl manchmal bei der Konvertierung zu Integer ab- statt aufgerundet.
Application.Round (also die Excel-Fkt. RUNDEN) rundet richtig. Probiers mal mit.
dblM = Wert(Application.Round(Selection.Count / 2, 0), Selection.Count)
oder auch
dblM = Wert(Application.RoundUp(Selection.Count / 2, 0), Selection.Count)
Noch eine Bemerkung zur Fkt. Wert:
Die Fkt holt sich selbst die Werte des markierten Bereichs.
Der Parameter dimension ist eigentlich überflüssig, denn die Größe des markierten Bereichs kann die Fkt
selbst ermitteln. (mit Selection.Count).
Probier mal aus, was passiert, wenn du den Parameter dimension größer machst als die Anzahl markierter Zellen.
Außerdem ist die Anzahl in der Fkt. willkürlich auf 100 begrenzt durch Dim vektor(100).
Wenn die Fkt. mit dimension größer als 100 aufgerufen wird, gibts einen Fehler (Überlauf).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Median mittels Wert
09.01.2009 21:51:00
John
Es funktioniert jetzt. Vielen, vielen Dank.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige