Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Negative-Werte zählen (mit Unterbrechung)
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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))
Antworten Top
#5
Schau mal:


Angehängte Dateien
.xlsb   __minimal.xlsb (Größe: 10,28 KB / Downloads: 4)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
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.
Antworten Top
#7
Vielen Dank. Eure Antworten haben mir die Lösung gebracht. :)

Wie würde denn ein VBA-Code in diesem Zusammenhang aussehen?
Antworten Top
#8
https://www.clever-excel-forum.de/Thread...#pid203646 übersehen ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#9
Nein habe ich nicht übersehen.

Die von dir markierte Antwort zeigt mir jetzt kein VBA-Code.
Antworten Top
#10
Verstehst du überhaupt VBA-Code ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste