Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
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

Dynamische Summe bilden

Dynamische Summe bilden
21.12.2021 10:56:14
LuHu
Hallo liebe Community,
ich wollte jede Zeile durchgehen mit der For each Schleife um dann in den entsprechenden Zeilen die Summe aus verschiedenen Spalten zu bilden.
Dim z As Long
Dim s As Long
z = Cells(Rows.Count, 27).End(xlUp).Row
For z = 5 To z
Cells(z, 27).Formula = "=Sum(Cells(z, 19), Cells(z, 33))"
Next

Leider erscheint in den Zellen ein Fehler da er nicht erkennt in welcher Zeile er sich befindet.
Wäre um jeden Tipp hilfreich

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamische Summe bilden
21.12.2021 11:28:23
Yal
Hallo LuHu,
Alles was zwischen ".." steht, wird als direkt so übernommen. Cells(z,19) versteht leider nur VBA, aber nicht den Formel-Interpreter von Excel.

For z = 5 To z
Cells(z, 27).FormulaR1C1 = "=Sum(RC19, RC33)"
Next
Was passiert dabei:
man übergibt die Formel in Row|Column-Notation ("R1C1"). RC19 bedeutet in dieser Zeile, Spalte 19. RC33 in dieser Zeile, Spalte 33.
Da die Zelle, wo die Formel eingetragen wird immer auf eine andere Zeile steht, interpretiert Excel den "R" immer neu. "C19" und "C33" sind wiederum fest.
VG
Yal
Anzeige
Nachtrag
21.12.2021 11:34:58
Yal
um mit Formula statt FormulaR1X1 zu arbeiten, müsste es wir folgt aussehen:

Cells(z, 27).Formula = "=Sum(" & Cells(z, 19).Address & "," & Cells(z, 33).Address & ")"
Oder

Cells(z, 27).Formula = "=Sum(S" & z & ":AG" & z & ")"
Übrigens: die Spalte 27 ist genau zwischen 19 und 33. D.h. Du hast damit einem Zirkelbezug (Gewünschte Ergebnis ist Teil der Eingangswerte).
VG
Yal
AW: Nachtrag
21.12.2021 11:53:13
ralf_b
Moin Yal,
mich wundert das dies For z = 5 To z von dir unbeachtet bleibt. Ich denke das diese Schleife nicht läuft.
Anzeige
AW: Nachtrag
21.12.2021 12:32:32
Yal
OMG! Dass ich das übersehen habe! Shame on me ;-)
Die Schleife läuft. Aber nur einmal, da der Endwert sofort erreicht ist. Anders gesagt: könnte man sich die Schleife sparen.
Der Test:

Sub test()
Dim i
For i = 5 To i
Debug.Print i
DoEvents 'Notwendig, um notfalls einen Strg+Pause platzieren zu können
Next
End Sub
@Hulu:
dein Bedarf sollte mit folgendem bedeckt sein:

Sub Formel_eintragen()
With Range(Cells(5, 27), Cells(Rows.Count, 27).End(xlUp))
.FormulaR1C1 = "=Sum(RC19, RC33)"
End With
End Sub
ABER: wenn deine Spalte 27 ("AA") komplett leer ist, weder die Formeln zwischen AA1 und AA5 eingetragen. Was sicher nicht in deinem Sinn ist.
Wenn wir annehmen, dass die Spalte 19 ("S") nicht leer ist, dann:

Sub Formel_eintragen()
With Range(Cells(5, 27), Cells(Cells(Rows.Count, 19).End(xlUp).Row, 27))
.FormulaR1C1 = "=Sum(RC19, RC33)"
End With
End Sub
Der Zirkelbezug ist damit aber immer noch drin (nicht gelöst).
VG
Yal
Anzeige
AW: Nachtrag - ,,nicht ganz richtig
22.12.2021 07:42:52
Luschi
Hallo Yal,
diese Schleife läuft dagegen nicht:

Sub test()
Dim i As Integer
For i = 5 To i
Debug.Print i
DoEvents 'Notwendig, um notfalls einen Strg+Pause platzieren zu können
Next
End Sub

Gruß von Luschio
aus klein-Paris
OT: Amazing...
22.12.2021 14:43:07
Yal
Hallo Luschi,
tatsächlich: wenn der Datentyp nicht bei der Deklaration feststeht (egal, ob Integer, Long, Single,...) versucht den For den "i = 5" zu bewerten und legt einen Datentyp dann fest. Umgekehrt nicht.
Ich gehe davon aus, dass der Teil "To i" zuerst bewertet wird, und da der Datentyp noch nicht steht, die Gleichheit zu i = 5 nicht vollständig festgestellt werden kann. Aber es ist nur eine Vermutung.
Bei LuHu stand
Dim z As Long
daher keinen Durchlauf. Punkte für dich ;-)
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige