Frage von Tombob, 111

Wie kann ich in Excel über Kontrollkästchen hochzählen?

Ich habe 4 Kontrollkästchen und möchte über jeden Klick die Zahlen daneben hochzählen.Ich habe (siehe Bilder) eine Wahrheitsabfrage auf bestimmte Zellen verknüpft und dann über eine =WENN(L10;1;0) Bedingung einen Wert vergeben. Nun wollte ich über den selben Bereich die Größte Zahl abfragen und dann diese +1 machen. Das funktioniert aber nicht wegen Zirkelbezugsfehler oder so etwas. Kann mir da jemand helfen?

Nochmal zusammenfassend:1. Haken aktiv --> 12. Haken inaktiv --> 03. Haken aktiv --> 2...

Expertenantwort
von DeeDee07, Community-Experte für Excel, 85

Ich gehe jetzt einfach mal davon aus, dass du die Werte der Kontrollkästchen mit den darunterliegenden Zellen in C verknüpft hast, sodass z.B. C6 WAHR oder FALSCH ist.

Die Formel in E6 ist dann:
=WENN(C6;1;"")

Die Formel in E7:
=WENN(ZÄHLENWENN(C$6:C7;WAHR)>ZÄHLENWENN(C$6:C6;WAHR);ZÄHLENWENN(C$6:C7;WAHR);"")

Diese Formel in E runterkopieren.

Antwort
von Tombob, 62

Okay, das ist jetzt im Prinzip ein Zähler für eine Zelle.

Ich möchte, dass für jeden neu gesetzten Haken die Zelle daneben immer +1 macht. Dazu muss ich die ganze Spalte nach dem aktuell größtem Wert durchsuchen und diesen mit 1 addieren.

Ist etwas schwer zu erklären was genau ich möchte. Ich versuche dies nochmal in einem Bild zu zeigen.

Erklärung zum Bild:

Je nachdem, wo ich in Spalte C meinen Haken setze, soll in Spalte E als erstes in der selben Zeile eine 1 erscheinen.

Jetzt setze ich meinen zweiten Haken und möchte dass in Spalte E nach der größten Zahl durchsucht wird und diese dann mit 1 addiert wird, sodass ich immer die nächst höhere Zahl erhalte.

Hoffe das war etwas verständlicher...

Kommentar von Ninombre ,

ich hab es als Kommentar zu meiner Antwort ergänzt. Auch das geht nur über ein Makro. Excel kann mit Formeln keine Zustände festhalten.

Ich hab jetzt allerdings was gefunden, dass man alle Checkboxen mit den einen Makro verknüpfen kann, nicht mehrere Makros braucht.

Expertenantwort
von Ninombre, Community-Experte für Excel, 54

Über eine Formel wird kein fester Wert abgelegt, sondern laufend neu berechnet. Das andere geht nur per Makro

Sub kontrollkästchen1_Klick()
If ActiveSheet.Shapes("Kontrollkästchen 1").ControlFormat.Value = xlOff Then Exit Sub
Range("A1").Value = Range("A1").Value + 1
End Sub

Das mit dem Kontrollkästchen verbindung und gleichartig für die anderen kopieren: Jeder Klick ruft das jeweilige Makro auf, wenn das Kästchen deaktiv ist, wird nichts gemacht, sonst der Wert in A1 hochgezählt.

Kommentar von Ninombre ,

Im Bezug auf Deine Konkretisierung:

Sub klick()
Dim i As Integer
Dim wo As Integer
If ActiveSheet.Shapes(Application.Caller).ControlFormat.Value = xlOff Then Exit Sub
i = WorksheetFunction.Max(Range("E1:E10").Value) + 1
wo = Right(Application.Caller, 2) 'ggf. + x wenn nicht in der ersten Zeile begonnen wird
If Range("E" & wo).Value <> "" Then Exit Sub 'verhindert das nach erneutem Aktivieren der bisherige Wert überschrieben wird
Range("E" & wo).Value = i
End Sub

So funktioniert das allerdings nur, wenn die Checkboxen Kontrollkästen 1, Kontrollkästchen 2 etc. heißen und die Nummerierung mit der tatsächlichen Reihenfolge übereinstimmt. Dann kann man einfach die zwei Zeichen von rechts nehmen und daraus die Zeile ableiten. Zwei Zeichen, um auch mehr als 9 Checkboxen nutzen zu können. Durch das Leerzeichen passiert bei einstelligen Zahlen nichts.

Wenn es über die Nummer in Namen nicht geht, muss Du ein manuelles Mapping vornehmen:

Sub klick2()
Dim i As Integer
Dim wo As Integer
If ActiveSheet.Shapes(Application.Caller).ControlFormat.Value = xlOff Then Exit Sub
i = WorksheetFunction.Max(Range("E1:E10").Value) + 1
Select Case Application.Caller
Case kastenx: wo = 1 'jeweils der Name der Checkbox und wo = Zeile in die geschrieben werden soll
Case kasteny: wo = 2
Case kastenblupp: wo = 3
End Select
If Range("E"&wo).value<>"" then exit sub
Range("E" & wo).Value = i
End Sub

Keine passende Antwort gefunden?

Fragen Sie die Community