Einzelne Zellen von verschiedenen xl-Blättern addieren, mit variablen Blatterweiterungen?

...komplette Frage anzeigen

5 Antworten

Flexibel scheint man das nicht gestalten zu können.

=SUMME('1. KW:3. KW'!A1)

Das funktioniert.

Einen Namen AktKW anzulegen mit 

=TEIL(ZELLE("dateiname");FINDEN("]";ZELLE("dateiname"))+1;1)

geht auch.

Was nicht geht ist

=SUMME(INDIREKT("'1. KW:"&AktKW&". KW'!A1"))

Diese Art der Bereichsreferenzierung arbeitsblattübergreifend scheint Excel ein Dorn im Auge zu sein. Das Adressfeld zeigt die Adress z. B. gar nicht an.

INDIREKT, mit dem man dynamisch Bereiche referenzieren kann, ist hoffnungslos überfordert.

Iamiam 28.01.2017, 01:30

flexibel scheint man das nicht gestalten zu können: siehe meine AW (da bin ich aber auch durch andere mit der Nase drauf gestoßen worden!)

1

Den Namen eines Blattes davor/danach bekommst Du mit dieser µ-Formel:

  • Function VorNachBlattName(rngZelle As Range, Optional i As Integer = 1) As Variant
  • '>>Optional, i ansonsten vorgegeben 1. Fkt as Variant. (ist aber Standard-Vorgabe?)
  • Application.Volatile
  • With Application.Caller.Parent
  • If .Index + i > .Parent.Sheets.Count Or .Index + i < 1 Then
    VorNachBlattName = CVErr(xlErrRef)
  • MsgBox " das Blatt scheint es nicht zu geben"
  • Exit Function
  • End If
  • VorNachBlattName = Worksheets(.Index + i).Name
  • End With
  • End Function
  • abgeleitet aus diesem Link (den hat neulich erst einer hier gepostet, weiß aber nicht mehr, wer):
  • 'http://www.tech-archive.net/Archive/German/microsoft.public.de.excel/2006-09/msg00001.html

i kann + oder - sein, Die Funktion kann in jede Adresse eingebunden werden, ist aber nicht allzu schnell, also nicht exzessiv verwenden bzw Auswirkung testen!

also zB =SUMME(INDIREKT(VorNachBlattName(C9;-1)&"!A1:A22")) etc.

Das in Deine Formel einzubauen, hab ich grad keine Zeit mehr (hat sowieso viel zu lang gedauert!)

Ich hätte die Gegenfrage:

Warum Summenprodukt? Willst du mehr als nur die Summe?

Ich verstehe deine Frage so:

- A1 = Berechnung mit Ergebnis der Kalenderwoche: z.B. Gewinn in dieser Woche.

- B1 = Gewinn insgesamt seit Jahresbeginn.

Meine Vorschläge:

Funktionsüberlegung

Je nachdem wie Komplex die Berechnung in B1 ist, wäre es sinnvoll, dass du anstatt 1.KW!A1 bis aktuelle.KW!A1 die Funktion so überarbeiten kannst, dass du nur noch letzte.KW!B1 mit aktuelle.KW!A1 kombinieren musst.

Arbeitsblattbestimmung

Anstatt das "]" zu suchen, könntest du die Arbeitsblätter rechtsbündig identisch machen: z.B: "KW01" bis "KW52". Dann brauchst du nur noch

RECHTS(Zelle("dateiname"),4)

um die aktuelle Arbeitsblattbezeichnung zu bekommen und:

"KW"&TEXT(WERT(RECHTS(ZELLE("dateiname"),2))-1),"00")

Um das Arbeitsblatt der Vorwoche zu kennen. Das funktioniert natürlich nicht bei der ersten Kalenderwoche.

Ghanasoccer 16.01.2017, 16:22

1. Es werden auch noch WAHR und FALSCH bedingungen gesetzt

Ich verstehe was du sagst, also so:

=SUMME((aktuelleKW-1)!A1 + aktuelleKW!A1

Bedingungen müssten dort ja nicht zu kurz kommen. Leider muss der Benutzer auf jeden Fall immer alle 52 KW eintragen, auch wenn es zb einmal Sommerpause oä. gibt.

Is zwar gut geneint aber nicht die Lösung.

Aber ich könnte WENNFEHLER() dann AktuelleKW-2 oder so machen. Das ist zwar nicht so ganz das was ich wollte und weniger schön aber eine Überlegung wert.

Mit der Arbeitsblattbestimmung bin ich ganz zufrieden. :)

0
hawking42 16.01.2017, 16:41
@Ghanasoccer

Ein Wennfehler solltest du vermeiden. Was machst du mit 2 Wochen Pause, was mit 3? Am Ende machst du dir das damit komplizierter.

Wäre eine Zusatzzelle "WochenOffset"=1 eine Möglichkeit, dass wenn du einmal eine Sommerpause hast, du dann die eine Blattbezeichnung nicht "-1" sondern eben "-X" verschiebst. Sonst eben wie DeeDee vorgeschlagen hat mit BLATT() und dann einen festen Offset zu den Blattnummern, dann musst du aber die Reihenfolge beibehalten und würdest immer die Werte vom "Blatt eins links vom aktuellen Blatt" holen können.


Und zum Wahr-Falsch-Problem: Du kannst ja eine extra Übertragszelle machen, in denen du nur addierst, wenn das aktuelle blatt Wahr ist.

X5 = vorherigeWoche!X5 + WENNWAHR(C1)*A1

0
Ghanasoccer 16.01.2017, 20:17
@hawking42

Ich glaube ich erstelle einfach jedes Blatt schonmal und es gibt keine Probleme!

0

Welche Excel-Version hast du? Ab 2013 (Mac 2011) kannst du vllt. die Funktion BLATT verwenden. Ich dachte an sowas wie:

=SUMME(INDIREKT("1.KW:"&BLATT()&".KW!A1"))

was dem 3. Vorschlag von Suboptimierer ähnlich ist. Leider habe ich kein Excel 2013, und in Excel Online bringt das den Fehler #BEZUG! Dort gibt es keine Formelauswertung zur Fehleruntersuchung. Aber vielleicht kann jemand auf dieser Basis weiter recherchieren?

Ghanasoccer 16.01.2017, 16:14

Hier ist ein Excel2013 Nutzer.

=Blatt() würde bei mir 6 ausgeben. Du weißt bestimmt warum. Is halt das 6te Blatt aber die 3.KW

Hauptproblem ist die Matrixbildung...

0
hawking42 16.01.2017, 16:16

Die Idee ist schön schlank, jedoch würde ich von der Benutzung von Blatt() in diesem Fall abraten - Sorry DeeDee ;-)

BLATT() liefert dir die Nummer des Blattes 1 für das erste und 2 für das zweite. Das funktioniert nur, wenn 5.KW auch wirklich das 5. Blatt ist. Sobald du ein "Index" oder "Übersichtsblatt" anlegst, wirft das alles durcheinander. Das kann man natürlich mit einem Offset korrigieren "Blatt()-1", jedoch nicht, sobald du die Reihenfolgen der Wochen-Arbeitsblätter durcheinanderwirfst. Es wird sehr schwer - Fehler zu finden und zu korrigieren.

0

Was möchtest Du wissen?