Anzeige
Archiv - Navigation
408to412
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
408to412
408to412
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Trickreicher Mittelwert

Trickreicher Mittelwert
04.04.2004 19:38:19
Jens
Hallo zusammen,
habe folgendes Problem in dieser Tabelle:
https://www.herber.de/bbs/user/4937.xls
Es sollen regionale Mittelwerte fuer das jeweilige Jahr aus den X-Werten in Spalte D berechnet werden. Bei der Ermittlung der Mittelwerte soll zusaetzlich dasjenige Land von der Berechnung ausgenommen werden, welches sich in der Zeile befindet in welcher der Mittelwert fuer die restlichen Laender angezeigt werden soll.
Also vereinfacht saehe das so aus:
Spalte1=Land, Spalte2=X-Wert, Spalte3=zu berchnender Mittelwert
A 12 (13+15+4)/3 = 10.6 (hier wird Land A ausgelassen)
B 13 (12+15+4)/3 = 10.3 (hier Land B, etc)
C 15 (12+13+4)/3 = 9.6
D 4 (12+13+15)/3 = 13.3
.
.
.
In meiner Tabelle ist alles aber noch ein wenig komplizierter, da die Laender in 5 Regionen (Spalte C) und 23 Jahre (Spalte B) unterteilt sind. Es soll der jeweilige Mittelwert pro Region pro Jahr berechnet werden (wird in der Tabelle nochmal deutlicher hoffe ich).
Danke fuers Mitdenken und Eure Hilfe.
Gruesse,
Jens


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

Betreff
Datum
Anwender
Anzeige
AW: Trickreicher Mittelwert
04.04.2004 22:18:13
Josef Ehrensberger
Hallo Jens!
Vielleicht so:
https://www.herber.de/bbs/user/4943.xls

Gruß Sepp


Ein kluger Mann macht nicht alle Fehler selbst.
Er lässt auch anderen eine Chance.

(Sir Winston Churchill)


AW: Trickreicher Mittelwert
04.04.2004 22:28:57
Reinhard
Hallo Jens,
zunächst mal, in E15 und e10 steckt ein Fehler.
Weiterhin, wie sollen leere Zellen und Zellen mit 0 behandelt werden? Laut Hilfe gilt bei der Funktion Mittelwert folgendes:
Wenn Sie aus den Inhalten mehrerer Zellen einen Mittelwert bilden, beachten Sie, dass leere Zellen anders behandelt werden als Zellen, die mit 0 belegt sind. Dies gilt insbesondere dann, wenn Sie das Kontrollkästchen Nullwerte in der Registerkarte Ansicht (Menü Extras, Befehl Optionen) deaktiviert haben. Im Gegensatz zu leeren Zellen werden mit 0 belegte Zellen eingerechnet.
Wie man dein Problem mit Excel lösen kann weiss ich nicht, vielleicht hat Boris da ne Arrayfunktion:-)
Ich habe dir ein Makro gebastelt, in ihm werden leere Zellen wie Zellen mit 0 behandelt.
Wenn du das anders wünschst dann melde dich hier nochmal.
Du hast "vba nein" ausgewählt, aber probier doch trotzdem mal folgendes, gehe oben auf Extras--Makro--Aufzeichnen, klicke dann bei der Namensabfrage auf Ok. Ein kleines Fenstrchen erscheint.
Dnmn mach was beliebiges, z.B. Zelle H1 nach Zelle H2 kopieren.
Dann klicke unten links im Fensterchen auf das Quadrat um die Makroaufzeichnung zu beenden.
Dann wieder auf Extras--Makro--Makros, dort dann links das eben erstelltwe Makro auswählen und rechts auf Bearbeiten klicken.
Es erscheint der VB-Editor mit dem Code für dein Makro. Diesen Code komplett löschen und stattdessen den nachfolgenden Code reinkopieren.
Editor beenden.
Nun kannst du das Makro mittelw über Extras--Makro--Makros--Ausführen starten.
Gruß
Reinhard

Sub mittelw()
With Worksheets("Tabelle1")
For n = 2 To Range("a65536").End(xlUp).Row
anf = n
ende = n
While Cells(ende, 2).Value = Cells(ende + 1, 2).Value
ende = ende + 1
Wend
For x = anf To ende
Cells(x, 5).Value = (WorksheetFunction.Sum(Range(Cells(anf, 4), _
Cells(ende, 4))) - Cells(x, 4).Value) / (ende - anf)
Next x
n = ende
Next n
End With
End Sub

Anzeige
AW: Trickreicher Mittelwert
04.04.2004 23:05:43
Jens
Vielen Dank zunächst einmal an euch beide!

Mir scheint Reinhard's Makro der geeignete Weg zu sein, um mein Problem zu lösen auch wenn ich von VBA nicht wirklich viel verstehe. Nur müsste die leeren Zeilen nicht als 0 behandelt, sondern von der Mittelwertsberechnung ausgeschlossen werden. Entschuldige bitte, das ich das nicht gleich präzisiert habe.
Vielleicht kannst du das noch ändern Reinhard, ich wäre dir dafür sehr dankbar. Ich selbst kann nicht genau sehen, wie ich die Behandlung leerer Zeilen in dem von dir gebastelten Makro ändern kann.
Beste Grüße,
Jens
AW: Trickreicher Mittelwert
04.04.2004 23:43:14
Karl-Otto Reimann
Hallo Jens
Es gibt eine ganz einfache Lösung:
1. Ansicht/Statusleiste einblenden (auf der Statusleiste mit Rechtsklick Mittelwert aktivieren)
2. Daten/Filter den Autofilter einschalten
3. Filtern "1973" und daneben "eap"
4. Mit gedrückter STRG-Taste Deine Werte in D markieren, auf der Statusleiste
erscheint der Mittelwert für die ausgewählten Zellen
Bei mir stimmen die Werte mit den Beispielen überein.
Dann
Gruß
Karl-Otto
Anzeige
AW: Trickreicher Mittelwert
05.04.2004 00:05:10
Jens
Danke Karl-Otto.
Fuer einzelne Werte klappt das ganz gut, ich brauche aber alle regionalen Jahresdurchschnittswerte unter Ausslassung des jeweiligen Landes am Ende in einer langen Spalte und von Hand dauert das etwas zu lange. Ich versuche immer noch an Reinhard's Makro etwas zu manipulieren, so dass es die leeren Zeilen von der Mittelwertsbrechnung ausgeschlossen werden, aber es gelingt mir noch nicht wie gewuenscht.
Gruesse,
Jens
AW: Trickreicher Mittelwert
05.04.2004 02:43:28
Reinhard
Hi Jens,
ich hatte immer Fehlermeldungen mit specialcells usw, das ist der Code mit dem ' vorneweg, (Zeilen mit ' sind nur Komentarzeilen und werden nicht ausgeführt) die Zeilen kannste löschen, sie stehen nur da damit mir hier evtl. jmd. sagen kann warum da Fehlermeldung 1004, keine leeren Zellen gefunden, kam.
Ansonsten scheint der nachfolgende Code zu funktionieren.
Gruß
Reinhard

Sub mittelw()
With Worksheets("Tabelle1")
For n = 2 To Range("a65536").End(xlUp).Row
anf = n
ende = n
While Cells(ende, 2).Value = Cells(ende + 1, 2).Value
ende = ende + 1
Wend
Anzahl = 0
For x = anf To ende
If Cells(x, 4).Value <> "" Then Anzahl = Anzahl + 1
Next x
For x = anf To ende
'leer = Range(Cells(anf, 4), Cells(ende, 4)).SpecialCells(xlCellTypeBlanks).Cells.Count
'If leer = "" Then leer = 0
'Cells(x, 5).Value = (WorksheetFunction.Sum(Range(Cells(anf, 4), _
'    Cells(ende, 4))) - Cells(x, 4).Value) / (ende - anf - leer)
If Cells(x, 4).Value <> "" Then
Cells(x, 5).Value = (WorksheetFunction.Sum(Range(Cells(anf, 4), _
Cells(ende, 4))) - Cells(x, 4).Value) / (Anzahl - 1)
Else
Cells(x, 5).Value = (WorksheetFunction.Sum(Range(Cells(anf, 4), _
Cells(ende, 4))) - Cells(x, 4).Value) / Anzahl
End If
Next x
n = ende
Next n
End With
End Sub

Anzeige
Tausend Dank Reinhard!
05.04.2004 03:35:18
Jens
Laeuft einwandfrei das Makro. Du kannst dir gar nicht vorstellen, wie sehr Du mir damit geholfen hast!!!
Vielen Dank!
Beste Gruesse,
Jens
Gern geschehen :-) o.w.T.
05.04.2004 19:55:18
Reinhard
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige