Kann man bei Exel automatisch auf eine bestimmtes Feld des vorherigen Tabellenblatts zugreifen ohne es direkt zu benennnen?

6 Antworten

Das ist nicht so einfach möglich, da Excel immer einen Bezug benötigt. Du kannst zwar sagen =Tabelle1!$A$17 Du must Excel sagen wie das Tabellenblatt heißt auf das du zugreifen möchtest.

Ich habe das so gelöst, das ich ein Blatt pro Monat habe und die Formel dann einfach Kopiert habe. Auf dem Ersten Blatt habe ich eine Jahresübersicht die auf jedes Tabellenbaltt(Monat) zugreift.

Versuch die Zellen in den Formeln mit $ zu fixieren (Bsp. $A$1) oder verwende die Funktion INDIREKT.

kalio 
Fragesteller
 14.09.2016, 14:00

Tut mir leid, aber das verstehe ich nicht. Könntest du mal eine genaue Formel aufschreiben für "Ich bin A17 aus dem vorherigen Tabellenblatt", natürlich ohne das ich das Tabellenblatt konkret benennen muss.

0
kalio 
Fragesteller
 14.09.2016, 14:05
@Suboptimierer

Für mich sieht das so aus als müsste ich da den Namen des Tabellenblatts einfügen, aber genau das soll ja nicht sein, sondern es soll das vorherige Tabellenblatt sein, egal wie es gerade heißt.

0
Suboptimierer  14.09.2016, 14:19
@kalio

Dafür würde ich empfehlen, ein Makro anzulegen.

Function PrevSheet()
  If ActiveSheet.Index = 1 Then
    PrevSheet = ActiveSheet.Name
  Else
    PrevSheet = Sheets(ActiveSheet.Index - 1).Name
  End If
End Function

Auf A1 des Vorblatts kannst du dann wie folgt zugreifen: 

=INDIREKT(prevsheet() & "!A1")
1
kalio 
Fragesteller
 14.09.2016, 15:32
@Suboptimierer

hab das jetzt versucht, aber die Formel funktioniert nicht. Muss ich außer A1 noch irgendwas verändern bzw dazu schreiben. Soll ich in die Klammer nach PrevSheet etwas reinschreiben?


0
Suboptimierer  14.09.2016, 15:38
@kalio

Was bekommst du denn für eine Fehlermeldung?
Was genau hast du versucht?

0
kalio 
Fragesteller
 14.09.2016, 15:51
@Suboptimierer

ich habe unter Entwicklertools ein Makro angelegt wo komplett genau das drinsteht wie im oberen blauen Feld aus Ihrem Kommentar. In das Feld wo der Wert C5 der letzten Woche rein soll, hab ich diese Formel mit "indirekt" rein und nur A1 durch C5 ersetzt. Und ich habe die Makros aktiviert.

0
Suboptimierer  14.09.2016, 15:52
@kalio

Und welche Fehlermeldung bekommst du?
Kannst du testhalber die Datei mal als .xlsm-Datei speichern?

0
Suboptimierer  14.09.2016, 15:58
@kalio

Die Funktion scheint nicht erkannt zu werden. Zeichne mal ein Testmakro auf, in dem du irgendeine Dummyaktion durchführst (beispielsweise Zellbereich auswählen).

Dort wo das Makro erzeugt wird, kopierst du den Quelltext von oben hinein. 

Wenn es dann noch nicht läuft, überprüfst du die Makro-Sicherheit

Entwicklertools → Code → Makrosicherh. und achtest nochmal darauf, die Datei als .xlsm gespeichert zu haben und zwar nicht im Netzwerk oder auf einem austauschbaren Datenträger und in keinem Systemverzeichnis.

0
kalio 
Fragesteller
 14.09.2016, 15:58
@kalio

ist das die Exel-Arbeitsmappe mit Makros?

1
kalio 
Fragesteller
 14.09.2016, 16:01
@kalio

ich glaub, das ist mir zu hoch, ich hab keine Ahnung von Makros und programmieren, schade aber trotzdem Danke für die Hilfe

0
Suboptimierer  14.09.2016, 16:19
@kalio

Kannst du nicht auf jedem Tabellenblatt einfach den Namen des Vorblatts irgendwo hin schreiben? 

Wenn du das z. B. in A1 schreibst, dann kannst du auf C5 des Vorblatts mit INDIREKT(A1 & "!" & C5) zugreifen.

Ich meine, musst du das Vorblatt unbedingt dynamisch ermitteln?

0
Ninombre  14.09.2016, 16:56
@kalio

Dranbleiben, nicht so schnell hinwerfen...

Wo genau hast Du den Code für die function hinterlegt? Aus meiner Sicht muss er in ein Modul, nicht zu einem Tabellenblatt abgelegt werden.

Also im VBA Editor (nicht auf Makros, sondern Visual Basic klicken)
mit der rechten Maustaste > Einfügen > Modul

Dann darauf achten, dass nicht
sub
end sub

sondern: Function da steht.

1
Suboptimierer  14.09.2016, 17:01
@Ninombre

Ja genau, die Funktion gehört in ein Modul unter dem VBA-Projekt in den Ordner "Module".

Der einfachste Weg, diese Struktur anzulegen ist, ein Makro aufzuzeichnen. An genau diese Stelle kann man dann den Code von oben kopieren.

0

Die Eigenschaft mit "vorheriges Datenblatt" geht nur mit einer Nummerierung in der Bezeichnung der Tabellenblätter, zumindest kenne ich sonst nur VBA Lösungen. -> s. Lösung von Suboptimierer

Wenn die Tabellenblätter Woche1, Woche 2 etc. heißen, sollten sie, wie von Oubyi schon angesprochen, am besten in Woche01, Woche02 umbenannt werden. Dann kann man einfach die letzten beiden Stelle des vollständigen Dateinamens abgreifen und -1 rechnen

=RECHTS(ZELLE("dateiname");2)-1


kann man dann bspw. so einbauen, um den Wert aus A1 des vorherigen Woche abzufragen:
=INDIREKT("Woche"&RECHTS(ZELLE("dateiname");2)-1&"!A1";WAHR)

Zwischen 1 und 2stelligen Zahlen zu unterscheiden wird fummelig

=INDIREKT("Woche"&WENN(ISTZAHL(RECHTS(ZELLE("dateiname");2)*1);RECHTS(ZELLE("dateiname");2);RECHTS(ZELLE("dateiname");1))-1&"!A1";WAHR)

Kurze Erläuterung:
wenn die zwei Stellen von rechts eine Zahl darstellen (Woche11) kann man diesen Wert verwenden, ansonsten nur eine Stelle von rechts.
Die Prüfung erfolgt mit ISTZAHL. Die Multiplikation mit *1 ist anscheinend notwendig (zumindest bei mir), weil Excel einen Teil einer anderen Zelle (rechts) sonst als Text interpretiert.

Die Tabellenblätter heißen z.B. 19.09.-23.09.16 Sie haben also ein Datum, sonst finde ich mich ja nicht mehr zurecht.

Wie heißen den die Tabellenblätter genau?
Woche17, Woche18 usw.?
Mit führenden Nullen (Woche01)(wäre besser)?
Dann wüsste ich eine Möglichkeit automatisch von Woche18 auf Woche17 zu verweisen.
Also sag mir genau wie das aufgebaut ist.
Ich kann mich allerdings erst morgen früh wieder melden, muss jetzt weg.

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)
Oubyi, UserMod Light  14.09.2016, 15:03

P.S.: Konnte nochmal kurz 'reinschauen.
@Ninombre (DH!) hat meinen angedachten Lösungsweg schon sehr gut umgesetzt und erklärt.

1