Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 14:18:05
28.04.2024 13:43:14
Anzeige
Archiv - Navigation
1772to1776
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

Summe mit variabler Range

Summe mit variabler Range
17.07.2020 15:25:45
Hannah
Hallo liebe Community,
Und schönen Nachmittag. Ich hoffe wirklich, einen von euch auch noch freitags Nachmittags zu erreichen...
Ich möchte mit VBA eine Summe bilden, wobei sich Start- & Endzelle verändern.
Gleich bleibt, dass die Startzelle immer rechts neben Start steht und die Endzelle immer eins rechts von Summe.
So sieht mein Makro derzeit aus (das nicht funktioniert)
Sub Variable Summe()
Dim firstRow As Long
Dim lastRow As Long
With Worksheets("Tabelle1")
Set firstRow = .Columns("B").Find(What:="Start")
Set lastRow = .Columns("B").Find(What:="Summe")
End With
lastRow.Offset(1, 1).Select
ActiveCell.FormulaR1C1 = "=SUM(E" & firstRow & ":E" & lastRow & ")"
End Sub
Mein Gedanke war, die Zeile mit firstRow und lastRow auszulesen und in der Summe zu verwenden.
Hilfe wäre super, denn dann rettet ihr mich vor einem sehr langen Freitag im Büro. O-O
Alles Liebe
Hannah

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: geraten (ohne Nachbau)
17.07.2020 15:35:33
Fennek
Hallo Hannah,
versuche es mit dieser Zeile anstelle der letzten:

lastRow.offset(1,1) = application.sum(range(firstRow, lastRow))
mfg
(ansonsten wäre eine kleine Beispieldatei hilfreich)
AW: Summe mit variabler Range
17.07.2020 15:47:45
Werner
Hallo,
Sub Variable_Summe()
Dim raErste As Range, raLetzte As Range
With Worksheets("Tabelle1")
Set raErste = .Columns("B").Find(What:="Start", LookIn:=xlValues, lookat:=xlWhole)
If raErste Is Nothing Then
MsgBox "Fehler: Startzeile nicht gefunden."
Exit Sub
End If
Set raLetzte = .Columns("B").Find(What:="Summe", LookIn:=xlValues, lookat:=xlWhole)
If raLetzte Is Nothing Then
MsgBox "Fehler: Summenzeile nicht gefunden."
Exit Sub
End If
raLetzte.Offset(1, 1).Formula = "=SUM(E" & raErste.Row & ":E" & raLetzte.Row & ")"
End With
Set raErste = Nothing: Set raLetzte = Nothing
End Sub
Hinweis: In einem Beitrag von dir gibt es Antworten - eine Reaktion deinerseits vermisse ich aber.
Gruß Werner
Anzeige
AW: Summe mit variabler Range
17.07.2020 16:04:26
Hannah
Lieber Walter,
Vielen dank für deine Antwort.
Für mein weiteres Makro habe ich deine letzte Antwort genutzt und bin damit schon sehr weit gekommen. Dafür gleich jetzt vorab ein großes DANKE.
Und auch hier wieder - ich bin beeindruckt und werde danke dir für die souveräne Antwort.
PS: Das danke füge ich natürlich auch noch im anderen Beitrag hinzu :) - dort wollte ich eigentlich meine "beiden" Hilfesteller adressieren aber offenbar siehst du das dann nicht?
Egal, wird gleich nachgeholt.
Ich wünsche ein schönes Wochenende :)
Alles Liebe
Hannah
Gerne u. Danke für die Rückmeldung. o.w.T.
17.07.2020 16:31:48
Werner
AW: eigentlich meinte ich ....
20.07.2020 09:31:40
Hannah
Hallo Werner,
Jetzt verstehe ich, was du meinst...
Diese Frage kam aber nicht von mir, sondern von einem Namensvettern.
Gruß
Hannah 1
AW: Summe mit variabler Range
17.07.2020 15:50:57
Daniel
Hi
1. bei .FormulaR1C1 musst du auch die R1C1-Addressierungsart verwenden und nicht die A1-Addressierungsart wie bei .Formula.
2. du ermittelst hier die Zellen als Objekt, in die formel darf aber nur die Zeilennummer dieser Zellen:
richtig wäre (und dann natürlich ohne Select):
lastRow.Offset(1, 1).FormulaR1C1 = "=Sum(R" & firstRow.Row & "C5:R" & lastRow.Row & "C5)"

wobei du dir das in R1C1 noch etwas vereinfachen kannst, wenn du relative Zellbezüge richtig nutzt:
lastRow.Offset(1, 1).FormulaR1C1 = "=Sum(R" & firstRow.Row & "C5:R[-1]C5)"

oder mit A1-Adressen, da musst man beide Zeilennummern angeben:
lastRow.Offset(1, 1).FormulaR1C1 = "=Sum(E" & firstRow.Row & ":E" & lastRow.Row &")"
prinzipell verwende ich aber folgendes, wenn ich auf diese weise Formeln erstelle, weil es bei längeren Formel übersichtlicher ist, insbesondere dann wenn der gleiche wert mehrfach vorkommt:
Der Dummy-Text darf natürlich nicht auch noch an anderer Stelle regulär in der Formel vorkommen:
dim FO as string
FO = "=Sum(Exxx:Eyyy)"
FO = Replace(FO, "xxx", firstRow.Row)
FO = Replace(FO, "yyy", lastRow.Row)
lastRow.Offset(1, 1).Formula = FO
Gruß Daniel
Anzeige
AW: Summe mit variabler Range
17.07.2020 16:00:52
Hannah
Lieber Daniel,
Vielen Dank für die schnelle Hilfe. Jetzt kann ich dank eurer Hilfe bald in den Feierabend - JUHU :)
ich wünsche dir ein ganz ganz schönes Wochenende!
Alles Liebe
Hannah
AW: Summe mit variabler Range
17.07.2020 16:04:13
Herbert_Grom
Hallo Hannah,
schau dir mal meinen Vorschlag an, der ist schön kurz und knackig:
Option Explicit
Sub VariableSumme()
Dim iFirstRow%, iLastRow%
With Worksheets("Tabelle1")
iFirstRow = .Range("B:B").Find(What:="Start").Row
iLastRow = .Range("B:B").Find(What:="Summe").Row
End With
Cells(iLastRow + 1, 5).Formula = "=SUM(E" & iFirstRow & ":E" & iLastRow & ")"
End Sub
Servus
Anzeige
AW: Summe mit variabler Range
17.07.2020 16:06:32
Hannah
Lieber Herbert,
Danke für die Antwort!
Wirklich sehr elegant gelöst! - JUHU
Ein schönes Wochenende!
Alles Liebe Hannah
Gerne geschehen und danke für die Rückmeldung! owt
17.07.2020 16:10:36
Herbert_Grom
,,,

145 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige