Clever-Excel-Forum

Normale Version: Zähle Zelle in Zeile wenn Summe der Spalte = 1
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum,

ich grüble und suche schon eine Weile nach einer Lösung für folgendes Problem.

Ich habe mehrere Spalten mit den Werten 0 oder 1. In der letzten Spalte soll die Summe der Zeile erscheinen. Die Bedingung wäre aber, dass der einzelne Wert einer Zelle nur gezählt wird, wenn der Gesamtwert der Spalte = 1 ist.
In meinem Bild wird nur ganz stupide die Summe gebildet. Nach meinen Bedingungen müssten die Werte in Spalte E von oben nach unten 0,0,1,0 sein, da in Spalte 1 und 3 die Summe größer 1 ist. 
Falls es hilft, unter jeder Zeile ermittle ich auch die Summe der Zeile. Der Wert ist also in Zeile 6 bereits vorhanden.

Am liebsten wäre es mir wenn es mit einer Formel lösbar ist, vermute aber, dass es nur per Makro geht, weil die Anzahl der Spalten beliebig ist. Es werden nach und nach Spalten hinzugefügt, welche die Ergebnisspalte immer weiter nach hinten schieben. Bei einer simplen Ausgabe der Summe einer Zeile würde das ja nicht stören, aber durch die Bedingungen wird das wohl nix.

[attachment=42473]

Um es zu verdeutlichen, es geht im Detail darum, dass Wahlscheine bei der Stimmenauszählung digital erfasst werden. Es darf nur eine Stimme abgegeben werden. Die Spalten sind also einzelne Wahlscheine und die Zeilen sind die Wahlmöglichkeiten. Wurde nichts angekreuzt oder mehr als ein Kreuz gemacht, ist der Wahlschein ungültig, darf also im Ergebnis nicht mitgezählt werden. Für eine spätere willkürliche Stichprobe, werden aber halt auch die ungültigen Wahlscheine erfasst. Nicht zuletzt, um auch die Anzahl der Wahlscheine zu erfassen, welche ja mit der Wähleranzahl übereinstimmen muss.

Ich habe mir über lange Zeit eine Exceldatei gebastelt. Die Benutzeroberfläche ist per UserFormen gebaut. Die Tabelle selbst ist gut geschützt und ausgeblendet. Nur mit Passwort kommt man über die Benutzeroberfläche an die Daten. Das soll Manipulation ausschließen. Die Tabelle selbst protokolliert auch alles was manuell erfasst oder geändert wird. Ergo wird auch das Löschen des Protokolls erfasst, was im Ernstfall zu Erklärungsschwierigkeiten führen sollte. Die Makros habe ich entweder über die Aufzeichnen Funktion oder aus dem Netz zusammengestümpert. Es funktioniert, aber ich schweife ab...

Mein beschriebenes Problem habe ich allerdings noch nicht gelöst bekommen und leider auch kein ähnliches Szenario gefunden.

Ich wäre für eine Lösung des "Zähle Zelle in Zeile, wenn Summe der Spalte = 1"-Problems sehr dankbar.

Ich bin auch bereit das Ergebnis zu teilen. Bei erfahrenen Nutzern führt das sicher zum Schmunzeln, wenn man sich den Aufbau des Makros anschaut. 
Hallo,
eine Formel kriege ich nicht hin, in VBA sollte es so gehen
Code:
Sub Gueltigkeit()
Dim zeile As Long, spalte As Long, summe As Long
Const Summenzeile = 6 'ggfls. anpassen
Const Zielspalte = 5 'ggfls. anpassen
  With ActiveSheet 'ggfls. anpassen
    For zeile = 2 To Summenzeile - 1
      summe = 0
      For spalte = 2 To Zielspalte - 1
        summe = summe + IIf(.Cells(Summenzeile, spalte) = 1, .Cells(zeile, spalte), 0)
      Next spalte
      .Cells(zeile, Zielspalte) = summe
    Next zeile
  End With
