Wie lautet die richtige funktion fuer einen zaehler? (excel 2002)
nicht boes sein, liebe excel-rennboliden, leider bin ich noch ein excel-fussgaenger ...
fuer hilfe wuerde ich mich artigst bedanken!
der schlichte tom
das raetsel:
a) in zelle a1 erscheinen durch eingabe laufend andere zahlen von 0-unendlich.
b) immer wenn der wert "1" erscheint, soll dieser in zelle b1 laufend mitgezaehlt werden.
c) bei 0,2,3,4,5 bis unendlich soll der zaehler in b1 nur seinen augenblicklichen hoechstwert beibehalten.
d) erscheint in zelle a1 wieder eine "1" soll sich der wert in zelle b1 wiederum um den wert 1 erhoehen.
e) wenn moeglich und wuenschenswert waere eine loesung in form einer funktionsformel (funktionszeile).
vermutlich gibt es eine kurze praegnante loesung, aber auch nach verzweifeltem zermartern meines bescheidenen grosshirns bahnt sich keine solche an ...
wer kann dem kleinen tom schluessig helfen?
ein grosses dankeschoen im voraus!
fuer hilfe wuerde ich mich artigst bedanken!
der schlichte tom
das raetsel:
a) in zelle a1 erscheinen durch eingabe laufend andere zahlen von 0-unendlich.
b) immer wenn der wert "1" erscheint, soll dieser in zelle b1 laufend mitgezaehlt werden.
c) bei 0,2,3,4,5 bis unendlich soll der zaehler in b1 nur seinen augenblicklichen hoechstwert beibehalten.
d) erscheint in zelle a1 wieder eine "1" soll sich der wert in zelle b1 wiederum um den wert 1 erhoehen.
e) wenn moeglich und wuenschenswert waere eine loesung in form einer funktionsformel (funktionszeile).
vermutlich gibt es eine kurze praegnante loesung, aber auch nach verzweifeltem zermartern meines bescheidenen grosshirns bahnt sich keine solche an ...
wer kann dem kleinen tom schluessig helfen?
ein grosses dankeschoen im voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170239
Url: https://administrator.de/forum/wie-lautet-die-richtige-funktion-fuer-einen-zaehler-excel-2002-170239.html
Ausgedruckt am: 23.12.2024 um 10:12 Uhr
24 Kommentare
Neuester Kommentar
Hallo Tom,
ich glaube nicht, dass es mit einer Funktionsformel zu erledigen ist, da diese sich eigentlich immer statisch auf die aktuellen Werte von Zellen beziehen.
Mit einem Makro kannst du das aber auch relativ einfach implementieren.
ich würde dir vorschlagen, im onchange-Ereginis deines Tabellenblattes zu überprüfen ob sich die Zelle A1 geändert hat und dann den Wert zu überprüfen und im Falle einer eins, den Wert der Zelle B1 zu erhöhen.
Ich weiß nicht ob es eine einfacherer Lösung gibt und ob diese Lösung sich stark auf die Performance deiner Tabelle auswirkt.
http://www.office-loesung.de/ftopic183237_0_0_asc.php hier gibts einen Hinweis zum onchange Ereignis.
Wenn dir der Ansatz reicht zum selbstständig weiterarbeiten, sag bescheid obs geklappt hat oder nicht.
Solltest du dich mit VBA noch nicht so gut auskennen, sag bescheid, dann kann ich -vermutlich heute Abend- mal versuchen dein Problem zu lösen..
Gruß
Felix
ich glaube nicht, dass es mit einer Funktionsformel zu erledigen ist, da diese sich eigentlich immer statisch auf die aktuellen Werte von Zellen beziehen.
Mit einem Makro kannst du das aber auch relativ einfach implementieren.
ich würde dir vorschlagen, im onchange-Ereginis deines Tabellenblattes zu überprüfen ob sich die Zelle A1 geändert hat und dann den Wert zu überprüfen und im Falle einer eins, den Wert der Zelle B1 zu erhöhen.
Ich weiß nicht ob es eine einfacherer Lösung gibt und ob diese Lösung sich stark auf die Performance deiner Tabelle auswirkt.
http://www.office-loesung.de/ftopic183237_0_0_asc.php hier gibts einen Hinweis zum onchange Ereignis.
Wenn dir der Ansatz reicht zum selbstständig weiterarbeiten, sag bescheid obs geklappt hat oder nicht.
Solltest du dich mit VBA noch nicht so gut auskennen, sag bescheid, dann kann ich -vermutlich heute Abend- mal versuchen dein Problem zu lösen..
Gruß
Felix
Wie hast du das denn genau gemacht?
Wenn du die Formel die du angegeben hast in B1 schreibst, dann hast du einen sogenannten "Zirkelbezug"
und da gibt Excel bei mir dei Fehlermeldung aus, dass es bei der Berechnung zu Problemen kommen könnte.
Mit Makros würde das folgendermaßen aussehen:
in Excel ALT+F11 drücken, dadurch öffnet sich ja Microsoft visual Basic
Jetzt auf Tabelle1 (oder die, wo deine Zellen drin sind) doppelklicken und den Quelltext eingeben:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Cells.Range("A1").Value = 1 Then
Cells.Range("B1").Value = Cells.Range("B1").Value + 1
End If
End If
End Sub
Dann abspeichern und visual Basic Editor schließen.
Als Erklärung: Es wird bei einer Änderung geprüft ob Zelle A1 bearbeitet wurde, dann wird überprüft ob ihr Wert 1 ist und wenn dies der Fall ist, wird zum Wert aus B1 eins dazugezählt
Es kommt zu einer Fehlermeldung die nciht abgefangen wird, wenn in B1 ein Text statt einer Zahl steht. Mit etwas mehr Zeit kannst du die ja noch abfangen.
Einziges Problem:
Wenn in A1 ein Verweis oder eine Formel steht werden die Änderungen nicht als solche erkannt.
Gruß
Felix
Wenn du die Formel die du angegeben hast in B1 schreibst, dann hast du einen sogenannten "Zirkelbezug"
und da gibt Excel bei mir dei Fehlermeldung aus, dass es bei der Berechnung zu Problemen kommen könnte.
Mit Makros würde das folgendermaßen aussehen:
in Excel ALT+F11 drücken, dadurch öffnet sich ja Microsoft visual Basic
Jetzt auf Tabelle1 (oder die, wo deine Zellen drin sind) doppelklicken und den Quelltext eingeben:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Cells.Range("A1").Value = 1 Then
Cells.Range("B1").Value = Cells.Range("B1").Value + 1
End If
End If
End Sub
Dann abspeichern und visual Basic Editor schließen.
Als Erklärung: Es wird bei einer Änderung geprüft ob Zelle A1 bearbeitet wurde, dann wird überprüft ob ihr Wert 1 ist und wenn dies der Fall ist, wird zum Wert aus B1 eins dazugezählt
Es kommt zu einer Fehlermeldung die nciht abgefangen wird, wenn in B1 ein Text statt einer Zahl steht. Mit etwas mehr Zeit kannst du die ja noch abfangen.
Einziges Problem:
Wenn in A1 ein Verweis oder eine Formel steht werden die Änderungen nicht als solche erkannt.
Gruß
Felix
Hallo Tom!
Wie felixcc schon erwähnt hat, ist dies per Funktions-Formel nicht möglich. Dazu benötigst Du das von felixcc vorgeschlagene VBA-Change-Event. Aber das funktioniert dann aber auch nur, wenn die Zellen überwacht werden, deren Eingaben die Zelle A1 verändern. Eine Wertänderung durch eine Formel löst kein Change-Erreignis aus, sondern nur eine direkte Eingabe in eine Zelle.
Gruß Dieter
[Edit] War ich wohl etwas zu langsam [/edit]
Wie felixcc schon erwähnt hat, ist dies per Funktions-Formel nicht möglich. Dazu benötigst Du das von felixcc vorgeschlagene VBA-Change-Event. Aber das funktioniert dann aber auch nur, wenn die Zellen überwacht werden, deren Eingaben die Zelle A1 verändern. Eine Wertänderung durch eine Formel löst kein Change-Erreignis aus, sondern nur eine direkte Eingabe in eine Zelle.
Gruß Dieter
[Edit] War ich wohl etwas zu langsam [/edit]
Hallo Tom,
eine nette Aufgabe hast du da gefunden.
Das Problem ist der entstehende Zirkelbezug beim Eintragen der Formel in B1:
In B1 eintragen=WENN(A1=1,B1+1,0)+WENN(A1<>1,MAX(B1),0)
Wenn mann sein Excel aber so einrichtet, das die interaktive Berechnung mit einer Iteration von 1
zulässig ist, dann funktioniert die Formel.
Gruß Xolger
eine nette Aufgabe hast du da gefunden.
Das Problem ist der entstehende Zirkelbezug beim Eintragen der Formel in B1:
In B1 eintragen=WENN(A1=1,B1+1,0)+WENN(A1<>1,MAX(B1),0)
Wenn mann sein Excel aber so einrichtet, das die interaktive Berechnung mit einer Iteration von 1
zulässig ist, dann funktioniert die Formel.
Gruß Xolger
Hallo Tom,
bei mir ist die maximale Änderung mit 0.001 eingetragen.
Mehr habe ich nicht eingestellt.
@Felix
Das ist mir beim Testen gar nicht aufgefallen, da ich nur A1 geändert habe.
Aber das ist wahrscheinlich das Problem der interaktiven Berechnung, dass
bei jeder Änderung im Blatt neu gerechnet wird.
Ich bin auch nur durch Zufall auf die interaktive Berechnung gestoßen,
in praktischen Einsatz habe ich diese Einstellung nicht aktiviert.
Gruß
Xolger
bei mir ist die maximale Änderung mit 0.001 eingetragen.
Mehr habe ich nicht eingestellt.
@Felix
Das ist mir beim Testen gar nicht aufgefallen, da ich nur A1 geändert habe.
Aber das ist wahrscheinlich das Problem der interaktiven Berechnung, dass
bei jeder Änderung im Blatt neu gerechnet wird.
Ich bin auch nur durch Zufall auf die interaktive Berechnung gestoßen,
in praktischen Einsatz habe ich diese Einstellung nicht aktiviert.
Gruß
Xolger
Hallo Tom,
ich denke mal das durch die Formeln in deiner vorhandenen Tabelle und die dadurch von Excel
vollzogene Neuberechnung einen Einfluß auf die Berechnung hat.
Evtl. wird durch eine oder mehrere Formel A1 aktualisiert und B1 rechnet deshalb jedesmal neu.
Mit deiner Originaltabelle könnte man evtl. das Phänomen nachvollziehen oder auch nur
verwundert mit den Achseln zucken. Aber das Bereitstellen der Datei fällt bestimmt aus.
Und warum legst du keine neue Datei an und verweist evtl auf die alte?
Gruß
Xolger
ich denke mal das durch die Formeln in deiner vorhandenen Tabelle und die dadurch von Excel
vollzogene Neuberechnung einen Einfluß auf die Berechnung hat.
Evtl. wird durch eine oder mehrere Formel A1 aktualisiert und B1 rechnet deshalb jedesmal neu.
Mit deiner Originaltabelle könnte man evtl. das Phänomen nachvollziehen oder auch nur
verwundert mit den Achseln zucken. Aber das Bereitstellen der Datei fällt bestimmt aus.
Und warum legst du keine neue Datei an und verweist evtl auf die alte?
Gruß
Xolger
Hallo Tom,
also man kann in einer Exceliste mit Formel/Zellbezügen zu anderen Excellisten arbeiten. (Einfach mal austeste, beide Dateien öffnen und in der Zieldatei = eingeben und in der Quelldatei eine Zelle wählen.)
Ein Kompilierungsfehler und "Linien" nach Formeln im Zusammenhang mit End Sub hört sich doch stark nach VBA an. Wenn du Makros einsetzt kann die Iterative Berechnung evtl. bei jedem
Berechnungsschritt greifen. Und wenn du eh mit Makros arbeitest, dann sollte man eine bessere Lösung als die iterative Berechnung finden.
Von daher klär uns mal auf, Makro oder Formeln?
Gruß
Xolger
also man kann in einer Exceliste mit Formel/Zellbezügen zu anderen Excellisten arbeiten. (Einfach mal austeste, beide Dateien öffnen und in der Zieldatei = eingeben und in der Quelldatei eine Zelle wählen.)
Ein Kompilierungsfehler und "Linien" nach Formeln im Zusammenhang mit End Sub hört sich doch stark nach VBA an. Wenn du Makros einsetzt kann die Iterative Berechnung evtl. bei jedem
Berechnungsschritt greifen. Und wenn du eh mit Makros arbeitest, dann sollte man eine bessere Lösung als die iterative Berechnung finden.
Von daher klär uns mal auf, Makro oder Formeln?
Gruß
Xolger
Hallo tom-kinbaku!
Wenn Du das Script von oben auch für andere Zellen benötigst, musst Du alles in ein einziges "Sub" packen - es gibt nur ein "Worksheet_Change"-Ereignis pro Blatt - daher also etwa:
Grüße
bastla
Wenn Du das Script von oben auch für andere Zellen benötigst, musst Du alles in ein einziges "Sub" packen - es gibt nur ein "Worksheet_Change"-Ereignis pro Blatt - daher also etwa:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Cells.Range("A1").Value = 1 Then Cells.Range("B1").Value = Cells.Range("B1").Value + 1
End If
If Not Intersect(Target, Range("C1")) Is Nothing Then
If Cells.Range("C1").Value = 1 Then Cells.Range("D1").Value = Cells.Range("D1").Value + 1
End If
End Sub
bastla
Hallo tom-kinbaku!
Mit der Fehlermeldung kann ich leider nix anfangen, aber Du könntest das Sub (und es kann wirklich nur ein einziges "
Anstelle der Zeile 4 kannst Du auch noch
versuchen (analog dann auch für Zeile 6).
Grüße
bastla
Mit der Fehlermeldung kann ich leider nix anfangen, aber Du könntest das Sub (und es kann wirklich nur ein einziges "
Worksheet_Change
" automatisch ausgeführt werden ) noch anders formulieren:Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$A$1"
If Range("A1").Value = 1 Then Range("B1").Value = Range("B1").Value + 1
Case "$C$1"
If Range("C1").Value = 1 Then Range("D1").Value = Range("D1").Value + 1
End Select
End Sub
Range("B1").Value = Range("B1").Value - (Range("A1").Value = 1)
Grüße
bastla