Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zahl hochzählen bis Bedingung erfüllt

Forumthread: Zahl hochzählen bis Bedingung erfüllt

Zahl hochzählen bis Bedingung erfüllt
20.04.2020 20:02:52
Uwe
Hallo zusammen,
ich habe folgendes Problem und komme nicht weiter:
Ich habe 3 (oder mehr) Kennzahlen. Diese werden in Bandbreiten in gut (z.B. 20-30), mittel, schlecht klassifiziert.
Nun soll eine Basiszahl ermittelt werden, bei der alle Bandbreiten den Wert gut erhalten.
Ich habe es über eine Zielwertfunktion ausprobiert und bin kläglich gescheitert. Und zwar habe ich jeder Kennzahl über eine Wenn-Dann-Funktion den Wert 1 (für erfüllt) und den Wert 0 (für nicht erfüllt) zugeordnet. Bei drei Kennziffern erhalte ich somit den Wert 3. Eine Weitere Bedingung ist, dass die Basiszahl oder auch veränderbare Zahl nicht kleiner als Null sein darf, sodass ich einen Zielwert von 4 erreichen muss. Leider erhalte ich über die Zielwertfunktion falsche Ergebnisse, obwohl es bei manuellem Probieren Lösungen geben sollte. Ich gehe jedoch davon aus, das es nicht funktioniert, da es kein eindeutiges bzw. mehrere Möglichkeiten gibt, die möglich wären.
Daher hatte ich die Idee, in der veränderlichen Zelle den Wert solange hochzuzählen, bis alle Bedingungen erfüllt sind. Hier hört jedoch meine Kenntnis auf. Der Basiswert kann Werte von 3stelligen Millionenbeträgen annehmen. Die Rechenoperation sollte dennoch schnell sein.
Ich hoffe, dass mir jemand weiterhelfen kann.
Viele Grüße
Uwe
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahl hochzählen bis Bedingung erfüllt
20.04.2020 23:16:42
Daniel
Hallo, Uwe.
Ich bin mir nicht sicher, ob ich deine Frage richtig verstanden habe.
Um eine Zahl hochzählen zu lassen kannst du entweder einen for-next oder einen loop verwenden. in meinen Beispielen ist C7 die von dir genannte "veränderliche Zelle" und die zu erfüllende Bedingung ist D7=1 (über eine Funktion oder ähnliches in Abhängigkeit von C7 gesteuert).
Sub fornextbeispiel()
Application.ScreenUpdating = False 'Bildschirmupdate für schnellere Operation ausschalten
For i = 0 To 100000
Range("C7") = i
If Range("D7") = 1 Then GoTo blabla
Next i
blabla:
'hier dann rein was passieren soll
Application.ScreenUpdating = True
End Sub

Sub loopbeispiel()
Application.ScreenUpdating = False 'Bildschirmupdate für schnellere Operation ausschalten
i = 0
Do While Range("D7")  1
Range("C7") = i
i = i + 1
Loop
'hier dann rein, was passieren soll
Application.ScreenUpdating = True
End Sub
(Ist gerade dirty geschrieben, Variablen müssen noch vernünftig deklariert werden etc...)
Ich hoffe das beantwortet zumindest deine Frage im Betreff. Ich befürchte allerdings, dass dies nicht ganz deiner Forderung einer "schnellen Rechenoperation" entspricht. Meine for-next hat beim hochzählen bis 100.000 bereits 15 sek benötigt. Von daher glaube ich, das ist nicht der Lösungsweg, den du benötigst. Sorry.
Gruß
Daniel
Anzeige
AW: Zahl hochzählen bis Bedingung erfüllt
21.04.2020 09:41:35
Uwe
Hallo Daniel,
super! Ich habe mich für die Loop-Variante entschieden und lasse in 100er Schritten hochzählen. Wenn ich dann noch die Skalierung der Millionenbeträge verkleinere, ist die Rechenzeit passabel.
Also nochmals Vielen Dank für die Unterstützung.
Viele Grüße
Uwe
;
Anzeige
Anzeige

Infobox / Tutorial

Zahl hochzählen bis Bedingung erfüllt


Schritt-für-Schritt-Anleitung

Um in Excel eine Zahl hochzuzählen, bis eine bestimmte Bedingung erfüllt ist, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Anleitung dazu:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Sub HochzaehlenBisBedingung()
       Application.ScreenUpdating = False ' Bildschirmaktualisierung ausschalten
       Dim i As Long
       i = 0
       Do While Range("D7").Value <> 1 ' Bedingung anpassen
           Range("C7").Value = i ' Hier die veränderliche Zelle
           i = i + 1 ' Hochzählen
       Loop
       Application.ScreenUpdating = True ' Bildschirmaktualisierung wieder einschalten
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu deinem Excel-Dokument.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.


Häufige Fehler und Lösungen

  • Fehler: Makro läuft zu langsam

    • Lösung: Stelle sicher, dass du die Bildschirmaktualisierung mit Application.ScreenUpdating = False deaktivierst. Dies verbessert die Performance erheblich.
  • Fehler: Bedingung nicht erfüllt

    • Lösung: Überprüfe, ob die Zelle, auf die du referenzierst (in diesem Fall D7), die richtige Bedingung hat. Es könnte sein, dass die Logik nicht stimmt oder die Zellreferenz falsch ist.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch die Funktion WENN in Kombination mit ZÄHLENWENN nutzen, um deine Bedingungen zu überprüfen. Allerdings ist dies weniger flexibel, wenn du eine dynamische Hochzählung benötigst.

  1. In Zelle C7 könntest du eine Formel verwenden:
    =WENN(D7=1; C7+1; C7)
  2. Diese Formel zählt jedoch nicht automatisch hoch, sondern aktualisiert sich nur, wenn die Bedingungen in D7 erfüllt sind.

Praktische Beispiele

Angenommen, du hast folgende Werte:

  • C7: Startwert (z.B. 0)
  • D7: Bedingung (z.B. 1, wenn erfüllt)

Mit dem oben genannten VBA-Code wird der Wert in C7 hochgezählt, bis D7 den Wert 1 erreicht. Wenn du die Anzahl der Iterationen begrenzen möchtest, kannst du die For-Schleife anstelle der Do While-Schleife verwenden.


Tipps für Profis

  • Nutze die Debugging-Funktion im VBA-Editor, um den Code schrittweise zu durchlaufen und Fehler zu identifizieren.
  • Experimentiere mit Zufallswerten in den Zellen, um die Reaktionsgeschwindigkeit deines Codes zu testen.
  • Denke daran, dass bei großen Zahlen oder vielen Iterationen die Berechnung einige Zeit in Anspruch nehmen kann. Überlege, ob du die Werte in Schritten hochzählen möchtest, um die Effizienz zu verbessern.

FAQ: Häufige Fragen

1. Wie schnell kann ich die Zahl hochzählen? Die Geschwindigkeit hängt von der Komplexität deiner Bedingung ab und wie viele Iterationen du durchführst. Bei großen Werten kann es mehrere Sekunden dauern.

2. Funktioniert das auch in Excel Online? Der VBA-Code funktioniert nur in Desktop-Versionen von Excel. In Excel Online kannst du keine Makros verwenden.

3. Kann ich die Hochzählung in einem bestimmten Bereich durchführen? Ja, du kannst die Zellreferenzen im Code anpassen, um die Hochzählung in einen bestimmten Bereich zu lenken. Achte darauf, die Logik entsprechend anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige