Excel Makro zum übernehmen von Wert aus vorherigem Tabellenblatt

tobi105

Mitglied
Hallo zusammen,

ich brauch ein Modul, das mir den Wert aus den Zellen Q5:Q25 aus dem jeweiligen
vorherigen Tabellenblatt (Arbeitsmappe mit 54 Blättern -> Daten, Vorlage, und KW 1-52)
in die Zellen B5:B25 des aktiven Tabellenblattes einträgt.

Ich hab bisher nichts gefunden das mir hilft, vllt könnt ihr mir ja helfen.

Danke schonmal
 

weer

Stammgast
Grüezi Tobi
Versuche es mal damit:

Code:
Sub kopieren()
asi = ActiveSheet.Index
nasi = Sheets(asi).Name
    If asi = 1 Then
        MsgBox "Zu " & nasi & " gibt es keine vorherige Tabelle!", _
            48, Environ("UserName")
        Exit Sub
    End If
asiv = ActiveSheet.Index - 1
nasiv = Sheets(asiv).Name

mgb = MsgBox("Daten werden kopiert von " & nasiv & " nach " & nasi & Chr(13) & _
    "Ist das ok?", 36, Environ("UserName"))
        If mgb = 7 Then Exit Sub    ' 7 = nein

Sheets(asiv).Select
Range("Q5:Q25").Copy
Sheets(asi).Select
Range("B5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
End Sub

Wenn Du das Makro in der aktiven Tabelle startest, kopiert es aus der Tabelle, die im Register vor der aktiven Tabelle steht, den Bereich Q5:Q25 und fügt ihn in der aktiven Tabelle in B5:B25 als Werte (also keine Formeln) ein.

Ich habe eine Bedingung eingefügt: Wenn die aktive Datei die allererste Tabelle Deiner Datei ist, gibt es keine "vorherige" Tabelle. Also bricht das Makro mit einer entsprechenden Meldung ab.

Weiter habe ich zur Kontrolle eine Meldung eingefügt (die 3 Zeilen mit mgb = ...): Falls Du eine falsche Tabelle aktiviert hast, kannst Du mit "Nein" alles abbrechen. - Diese 3 mgb-Zeilen kannst Du entfernen, wenn sie Dir nicht passen.

Ich hoffe, das hilft Dir. Niclaus
 

Gaby Salvisberg

Super-Moderator
Was spräche grundsätzlich gegen so etwas, wenn man immer aus dem jeweils vorhergehenden Blatt aus D2 die Werte übernehmen müsste?

=INDIREKT(TEXT(BLATT($A$1)-1;"00")&"!D2")

Die Blätter müssten damit natürlich auch genau "01" bis "99" (oder wieviele es dann halt sind) heissen. Und beim Runterkopieren der Formel innerhalb einer Spalte passt es blöderweise den hintersten Zellbezug (D2) nicht an [1]. Den müsste man im ersten Blatt noch von Hand korrigieren. Kopiert man das Tabellenblatt, braucht man es in den weiteren wenigstens nicht mehr von Hand anzupassen.

[1] Weiss hier jemand grad, wieso das so ist? Es sind ja dort keine $-Zeichen gesetzt.

[edit] Das Problem bei [1] dürfte sein, weil Excel diesen Zellbezug jetzt wie Text behandelt. Da bin ich nicht sicher, ob es einen Workaround gibt...

Liebe Grüsse
Gaby
 
Zuletzt bearbeitet:

weer

Stammgast
=INDIREKT(TEXT(BLATT($A$1)-1;"00")&"!D2")
Und beim Runterkopieren der Formel innerhalb einer Spalte passt es blöderweise den hintersten Zellbezug (D2) nicht an. Weiss hier jemand grad, wieso das so ist? Es sind ja dort keine $-Zeichen gesetzt.

Grüezi Gaby
Die Anführungszeichen in Deiner Formel haben die gleiche Wirkung wie die $-Zeichen. Die Formel passt sich an, wenn Du schreibst:
Code:
=INDIREKT(TEXT(BLATT($A$1)-1;"00")&"!" & D2)
Grüsse Niclaus
 

Gaby Salvisberg

Super-Moderator
Ach, genau! Das kann man ihm ja separat mitgeben. :D

[edit] Nö, doch nicht. Denn dann bezieht er sich ja aufs aktuelle Blatt. Und genau das wollen wir ja nicht.

Herzliche Grüsse
Gaby
 

Gaby Salvisberg

Super-Moderator
Salü Niclaus
So vielleicht?

Code:
=INDIREKT(TEXT(BLATT($A$1)-1;"00")&"!D" & ZEILE(D2))
Genau; so geht das.
Ich verstehe allerdings den Ausdruck "BLATT($A$1)" nicht. Ich arbeite mit Excel 2013.

Das ist die Funktion Blattnummer. Und die Zelle $A$1 ist einfach eine Zelle, damit die Funktion BLATT weiss, dass es von der Blattnummer des aktuellen Blatts ausgehen soll (zu dem logischerweise auch die erste Zelle dieses Blattes gehört).
[edit] Man kann die Klammer hinter BLATT auch leer lassen.

Davon ziehe ich eins ab und sage ihm, er soll das bitte zweistellig halten. Wenn die Tabellenblätter ebenfalls exakt 01, 02 usw. heissen und in der richtigen Reihenfolge stehen, dann funktioniert die Formel.

Herzliche Grüsse
Gaby
 
Zuletzt bearbeitet:

weer

Stammgast
BLATT(): Das ist die Funktion Blattnummer. Und die Zelle $A$1 ist einfach eine Zelle, damit die Funktion BLATT weiss, dass es von der Blattnummer des aktuellen Blatts ausgehen soll (zu dem logischerweise auch die erste Zelle dieses Blattes gehört).

Salü Gaby
Kaum hat die Sommerzeit begonnen, und schon habe ich wieder etwas gelernt! - Diese Funktion war mir bis heute nicht bekannt.
Grüsse Niclaus
 
Oben