Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1496to1500
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

Berechnung Mittelwert

Berechnung Mittelwert
16.06.2016 11:18:01
manl
Hallo Leute...
Ich habe eine Kurze Frage bezüglich eines Makros.
Ich muss ca. 40.000 Zeilen auswerten und immer den Mittelwert bestimmter Zeilen berechnen.
Beispiel zum Aussehen:
0
0
87
94
77
0
97
0
75
86
99
84
0
0
0
56
53
... so ungefähr sieht das bei mir aus. Also die "0" ist leider in unregelmäßigen abständen. der Mittelwert soll dann jedoch nur über die Zahlen, die größer als "0" sind berechnet werden. Nachdem nach einer "0" wieder Zahlen über "0" kommen, muss wieder eine neue Mitelwertberechnung begonnen werden.
Im Anhang findet ihr einen screenshot von meiner Tabelle.
Spalte "G" ist quasi meine zu berechnende Spalte.
Spalte "I" soll meine Ausgabespalte sein.
Userbild

Kann mir dabei bitte einer weiterhelfen?
MfG Manl

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechnung Mittelwert
16.06.2016 11:28:17
Fennek
Hallo,
eine Variante:
wechsele alle Zeilen mit 0 auf leer.
Bilde eine schleife für alle Areas mit Konstanten der Spalte und rechne die Mittelwerte für jedes Area.
Falls du diesen Ansatz überhaupt nicht versteht, dann suche nach Alternatien.
mfg

AW: Berechnung Mittelwert
16.06.2016 11:41:10
Rudi
Hallo,
per Hilfsspalte:
GHIJK
1xxx Ø  
22  21
33 2,552
40    
53  31
68  112
75 5,33333333163
80    
93  31
101  42
112 263
120    
130    
140    
152  21
165 3,572

ZelleFormel
I2=WENNFEHLER(WENN(G3=0;J2/K2;"");"")
J2=WENN(G2>0;SUMME(G2;J1);"")
K2=WENN(G2>0;SUMME(K1;1);"")

Gruß
Rudi

Anzeige
AW: Berechnung Mittelwert VBA
16.06.2016 13:40:13
Fennek
Hallo,
es ist häufig schwer abzuschätzen, ob eine Formel- oder vba-Lösung vorteilhafter ist, manchmal gibt es auch einen Wettbewerb.
Der folgende Code schreibt den Mittelwert eine Spalte neben den ersten von null verschiedenen Wert. In der "offset" Zeile kann das angepasst werden.

Sub iMittelwert()
With Columns(1).SpecialCells(2, 1)
.Cells.Select
y = .Cells.Replace("0", "")
For Each r In .Areas
Ad = Split(r.Address, ":")(0)
Range(Ad).Offset(, 1) = WorksheetFunction.Average(Range(r.Address))
Next r
End With
End Sub
mfg

Ein Fall für neopa oder INDEX-Argument4, ...
16.06.2016 14:18:46
Luc:-?
…Manl; ;-)
allerdings muss man dazu erstmal einen unzusammenhängenden Bereich erzeugen! Das kann mit der UDF NoErrRange gelingen, zumindest für Rudis Bsp. Ob das allerdings auch für 40Tsd Zeilen fktioniert, ist ziemlich fraglich. Man sollte solche Massen-DV auch nicht mit Xl durchführen → dafür gibt's SQL. Mit entsprd geschickter AbfrageFormulierung könnte man auch einzelne Datenblöcke abrufen. Außerdem gibt's noch andere interessante Daten-Tools, mit denen man so etwas schnell und effizient und flexibler als mit Xl aufbereiten kann (bspw QlikView von QlikTec).
Ansonsten ist es ziemlich frech bzw mutig im „Nach-Xl-XP-Zeitalter“ einfach alle Versionen zu schreiben! Inzwischen sind ein paar Fktt hinzugekommen, die es vorher nicht gab. Aber uU musst du ja ohnehin auf Rudis Lösung ausweichen; ansonsten so:
 GHI
1WertBlock-MWØ lt Rudi
22  
332,5000002,5
40  
53  
68  
755,3333335,33333333
80  
93  
101  
1122,0000002
120  
130  
140  
152  
1653,5000003,5
17 ← muss leer bleiben!
18NoErrRange:=(G2:G3;G5:G7;G9:G11;G15:G16)
19H2[:H16]: {=WENN(UND(G2≠0;G3=0);MITTELWERT
20        (INDEX(NoErrRange(G$2:G$16;;G$2:G$16≠0);;;
21        ZÄHLENWENNS(G$2:G2;0;G$3:G3;"≠0")+1));"")}
Die UDF NoErrRange findest du im Archiv (RECHERCHE).
Übrigens sähe das für dein Bsp so aus:
 GHI
