Clever-Excel-Forum

Normale Version: Negative-Werte zählen (mit Unterbrechung)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich habe folgendes Problem:

Es gibt eine Spalte mit 50 Zellen. Dort sind negative sowie positive Werte vorhanden.
Bsp:
Spalte:
-10
-20
-30
50
30
-20
-30
100
60
-300

Nun möchte ich gerne anhand einer Fornel ermitteln, wie viele Zellen hintereinander negativ sind bis eine positiv Zahl erscheint. Wenn nach der positiven Zahl erneut ein negativer Wert erscheint soll wieder von 0 angefangen zu zählen.

Bei dem Bsp. wäre das Ergebnis für negative Werte also:
3
2
1

Da sich die Daten täglich verändern, kann ich da leider nicht statisch mit einer zählenwenn Funktion dran gehen.

Habt ihr eine Idee man das Problem lösen könnte?

Besten Dank.

Viele Grüße
Sven
Hi


Code:
____|_A_|_B|_C|_D|_E|
   1| -5| 0|  |  | 3|
   2| -6| 0|  |  | 1|
   3| -1| 0|  |  | 2|
   4|  2|  |  |  | 3|
   5| -4| 1|  |  | 1|
   6|  0|  |  |  |  |
   7| -4| 2|  |  |  |
   8| -3| 2|  |  |  |
   9|  2|  |  |  |  |
  10|  1|  |  |  |  |
  11| -1| 4|  |  |  |
  12| -5| 4|  |  |  |
  13| -3| 4|  |  |  |
  14|  1|  |  |  |  |
  15| -1| 5|  |  |  |
  16|  0|  |  |  |  |
Code:
B1    =WENN(A1<0;ZEILE(A1)-ZÄHLENWENN($A$1:A1;"<0");"")
E1    =WENNFEHLER(1/(1/(ZÄHLENWENN(B:B;INDEX(B:B;AGGREGAT(15;6;ZEILE($A$1:$A$100)/($B$1:$B$100<>"")/(VERGLEICH($B$1:$B$100;$B$1:$B$100;0)=ZEILE($B$1:$B$100));ZEILE(A1))))));"")


Gruß Elex
Hallo Elex,

das ganze sieht schon etwas komplex aus. Anscheinend gibt es wohl keine einfachere Lösung.

Hast du denn noch eine Idee wie ich je Zählung mir auch noch das Minimum anzeigen lassen kann? In deinem Beispiel wären das jetzt für die erste Scheibe -6, 2. -4 und 3. -4.

Grüße
Sven
Hi

dann versuch es mal so.
Code:
____|___A__|_B_|_C|______D_____|_E|_F_|_G_|__H_|
   1|Werte |  0|  |Auswertung: |  |   |   |    |
   2|     1|  1|  |            |  |   |   |Min |
   3|    -1|B1 |  |mit Formel  |  |  3|  5|  -2|
   4|    -1|B1 |  |            |  |  7|  8|  -4|
   5|    -2|B1 |  |            |  | 10| 10|  -3|
   6|     2|  1|  |            |  | 12| 13|  -5|
   7|    -4|B2 |  |            |  | 16| 16|  -1|
   8|    -4|B2 |  |            |  |   |   |    |
   9|     2|  1|  |            |  |   |   |    |
  10|    -3|B3 |  |            |  |   |   |    |
  11|     1|  1|  |            |  |   |   |    |
  12|    -1|B4 |  |            |  |   |   |    |
  13|    -5|B4 |  |            |  |   |   |    |
  14|     1|   |  |            |  |   |   |    |
  15|     1|  1|  |            |  |   |   |    |
  16|    -1|B5 |  |            |  |   |   |    |
  17|     0|   |  |            |  |   |   |    |
Code:
B1    =(A2<0)*1
B2    =WENN(VORZEICHEN(A2)>-1;WENN(VORZEICHEN(A3)>-1;"";1);"B"&SUMME($B$1:B1))
Code:
F3    =VERGLEICH("B"&ZEILE(A1);B:B;0)
G3    =VERWEIS("B"&ZEILE(A1);B:B;ZEILE(B:B))
H3    =MIN(BEREICH.VERSCHIEBEN($A$1;F3-1;;G3-F3+1))
Schau mal:
a) Mit Excel 365 und 
b) eingeschalteter Iteration (Anzahl Iterationen mindestens Anzahl der Daten!) funktioniert folgende 1-Formel-Lösung unter Verwendung von
c) Autofilter "C entspricht nicht 0":

A:A: Deine lückenlosen Daten

C2: =WAHL(SPALTE(A1:B1);(VORZEICHEN(
A1:INDEX(A:A;ANZAHL(A:A)))<>VORZEICHEN(
A2:INDEX(A:A;ANZAHL(A:A)+1)))*VORZEICHEN(
A2:INDEX(A:A;ANZAHL(A:A)+1))*SEQUENZ(ANZAHL(A:A);;2);(
C1:INDEX(C:C;ANZAHL(A:A))=0)*(
D1:INDEX(D:D;ANZAHL(A:A))+
C1:INDEX(C:C;ANZAHL(A:A)))+VORZEICHEN(
A1:INDEX(A:A;ANZAHL(A:A))))

In Spalte D stehen dann als Minuszahlen die Anzahl Minuszahlen hintereinander, als Pluszahlen die Anzahl Pluszahlen.
Vielen Dank. Eure Antworten haben mir die Lösung gebracht. :)

Wie würde denn ein VBA-Code in diesem Zusammenhang aussehen?
Nein habe ich nicht übersehen.

Die von dir markierte Antwort zeigt mir jetzt kein VBA-Code.
Verstehst du überhaupt VBA-Code ?
Seiten: 1 2