End Sub
Hallo,


Tabelle1
ABCDE
1Nr1Nr2Nr3
2Option A1010
3Option B1010
4Option C0101
5Option D0000
6212

verwendete Formeln
Zelle Formel Bereich N/A
E2:E5=SUMMEWENN($B$6:$D$6;1;B2: D2)
B6: D6=SUMME(B2:B5)
http://excel-inn.de/dateien/vba_beispiel..._addin.zip
http://Hajo-Excel.de/tools.htm
Add-In-Version 25.23 einschl. 64 Bit
XHTML-Tabelle zur Darstellung in Foren, einschl. Funktion zum Zurücklesen in eine Excel-Tabelle

Wie kann ich Formulieren, dass const Zielspalte = Tabelle3 Zelle A69 ist?
Hallo,
gar nicht. Const ist halt ein konstanter Wert.
Das Gewünschte lässt sich aber über
  Dim Zielspalte as Lon g
  Zielspalte=Sheets("Tabelle3").Range("A69")
erreichen.
Hi,

die Formellösung von Cadmus ist doch gleichzeitig simpel und clever - wozu also mit VBA rumbasteln?
Ich danke vielmals für die schnelle Hilfe. Das funktioniert mit dem Makro jetzt ausgezeichnet. (-:


(10.03.2022, 12:34){Boris} schrieb: [ -> ]Hi,

die Formellösung von Cadmus ist doch gleichzeitig simpel und clever - wozu also mit VBA rumbasteln?

Die Formel funktioniert aber nur bei gleichbleibender Anzahl der Spalten. Das ist aber nicht der Fall. Es werden immer wieder weitere Spalten hinzugefügt, was ich auch beschrieben habe. 

Die Lösung von AlterDresdner hab ich also so umgemodelt, dass in Zelle A69 nun die Formel "=ANZAHL(2:2)+1" steht.
+1, weil ich eine versteckte Spalte habe. Somit habe ich nach dem einfügen einer weiteren Spalte dort immer den korrekten Wert für die Spaltenzahl des Ergebnisses.
Hi,

Zitat:Die Formel funktioniert aber nur bei gleichbleibender Anzahl der Spalten.

Das wiederum ist schlicht falsch. Aber mir soll es ja eigentlich auch egal sein Wink
(10.03.2022, 13:13){Boris} schrieb: [ -> ]Hi,


Das wiederum ist schlicht falsch. Aber mir soll es ja eigentlich auch egal sein Wink

Ich habs ausprobiert, die Zellbezüge bleiben gleich wenn ich Spalten einfüge. Spalten werden immer hinter Spalte A hinzugefügt, so dass die neuste Spalte links ist.
Füge ich eine Spalte ein dann wird aus =SUMMEWENN($B$6:$D$6;1;B2: D2) einfach nur =SUMMEWENN($C$6:$E$6;1;C2: E2). 

Mach ich was falsch? Bin für einfach immer zu haben. Wink

@Boris:

Hab's nochmal probiert. Durch die gezielte Abfrage kann ich Spalte A mit in die Formel aufnehmen. Wird ja nicht mitgezählt. Das führt dazu, dass sich die Formel automatisch erweitert wenn ich was einfüge. =SUMMEWENN($A$6:$D$6;1;A2: D2)

Also habe ich gleich 2 Lösungen. Danke nochmal für den Denkanstoß.  18
Hi,

Zitat:Hab's nochmal probiert. Durch die gezielte Abfrage kann ich Spalte A mit in die Formel aufnehmen. Wird ja nicht mitgezählt. Das führt dazu, dass sich die Formel automatisch erweitert wenn ich was einfüge. =SUMMEWENN($A$6:$D$6;1;A2: D2)

Das war schon mal eine sehr gute Erkenntnis Smile
Alternativ könnte man die Formel auch problemlos dynamisieren, aber das ist nicht notwendig, wenn man es so macht wie von Dir geschrieben.