Collapse column

Autor Thema: Excel VBA: Summe über Funktion in mehreren Tabellenblättern unabhängig berechnen  (Gelesen 2163 mal)

Offline Apfelbaum1

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2010
Hallo Community,

ich habe ein Problem. Für viele von euch wahrscheinlich sehr trivial, aber ich stehe gerade echt auf dem "Schlauch"

Ich möchte in mehreren Worksheets eine Funktion in eine Zelle schreiben, von der aus dann nach rechts Summiert wird.
Die Summe wird nur aus jedem 5. Wert gebildet
Function lauf1(spalte As Integer)
Application.Volatile
Dim lauf As Double
Dim i As Integer
lauf = 0
Dim orng As Range
Set orng = Application.Caller
For i = spalte To 500 Step 5
lauf = lauf + ActiveSheet.Cells(orng.Row, i + 5).Value
Next i
lauf1 = lauf
End Function
Das funktioniert auch wunderbar, nur werden die Ergebnisse des aktuellen Worksheets in alle anderen übertragen. d.h. ich muss beim Worksheetwechsel alles neu berechnen (UMSCHALT+F9) was zum Teil sehr lange dauert. Und eine Änderung einer Zelle im active Sheet bewirkt eine mappenweite Neuberechnung, was noch länger dauert und mich dazu zwingt bei erneutem Sheetwechsel wieder alles von vorne zu berechnen.

Meine Frage:
Wie kann ich der Funktion sagen, dass nur Werte im aktiven Sheet berechnet werden sollen und mit den anderen Sheets nichts geschieht, bis ich wieder darauf zugreife und Änderungen vornehme?

Vielen Dank und ein schönes Wochende

Gruß

PS: etwaige Verwirrung wegens des Codes bitte ignorieren (bspw i+5 in der Schleife diente mir bei der Anapssung an bestimmte Worksheets)

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Hallo,

wenn ich's richtig erfasst habe, könntest auch eine Formel statt einer VBA-Funktion verwenden,
dürfte erheblich schneller sein, ein Beispiel für 1 Zeile, alle 5 Spalten:

=SUMMENPRODUKT((REST(SPALTE(B3:K3);5)=0)*(B3:K3))

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline Apfelbaum1

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2010
Summe über Funktion in mehreren Tabellenblättern unabhängig berechnen
« Antwort #2 am: Februar 02, 2015, 07:42:17 Vormittag »
Hallo,

die Formel sieht ganz gut aus, jedoch soll die Excel-Datei von Kollegen benutzt werden, die keinerlei Excel-Kenntnis haben und daher die Syntax von Formeln nicht verstehen.

In meinem ode müssen sie nur die Spaltenzahl angeben und dann geht alles von alleine.

Trotzdem danke, für den ansich guten Vorschlag!

Grüße

Ergänzend:

Hallo nochmal, ich sitze da jetzt gerade nochmals davor und komme einfach nicht drauf wieso diese Funktion auf allen Blättern das Ergebnis des aktuellen Worksheets anzeigt. Das wäre doch so als würde ich die Summenfunktion in mehreren Blättern verwende, aber sie zeigt mir in jeder Zeller nur die Ergebnisse aus dem zuletzt aufgerufenen Blatt. Das macht für mich irgendwie keinen Sinn....
« Letzte Änderung: Februar 02, 2015, 08:34:40 Vormittag von Apfelbaum1 »

Offline Apfelbaum1

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2010
LÖSUNG
« Antwort #3 am: Februar 02, 2015, 11:35:30 Vormittag »
Hallo, ich habe das Problem jetzt gelöst und werde hier kurz meine Erkenntnis mitteilen:

Das Problem war, dass die Funktion über alle Worksheets hinweg referenziert hat und die Ergebnisse des aktuellen Worksheets nicht übernommen wurden sondern separat in allen anderen mitberechnet.
Abhilfe schafft eine relative Positionsangabe mittels Offset-Befehl.
In meinem Fall war das
Application.Caller.Offset(0, i).Value
Beste Grüße

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.