Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
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 bilden mit variablem Range

Summe bilden mit variablem Range
09.04.2020 13:16:46
Tim
Hallo Leute,
ich hoffe ihr könnt mir helfen. Ich hänge seit gestern vor einem augenscheinlich ganz simplen Problem.
Es soll eine Summe über einen variablen Bereich gebildet und einer Variablen zugeordnet werden. Allerdings in einem anderen Tabellenblatt (alles die gleiche Arbeitsmappe).
Mit einem statischen Bereich sieht das bei mir dann wie folgt aus:
longINHABITANTS = WorksheetFunction.Sum(Worksheets("Strukturdaten").Range("C31:C17000").Value)
Die Range muss aber variabel sein. Also müsste ich eigentlich mit Cells() arbeiten, aber soweit mir bekannt funktioniert das Arbeitsblatt übergreifend nicht. Das Problem ist, dass ich diese Summe in 10 anderen Tabellenblättern auch benötige und mir im VBA Code holen muss.
Besten Dank schon mal für eure Idee! :-)
Tim
PS: Ja, ich habe gestern auch Google bemüht und auch hier im Forum gelesen. Habe es leider trotzdem nicht hinbekommen.

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

Betreff
Datum
Anwender
Anzeige
AW: Summe bilden mit variablem Range
09.04.2020 14:15:05
ChrisL
Hi Tim
Vielleicht so...
Sub t()
Dim ws As Worksheet, longINHABITANTS As Long
For Each ws In ThisWorkbook.Worksheets
longINHABITANTS = longINHABITANTS + WorksheetFunction.Sum(ws.Columns(3))
Next ws
MsgBox longINHABITANTS
End Sub
cu
Chris
AW: Summe bilden mit variablem Range
09.04.2020 15:18:27
Firmus
Hi Chris,
mit umschalten des sheets sollte es so klappen.
1. Filter in VBA setzen und dann dies anwenden:

'Teil der Spalte C in sheet-2
Sheets(2).Activate
longINHABITANTS = WorksheetFunction.Subtotal(9, Range(Cells(2, 3), Cells(20, 3)))
'Teil der Spalte B in sheet-1
Sheets(1).Activate
longINHABITANTS = WorksheetFunction.Aggregate(9, 3, Range(Cells(2, 2), Cells(20, 2)))
Subtotal und Aggregate 9.3.... summieren nur die sichtbaren Zellen, ohne die Zwischensummen-Zellen.
Gruß,
Firmus
Anzeige
AW: Summe bilden mit variablem Range
09.04.2020 15:19:03
Firmus
Sorry: Tim
AW: Summe bilden mit variablem Range
09.04.2020 15:45:36
Tim
Vielen Dank Chris, vielen Dank Firmus,
ich glaube ich habe euch nicht ganz verstanden oder ich habe mein Problem unzureichend erklärt.
Die Nutzung eines händisch eingestellten Filters kommt leider nicht in Frage. Die Daten müssen ausschließlich per VBA bearbeitet werden. Auch kann keine Summenbildung über eine ganze Spalte gehen, da das Ende abhängig ist von Variablen.
Von meinem Denkschema her hätte ich es wie folgt geschrieben in den Code für jedes Tabellenblatt, welches den Wert braucht:
Sub ()
Dim longINHABITANTS as long
Dim longCOUNT_OF_CELLS As Long
longCOUNT_OF_CELLS = Worksheets("MIV Matrix").Range("E21").Value
longINHABITANTS = WorksheetFunction.Sum(Worksheets("Strukturdaten").Range(Cells(31,3),Cells(30+ _
longCOUNT_OF_CELLS,3).Value)
End Sub

Aber das geht ja nicht, weil ich mit Cells nicht in einem anderen Tabellenblatt arbeiten kann.
Anzeige
AW: Summe bilden mit variablem Range
09.04.2020 16:00:45
ChrisL
Hi Tim
Ja ganz klar ist mir die Problemstellung nicht. Keine Ahnung wieso jetzt plötzlich von Filtern die Rede ist.
Jedenfalls ist die Aussage, dass man Cells nicht auf andere Tabellen beziehen kann falsch. Geht ohne Probleme, aber man müsste sauber referenzieren.
longINHABITANTS = WorksheetFunction.Sum(Worksheets("Strukturdaten").Range(Worksheets("Strukturdaten").Cells(31,3),Worksheets("Strukturdaten").Cells(30+longCOUNT_OF_CELLS,3).Value)
oder
With Worksheets("Strukturdaten")
longINHABITANTS = WorksheetFunction.Sum(.Range(.Cells(31,3),.Cells(30+longCOUNT_OF_CELLS,3).Value)
End with
cu
Chris
Anzeige
AW: Summe bilden mit variablem Range
09.04.2020 17:09:01
Tim
Besten Dank Chris! Ein super Forum hier! :-)
Es fehlten irgendwie irgendwo noch Klammern, aber mit diesem Code von dir hat es geklappt:
longINHABITANTS = WorksheetFunction.Sum(Worksheets("Strukturdaten").Range((Worksheets("Strukturdaten").Cells(31, 3)), Worksheets("Strukturdaten").Cells(30 + longCOUNT_OF_CELLS, 3)).Value)
TOP DANKE!

145 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige