Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Summewenns

Summewenns
16.02.2021 11:39:51
Marco
Hallo zusammen
Ich möchte in der Tabelle Bestand01 in der Spalte C die summe von der Tabelle BestandTKC Spalte H wenn die bedingungen erfüllt sind. Ich habe dies in der Datei per Formel eingegeben, wenn ich dies im Makro mache klappt dies nicht. Kann mir da jemand helfen?
In der Datei im Anhang habe ich bereits ein Makro das jedoch nicht wie gewünscht funktioniert. Ich möchte zu jeder Nummer die in Bestand01 Spalte A4:A stehen die entsprechende Summe.
Guss Marco
https://www.herber.de/bbs/user/143959.zip

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summewenns
16.02.2021 11:51:22
ralf_b

....ndTKC!$C:$C;$A" & n & ")"

AW: Summewenns
16.02.2021 12:27:15
Marco
Hallo Ralf
Das ist ja super, dass dies so einfach war. Nun wird immer die entsprechende Zelle der Spalte A ausgewählt.
Als Ergebnis wird mir jedoch #Name? angezeigt und nicht die errechnete Summe. Hast du dafür auch eine Lösung?
Gruss Marco
AW: Summewenns
16.02.2021 12:31:12
ralf_b
wenndu deutsche formelbezeichnungen verwendest dann formulalocal
sonst formula und sumifs
Cells(n, 3).FormulaLocal = "=Summewenns(BestandTKC!$H:$H;BestandTKC!$J:$J;C2;BestandTKC!$A:$A;$A$1;BestandTKC!$C:$C;$A" & n & ")"

Anzeige
AW: Summewenns
16.02.2021 12:44:42
Daniel
bei .Formula nicht nur englische Funktionsnamen, sondern auch Komma anstelle Semikolon als Parametertrennzeichen.
und falls verwendet, den Punkt als Dezimalzeichen bei Dezimalzahlen.
im zweifelsfall behilft man sich so:
man schriebt die Formel von Hand wie gewünscht und funktionsfähig in die Zelle.
dann selektiert man sie und gibt im direkt fenster den Befehl ein:
?Selection.Formula (oder .FormulaLocal oder .FormulaR1C1, je nachdem welche Formelschreibweise man bevorzugt)
ich würde hier sogar die Z1S1 bzw R1C1-Schreibweise verwenden.
das vereinfacht den Code, weil du die Zeilennummer n nicht mehr in die Formel einbringen musst, sondern den relativen Zellbezug direkt angeben kannst:
Cells(n, 3).FormulaR1C1Local = "=Summewenns(BestandTKC!S8;BestandTKC!S10;Z2S3;BestandTKC!S1;Z1S1;BestandTKC!S3;ZS1)"
dabei steht das Z für Zeile und S für Spalte, danach folgt die Zeilen- oder Spaltennummer.
steht das S alleine, ist die ganze Spalte gemeint.
folgt nach dem Z oder S keine Zahl, dann geht der Bezug auf die gleiche Zeile oder Spalte, in der auch die Formel steht.
Ist zwar für den Excelanwender etwas ungewohnt, in der Programmierung aber meistens das bessere, weil man eben relative Zellbezüge auch relativ beschreiben kann und nicht erst in absolute Adressen umwandeln muss.
Gruß Daniel
Anzeige
AW: Summewenns
16.02.2021 12:59:14
Marco
Hallo zusammen
Super danke euch für die schnelle Hilfe, klappt super.
Eine kleine Frage hab ich noch. Jetzt zeigt es mir in den entsprechenden Zellen ja die Formel bzw. das Ergebnis an. Kann man auch machen dass man direkt nur das Ergebnis in die Zelle schreiben lässt anstelle der Formel?
Ist das möglich?
Gruss Marco
AW: Summewenns
16.02.2021 13:06:40
ralf_b
versuchs so
..
....Next Zeile
Cells(4, 3).Resize(Zeile).Value = Cells(4, 3).Resize(Zeile).Value
End With
...

AW: Summewenns
16.02.2021 13:12:32
Daniel
Hi
nur so als Tipp:
ich würde die Formel hier nicht per Schleife eintragen, sondern gleich in alle Zellen gleichzeitig, statt der For-Schleile
With Range("C4:C" & ZeileMax)
.Formula = "=deine Formel in der passenden Schreibweise"
.Formula = .Value
End with
Gruß Daniel
Anzeige
AW: Summewenns
17.02.2021 09:10:37
Marco
Hallo Daniel
Wenn ich dies so anpasse bekomme ich immer eine Meldung "Fehler beim Kompilieren" und es markiert den "UsedRange"
Woran liegt dies?
Danke für deine Hilfe.
Sub Bestand1()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim Formula As String
ZeileMax = .UsedRange.Rows.Count
n = 4
With Range("C4:C" & ZeileMax)
.FormulaR1C1Local = "=Summewenns(BestandTKC!S8;BestandTKC!S10;Z2S3;BestandTKC!S1;Z1S1; _
BestandTKC!S3;ZS1)/Summewenns(StammdatenHiCoPain!S35;StammdatenHiCoPain!S1;ZS1)"
.FormulaR1C1Local = .Value
End With
End Sub

Anzeige
AW: Summewenns
17.02.2021 09:28:35
Daniel
Hi
naja vor dem UsedRange fehlt noch das Tabellenblatt.
du musst doch vor UsedRange immer angeben, von welchem Tabellenblatt du die UsedRange ermitteln willst.
ein Punkt als Beginn einer Objektkette funktioniert nur INNERHALB eines WIDH-Blocks (also zwischen "WITH" und "END WITH"
dabei wird dann, wenn die Objektkette mit dem Punkt beginnt, dass bei WITH definierte Objekt an dieser Stelle eingesetzt.
Das macht man als Abkürzung, damit man ein mehrfach benötigtes Objekt nicht jedesmal wiederholen muss, sondern nur einmal hinschreibt.
das kürzt den Code und vereinfacht nachträgliche Änderungergen, weil man das Objekt dann nur einmal anpassen muss und nicht mehrfach.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige