Anzeige

[Excel] Zeilen für Summenprodukt automatisch ermitteln


josef24

Erfahrenes Mitglied
#1
Guten Tag an die Fachleute. Ich möchte u. a. Code so einrichten, das die nach meinem Wissen starre Eingrenzung der Spalte und Nummer von - bis nur ein richtiges Ergebnis in meinem Beispiel ergibt. Frage: kann man die ausgefüllten Zeilen nicht automatisch ermitteln lassen, so das das richtige Ergebnis aus Summenprodukt errechnet wird. Die Anzahl Zeilen verändert sich, und man muß ständig den Code händisch aktualisieren, was sehr lästig ist.
Ich lese immer was von letzter Zeile ermitteln, aber ich muss doch den Zeilenumfang genau difinieren?
Kann mir da vielleicht jemand weiter helfen? Bin hier etwas ratlos. Gruß Josef

Code:
        letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        MsgBox letztezeile

Worksheets("TabStat").Range("b2").FormulaLocal = "=SUMMENPRODUKT(((ArbTab!$C$2:$C$20=""Herr"")+(ArbTab!$C$2:$C$20=""Frau""))/ZÄHLENWENN(ArbTab!$B$2:$B$20;ArbTab!$B$2:$B$20))"
              Worksheets("TabStat").Range("b2").Copy
              Worksheets("TabStat").Range("b2").PasteSpecial xlValues
 
Zuletzt bearbeitet:

Zvoni

Erfahrenes Mitglied
#2
Visual Basic:
Worksheets("TabStat").Range("b2").FormulaLocal = "=SUMMENPRODUKT(((ArbTab!$C$2:$C$" & LetzteZeile & "=""Herr"")+(ArbTab!$C$2:$C$" & LetzteZeile & "=""Frau""))/ZÄHLENWENN(ArbTab!$B$2:$B$" & LetzteZeile & ";ArbTab!$B$2:$B$" & LetzteZeile & "))"
 

josef24

Erfahrenes Mitglied
#3
Danke für die Mammutzeile/Code. Er weist aber leider noch auf einen "Laufzeitfehler 1004" , Anwendungs- oder Objektdefinierter Fehler hin. Kann man da noch bitte auf eine Korrektur hoffen. Es würde mir natürlich sehr weiter helfen. Beispieldatei zur Anschauung. Gruß Josef
 

Anhänge

josef24

Erfahrenes Mitglied
#7
Muss nochmal anklopfen. Hatte meine Kontrolle zu oberflächlich gemacht. Das Ergebnis ist doch nicht korrekt.
Vielleicht kann mal von den Experten jemand einen Blick darauf werfen. Als Ergebnis erhalte ich in der Tabelle den Wert #DIV/0! Folgender Kode hatte ich versucht. Danke und Gruß Josef

Code:
Worksheets("TabStat").Range("b3").FormulaLocal = "=SUMMENPRODUKT((ArbTab!$C$2:$C$" & LetzteZeile & "=""Herr"")/ZÄHLENWENN(ArbTab!$B$2:$B$" & LetzteZeile & ";ArbTab!$B$2:$B$" & LetzteZeile & "))"
'  /ZÄHLENWENN(ArbTab!$B$2:$B$1;ArbTab!$B$2:$B$15))"
            Worksheets("TabStat").Range("b3").Copy
            Worksheets("TabStat").Range("b3").PasteSpecial xlValues
 

Zvoni

Erfahrenes Mitglied
#9
schau mal jetzt, ob es so ok ist.
Ich hab im Code ein paar sachen auskommentiert.
LetztZeile muss übrigens nur einmal ermittelt werden.

EDIT: Hier war übrigens ein Fehler drin:
Worksheets("TabStat").Range("b3").FormulaLocal = "=SUMMENPRODUKT((ArbTab!$C$2:$C$" & LetzteZeile & "=""Herr"")/ZÄHLENWENN(ArbTab!$B$2:$B$" & LetzteZeile & ";ArbTab!;$B$2:$B$" & LetzteZeile & "))"

Da ist ein Semikolon zu viel (falls du das rote erkennen kannst)
 

Anhänge

josef24

Erfahrenes Mitglied
#10
Danke vielmals. Hatte das Semikolon übersehen. Code fuktioniert optimal. Aber zugegeben, die anderen Code in die richtige Reihenfolge zu bringen war mir nicht gelungen. Nochmals Danke für deine Geduld und Gruß Josef
 

josef24

Erfahrenes Mitglied
#11
Guten Morgen. Habe die Code mal in mein Original kopiert. Jetzt habe ich bei ca. 250 Zeilen, bei der Summe in der ersten Codezeile, "Addition Frau und Herr" gesamt in der Summe Menge 1 zu wenig. Kann das jetzt an dem viel größeren Zeilenumfang liegen? Bei der Einzelsumme "Herr" o. "Frau" passt es komischer Weise. Kann mir hierbei jemand weiter helfen. Danke und Gruß Josef
 
Anzeige
Anzeige