22WertBlock-MWalle MW
230 86
240 97
2587 86
2694 54,5
277786 
280  
299797 
300  
3175  
3286  
3399  
348486 
350  
360  
370  
3856  
395354,5 
40← muss b.BlockVar leer bleiben!
41NoErrRange:=(G25:G27;G29;G31:G34;G38:G39)
42H23[:H39]: {=WENN(UND(G23≠0;G24=0);MITTELWERT
43      (INDEX(NoErrRange(G$23:G$39;;G$23:G$39≠0);;;
44      ZÄHLENWENNS(G$23:G23;0;G$24:G24;"≠0")));"")}
45I23:I26: {=MITTELWERT(INDEX(NoErrRange(G23:G39;;
46             G23:G39≠0);;;ZEILE(A1:A4)))}
Die rechte Spalte enthält die einfachere Lösung bei Extra-Darstellung der Mittelwerte.
Feedback nicht unerwünscht! Gruß, Luc :-?
PS@neopa: Ja, Werner, ich weiß, die singulare MxFml ist ziemlich rechenaufwendig bei zigtsdfacher Verwendung, aber anders geht's nur, wenn alle Mw in einer Extra-Tabelle stehen. Hier wollte ich aber zwecks Vgl Rudis Vorgabe folgen, habe aber dann doch noch eine solche Variante nachgereicht.
Besser informiert mit …

Anzeige
AW: nur nachgefragt ...
16.06.2016 19:23:59
...
Hallo Mani,
... da Du auf die bereits vorliegenden Beiträge nicht geantwortet hast.
Was ist denn Sinn und Zweck dieser Deiner spez. Auswertung. Bei 40000 Datenzeilen erhältst Du ja nach Deiner Beispielvorgabe wieder tausende von "Mittelwerten". Werden diese wieder weiter ausgewertet? oder?
Gruß Werner
.. , - ...

OT@neopa: Du hast meine letzte AW gelesen, ...
16.06.2016 22:50:49
Luc:-?
…Werner?
Danach habe ich dann auf meinen Beitrag oben verlinkt. Das wäre hier doch auch ein Bsp direkt von der PraxisFront… ;-]
Gruß, Luc :-?

AW: hatte es gelesen ...
17.06.2016 08:40:54
...
Hallo Luc,
... ich würde erst die Antwort der threaderöffners abwarten wollen, bevor ich darauf eingehe. Hatte gestern und habe auch heute allerdings auch wenig Zeit.
Gruß Werner
.. , - ...

Anzeige
AW: Berechnung Mittelwert
18.06.2016 10:27:07
manl
Hallo miteinander...
erst einmal vielen Dank für die zahlreichen antworten, die ihr mir geschickt habt. Außerdem entschuldige ich mich, dass ich erst jetzt wieder hier bin und etwas dazu schreiben kann... Telecolumbus hatte es in letzter zeit nicht so mit dem Internet und auch Vodafone hats nicht grade so mit dem Datenvolumen...
Zusätzlich möchte ich mich auch entschuldigen, dass ich auf dem Gebiet von Excel und VBA leider ein vollkommener Laie bin!! Sollte "alle Versionen" nicht stimmen, dann berichtigt mich bitte... :)
Vielleicht sollte ich ein wenig weiter ausholen:
Zu sehen ist in Spalte "B" die Zeit in 1/10 sekunden...
in Spalte "C" die Geschwindigkeit in km/h...
in Spalte "D" die Geschwindigkeit in m/s...
... und in Spalte "G" die jeweilige negative Beschleunigung, Verzögerung oder wie man dazu auch sagen möchte. Die positive Beschleunigung interessiert mich dabei nicht.
Da die Geschwindigkeit jeweils pro 1/10 sekunde aufgenommen wird, muss ich einen gemittelten Wert der Verzögerung bestimmen. Und da sich dieser "Fahrzyklus" über 40Tsd. Zeilen erstreckt, geht das leider nicht per Hand.
Das ich danach viele weitere, mgl. tausende einzelne Werte habe, ist kein Problem. Dazu hab ich bereits ein Makro, was die weitere Berechnung erleichtert. Die Verzögerung kann danach mit einer Abbremsung eines Fahrzeugs in Verbindung gebracht werden, was mir wieder viele weitere Zusammenhänge offenlegt und mich meinem Endergebnis ein ganzes Stück näherbringt... :)
Ich hoffe, es wurden (wenigstens ein Teil der) Fragen beantwortet, die einige hier hatten. Sollte das nicht der Fall sein, bite ich euch noch einmal um eine Information.
Ich danke euch noch einmal für die Zahlreichen Antworten und wünsche allen ein schönes Wochenende... :)

Anzeige
AW: als noch offen betrachte ich ...
18.06.2016 11:54:44
...
Hallo Manl,
... u.a. folgendes:
1.) wie die Ergebniswerte in der Spalte I gelistet werden sollen; so wie es Rudi und Luc in seinem erstem Vorschlag aufgezeigt oder so wie Luc es in seinem zweiten Vorschlag und da in Spalte I ermittelt hat oder ganz anders?
2.) Also zumindest mich interessiert, wie Du diese Ergebnissewerte der Spalte I auswertest. Damit meine nicht Dein Makro sondern verbal eindeutig beschrieben, was Du genau anstrebst.
Am eindeutigsten wäre es, wenn Du anstelle Deines Bildes eine XLSx-Beispieldatei mit min 50 Datensätzen hier hoch lädst und darin nur für diese Dein angestrebtes Ergebnisziel aufzeigt.
Gruß Werner
.. , - ...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige