Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
864to868
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
864to868
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

relativer Tabellenblattbezug

relativer Tabellenblattbezug
30.04.2007 10:49:54
Markus
Hallo Forum,
ich habe folgendes Problem:
Möchte z.B. eine Summe bilden in Mappe2.xls unter Bezug auf z.B. 3 Tabellenblätter in mappe1.xls (Namen: 100000, 200000, 300000), Zelle jeweils A1.
Die Formel wäre:
=SUMME('[Mappe1.xls]100000:300000'!$A$1)
Mein Problem ist, dass einerseits die Namen der Tabellenblätter immer andere sind und andererseits auch deren Anzahl sich ändert.
In jedem Fall brauche ich die Summe von A1 aus allen Tabellenblättern von mappe1.xls und zwar unabhängig von deren Namen und Anzahl.
Ich könnte in Mappe2.xls an beliebiger Stelle (z.B. B1 und B2) den Namen des ersten und letzten Tabellenblattes hinterlegen (Einlesen per VBA). Wie bekomme ich aber den Bezug in meine obige Formel?
mein Gedanke wäre in etwa
=summe('[Mappe1.xls]&b1&:&b2&'!$A$1)
oder so ähnlich.
Kann mir da jemand helfen.
Zur Not müsste ich eine eigene Funktion programmieren (z.B. summeall). Auch für wäre ich für Tipps dankbar.
Vielen Dank.
Markus

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

Betreff
Datum
Anwender
Anzeige
AW: relativer Tabellenblattbezug
30.04.2007 11:45:26
Jens
Hallo Markus
Bin mir da nicht so sicher, ob das mit ner Formel geht, mit VBA aber auf jeden Fall.
In VBA kannst Du die Tabellenblätter auch ohne deren Namen ansprechen.
Dann wird aus "Tabelle1" z.B. "Sheets(1)"
Sheets(1) ist dann immer das erste Tabellenblatt in Deiner Mappe, egal, wie das Tabellenblatt heißt.
Ob "Tabelle1" oder "10000" oder "irgendwas" ist dann nicht mehr relevant.
Gruß
Jens

AW: relativer Tabellenblattbezug
30.04.2007 12:09:00
Markus
Hallo Jens,
vielen Dank für deine schnelle Antwort und den Tipp mit VBA.
Die Funktion sheets(1) etc. kannte ich schon, weil ich auf diese Art und Weise auch den ersten und letzten (sheets.count in Variable einlesen) Tabellenblattnamen in die mappe2.xls einlesen wollte.
Meine ganze Programmierung zu erklären würde zu weit gehen, deshalb habe ich das vereinfachte Beispiel genannt. Die eigentliche Programmierung ist wesentlich umfangreicher.
Es wäre in meinem Fall wirklich sehr hilfreich, wenn ich den Bezug direkt in der Formel angeben könnte. Habe es natürlich auch selbst schon in allen möglichen Varianten versucht und hoffe darauf, dass ich vielleicht nur einen Syntaxfehler drin habe. Oder es ist doch nicht möglich.
Vielleicht gibt es ja noch andere Ideen.
Jens, an dich nochmal herzlichen Dank.
Grüße
Markus

Anzeige
AW: relativer Tabellenblattbezug
30.04.2007 12:59:14
Jens
Hallo Markus
Aber Du könntest eine Formel über VBA in eine beliebige Zelle schreiben, die dann z.B. im Sheet.activate - Ereignis ausgeführt wird.
z.B.:
Sheets(1).Cells(1, 1).FormulaR1C1 = "=SUM(" & Sheets(2).Name & "!R[-1]C[-1]+" & Sheets(3).Name & "!R[-1]C[-1])"
Wenn sich also die TB-Namen ändern, ändern sich die Bezüge nicht.
Nur als Denkanstoß.
Ich lass die Frage trotzdem mal auf offen, da ich nicht weiß, ob es evtl. doch mit Formeln funzen könnte.
MfG
Jens

AW: relativer Tabellenblattbezug
30.04.2007 15:08:00
Markus
Hallo Jens,
nochmals vielen Dank für deine Hilfe.
Mit deiner Formel bin ich leider etwas überfordert. Da hab ich doch zu wenig Excel-Wissen.
Ich denke, ich probier's mal mit dem Makro, das Daniel inzwischen geschickt hat oder evtl. mit einem Vorschlag aus einem anderen Forum (leeres Tabellenblatt am Anfang und Ende mit festem Namen einfügen, dann wären die gewünschten Tabellenblätter immer dazwischen).
Vielen herzlichen Dank nochmals.
Grüße
Markus

Anzeige
AW: relativer Tabellenblattbezug
30.04.2007 13:42:00
Daniel
Hallo
probier mal diese Funktion:

Function SummeX(Mappe As String, Bereich As String, Optional Blatt1 As String = "", Optional  _
Blatt2 As String = "")
Dim x As Long, y As Long, i As Long
Dim Summe As Double
Application.Volatile
On Error GoTo Fehler
With Workbooks(Mappe)
x = 1
If Blatt1  "" Then x = .Sheets(Blatt1).Index
y = .Sheets.Count
If Blatt2  "" Then y = .Sheets(Blatt2).Index
For i = x To y Step -2 * (x 


Parameter bei der Eingabe sind:
1. Name der Excel-Datei als String
2. der aufzusummierende Zellbereich als String
3. der Name des Blattes, bei dem mit der Aufsummierung begonnen werden soll
4. der Name des letzten Blattes
3 und 4 können weggelassen werden, dann werden alle Blätter der Arbeitsmappe aufsummiert
Beispiel:
=summex("Mappe1.xls";"A1:B2";"Tabelle2";"Tabelle4")
Gruß, Daniel

Anzeige
AW: relativer Tabellenblattbezug
30.04.2007 15:28:00
Markus
Hallo Daniel,
vielen Dank für deine Hilfe. Du hast dir ja echt Arbeit gemacht. Bin heute zum ersten Mal in einem Forum und habe wirklich nicht damit gerechnet, dass mir als Antwort komplette Makros präsentiert werden.
Mit meinem Halbwissen muss ich das aber erst mal umsetzen. Das mache ich auf jeden Fall, schon aus reinem Interesse.
Habe nämlich noch eine gute Idee aus einem anderen Forum erhalten (am Anfang und Ende jeweils ein festes Tabellenblatt mit festem Namen einfügen, damit sind die für die Berechnung nötigen Blätter immer dazwischen). Diese Idee könnte bei mir im Zweifel ausreichend und auch machbar sein.
In jedem Fall vielen herzlichen Dank, bin echt überwältigt von der Hilfsbereitschaft im Forum.
Grüße
Markus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige