Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zähle Zelle in Zeile wenn Summe der Spalte = 1
#1
Sad 
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.

   

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. 
Antworten Top
#2
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
Gruß der AlteDresdner (Win11, Off2021)
[-] Folgende(r) 1 Nutzer sagt Danke an AlterDresdner für diesen Beitrag:
  • Suprasod
Antworten Top
#3
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

Cadmus
[-] Folgende(r) 2 Nutzer sagen Danke an Cadmus für diesen Beitrag:
  • LCohen, Suprasod
Antworten Top
#4
Wie kann ich Formulieren, dass const Zielspalte = Tabelle3 Zelle A69 ist?
Antworten Top
#5
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.
Gruß der AlteDresdner (Win11, Off2021)
[-] Folgende(r) 1 Nutzer sagt Danke an AlterDresdner für diesen Beitrag:
  • Suprasod
Antworten Top
#6
Hi,

die Formellösung von Cadmus ist doch gleichzeitig simpel und clever - wozu also mit VBA rumbasteln?
Antworten Top
#7
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.
Antworten Top
#8
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
Antworten Top
#9
(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
Antworten Top
#10
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.
[-] Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:
  • Suprasod
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste