Excel 2003 / Libreoffice Calc, ich suche eine Funktion die in beiden Progammen die gleiche Anzahl an Zeichen untereinander zählt?


15.07.2021, 18:43

Ich formuliere es nochmal etwas anders:

Es wird die Tabelle jeden Tag um neue Werte ergänzt in Spalte "D".

In Spalte "E" wird die Höhe des Wertes ausgewertet und mit einem Pfeil gekennzeichnet.

Jetzt möchte ich wissen wie oft (gerechnet von heute rückwärts) derselbe Pfeil untereinander zusammenhängend steht.

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Hallo

in einer Zelle kannst du das so erreichen:

  • {=VERGLEICH(HEUTE();A:A;0)-MAX(WENN(E1:E1000=INDEX(E1:E1000;VERGLEICH(HEUTE();A:A;0));0;WENN(ZEILE(E1:E1000)>VERGLEICH(HEUTE();A:A;0);0;ZEILE(E1:E1000))))}
  • Matrixformel, die geschweiften Klammern {} nicht mit eingeben, sondern die Eingabe über Strg+Umschalt+Enter abschließen

über VERGLEICH(HEUTE();A:A;0) wird dabei die Zeile mit dem aktuellen Datum bestimmt, im Max()-Teil wird allen Zellen unterhalb diesem, sowie allen Pfeilen die dem aktuellen Pfeil entsprechen 0 und allen anderen Zellen ihre Zeilenummer zugeordnet um die Zeilennummer des letzten Pfeils ungleich des aktuellen zu ermitteln.

Statt VERGLEICH(HEUTE();A:A;0) könnte man auch VERGLEICH(MIN(D:D)-1;D:D;-1) verwenden damit der jeweils letzten Eintrag in Spalte D statt das aktuelle Datum als Kriterium genutzt wird.


Pornobalken 
Beitragsersteller
 16.07.2021, 17:44

Vielen Dank für deine Zeit und Arbeit :).

Beide Varianten arbeiten nicht wie gewünscht:

Die erste Variante gibt einen Fehler aus.

Ja, ich habe sie eingesetzt und mit Strg + Shift + Enter abgeschlossen.

Klick mich

Die 2te Variante gibt "0" aus.

Klick mich

Hast du evtl. noch eine Idee?

DanKirpan  16.07.2021, 20:27
@Pornobalken

Bitte :D

Es sollte funktionieren wenn du den ersten Bezug bei Index(E12:E1000;[...]) in E1:E1000 änderst. (oder alternativ hinter der letzten Zeile() minus 11 rechnen lässt)

Fehler 522 bedeutet das es einen Zirkelbezug gibt, die Formel also mit ihrem eigenen Ergebnis rechnen müsste. Das hattest du in de zweiten Variante nebenbei behoben. Aber die Formel ermittelt ja die absolute Zeilennummer des letzten ungleichen Pfeil und nutzt diese als Positionsnummer für die Matrix in Index(), daher kommt es zu einem ungewollten Versatz, wenn die Ausgabematrix nicht mit Zeile 1 startet bsp Index(E12:E100;3) führt zu Zelle E14.

Pornobalken 
Beitragsersteller
 16.07.2021, 22:57
@DanKirpan

Danke für deine Zeit.

Es sollte funktionieren wenn du den ersten Bezug bei Index(E12:E1000;[...]) in E1:E1000 änderst. (oder alternativ hinter der letzten Zeile() minus 11 rechnen lässt)

Das habe ich gemacht, jedoch ohne den gewünschten Erfolg.

Das mit dem Fehler 522 und das mit dem eigenen Ergebnis nicht gerechnet werden kann, verstehe ich. Ich weiß nur nicht was dort jetzt genau geändert werden muss?

Besteht evtl. die Möglichkeit, das du mir bitte die Formelzeile für die Zelle E11 korrigiert hier reinschreibst?

DanKirpan  17.07.2021, 09:07
@Pornobalken

:? Variante 1 gibt bei mir das richtige Ergebnis aus:

  • {=VERGLEICH(MIN(D1:D1000)-1;D1:D1000;-1)-MAX(WENN(E12:E1000=INDEX(E1:E1000;VERGLEICH(MIN(D1:D1000)-1;D1:D1000;-1));0;WENN(ZEILE(E12:E1000)>VERGLEICH(MIN(D1:D1000)-1;D1:D1000;-1);0;ZEILE(E12:E1000))))}

Bei der Variante mit -11 hatte ich mich in der Position vertan, das müsste hinter den Vergleich() in Index(), da ja hier der Versatz zum falschen Zeichen führt:

  • {=VERGLEICH(MIN(D1:D1000)-1;D1:D1000;-1)-MAX(WENN(E12:E1000=INDEX(E12:E1000;VERGLEICH(MIN(D1:D1000)-1;D1:D1000;-1)-11);0;WENN(ZEILE(E12:E1000)>VERGLEICH(MIN(D1:D1000)-1;D1:D1000;-1);0;ZEILE(E12:E1000))))}
Pornobalken 
Beitragsersteller
 17.07.2021, 09:20
@DanKirpan

1A mit *

Beide Formeln funktionieren wie gewünscht.

Allerdings weiß ich nicht was der ersten Variante falsch gemacht habe :/

Egal, es funzt perfekt. Merci :D

Ich würde da keine Ziffern zählen, dazu musst Du von integer in Zeichen umwandeln. Sondern füge einfach eine Spalte ein, in die Du schreibst

wenn x > 100, dann => 1

Achte auf die Reihenfolge, denn auch 1000 ist größer 100.

Überhaupt: Es ist eine unglaublich komplizierte Aufgabe mit Excel, doch eine Klacks in VBA. Du brauchst dazu nur eine winzige Schleife zu schreiben bzw. zwei.

Pseudocode, musste debuggen mit der VBA Syntax, die ich nicht mehr auswendig weiß.

jede Zählung machst Du mit:

zaehler := 0;

While x > 100

and x > 10 and x < 1000

do zaehler := zaehler + 1;

  • ## Ausgabe von Zähler ##

Am Ende jedes Block arbeitest Du mit MOD.

Also

n:= x MOD 10;

neue_Zahl:= x - n;

Damit löst Du auch das Problem, dass eines Tages kommt 10000000.

10000005 ergibt die MOD Operation 5.

Die neue Zahl ist damit 10000005 - 5.

Die dividierst Du durch 10 und multiplizierst sie mit 10, um die jeweilgen Grenzen zu bekommen, die oben 10 und 1000 waren.

VBA kann auf diese Weise alle Zahlen mit beliebig vielen Stellen verarbeiten.

=======================

hm, jetzt wo ich es mir überlege,....

Vielleicht ist es viel einfacher, es in ein String zu konvertieren und die Länge zu zählen. ...

Woher ich das weiß:Berufserfahrung – ich arbeite schon sehr lange im EDV Bereich, viele Sparten

Pornobalken 
Beitragsersteller
 15.07.2021, 16:34

Puuh. Erst mal danke für deine Mühe, aber genau das was es zu vermeiden gilt: VBA und eine weitere Spalte.

Das VBA hier mehr kann ist mir bewusst, aber es sollte ohne gelöst werden.

Habe mal alle Zählmöglichkeiten aufgeführt

  • die höchste Häufigkeit der hintereinander vorkommenden Zeichen
  • Gesamte Anzahl der vorkommenden Zeichen

Die Formeln G14 und H14 runterkopieren.

Bild zum Beitrag

Woher ich das weiß:eigene Erfahrung
 - (Computer, Formel, Microsoft Excel)

Pornobalken 
Beitragsersteller
 15.07.2021, 19:29

Danke für deine Mühe.

Lies dir bitte noch einmal meine Frage durch. Ich möchte nur die Anzahl des letzten Pfeils (=HEUTE) rückwärts gezählt (Gestern, Vorgestern,...) ausgeben.

Weder die Gesamtzahl noch den Spitzenwert möchte ich ausgeben.

In der Frage steht es: Anzahl an Zeichen untereinander +

Stand gestern der ↓ und heute steht er auch ↓ und vorgestern stand er ↑, dann wäre das Ergebnis = 2

Steht er heute ↑ und stand gestern ↓, dann wäre das Ergebnis = 1.

Das sollte es sein ... hoffe ich 😉

Die "Nullen" bei den Kalenderdaten kannst Du, wenn Du sie nicht sehen willst, mit Bedingter Formatierung auf "Schrift: weiß" setzen, dann sind sie unsichtbar.

Bild zum Beitrag

Woher ich das weiß:eigene Erfahrung
 - (Computer, Formel, Microsoft Excel)

Pornobalken 
Beitragsersteller
 16.07.2021, 17:58

Nochmal vielen Dank für deine Zeit und Mühe. Ich sehe neun Formeln und die Grundtabelle ist ein wenig verändert.

Mir ist das schon unangenehm, dass ich mit dem Ergebnis nicht so wirklich klar komme, sorry.

Mein Wunsch ist es:

1 Formel in 1 Zelle (E11).

In dieser Zelle soll die Häufigkeit des letzten Pfeils ausgegeben werden. Häufigkeit = die Anzahl wie oft der Pfeil "zuletzt" ausgegeben wurden (nach Tagen).

Die Gesamtzahl der Pfeile ist unwichtig. Hilfszellen sind nicht gewünscht und wohl angebl. auch nicht nötig.

Wenn eine deiner Formeln meine Wünsche erfüllt, dann sei doch bitte so nett und schreibe mir welche das ist. Ich finde es Schade, dass ich es nicht hinkriege und du so viel Zeit investierst.

Welche Zeichen (aus welche/n Zelle/n) willst Du zählen ?

Wenn ich Dich richtig verstanden habe und Du willst den Pfeil nach unten zählen

(Windlings 3) dann würde ich das Datum (heute, gestern, vorgestern) mit einer Hilfsspalte ermitteln

Bild zum Beitrag

 - (Computer, Formel, Microsoft Excel)

Pornobalken 
Beitragsersteller
 15.07.2021, 17:58

Die Pfeile aus Spalte E. Nach oben, unten und nach rechts. Nur die gleichen die untereinander sind. Wenn ein Pfeil anders ist, wird neu gezählt.

Pornobalken 
Beitragsersteller
 15.07.2021, 18:21
@GutenTag2003

Ich möchte jede Pfeil-Variante zählen, nicht nur nach unten. Könnte man nicht anstelle von "ja" auch Pfeile zählen?

Es sind 4 aufeinanderfolgende Pfeile nach unten und nicht nur 3. Es sollen nur die letzten vom heutigen Datum aus rückwerts gerechneten Pfeile addiert werden.

GutenTag2003  15.07.2021, 18:23
@Pornobalken

Das "ja" ist lediglich für die Wahl der 3 Tage (heute, gestern, vorgestern).

... oder welche Zeiträume willst Du gezählt haben ?

Zählen kannst Du alles.

Pornobalken 
Beitragsersteller
 15.07.2021, 18:30
@GutenTag2003

Ich formuliere es nochmal etwas anders:

Es wird die Tabelle jeden Tag um neue Werte ergänzt in Spalte "D".

In Spalte "E" wird die Höhe des Wertes ausgewertet und mit einem Pfeil gekennzeichnet.

Jetzt möchte ich wissen wie oft (gerechnet von heute rückwärts) derselbe Pfeil untereinander zusammenhängend steht.