Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro Formeln auf jedes Tabellenblatt kopieren
#1
Hallo!

Ich bin kompletter Neuling in Sachen Makros usw. Folgendes wäre für mich sehr hilfreich.

Ich habe eine Arbeitsmappe mit ungefähr 50 Tabellenblättern, jedes Blatt hat denselben Aufbau. Das erste Tabellenblatt fungiert als Vorlage, dort habe ich einen Sverweis aus einer anderen Excel-Mappe (A4:A39) eingerichtet (funktioniert einwandfrei). Suchkriterium ist jeweils die Zeile A1 in jedem Tabellenblatt - wenn ich also die Formel in die anderen Tabellenblätter kopiere, ändert sich das Suchkriterium und das richtige Ergebnis wird wiedergegeben. 

Das ist mein Makro für das Kopieren der Formeln in ein anderes Tabellenblatt:

Range("A4:A39").Select
    Selection.Copy
    Sheets("Tabelle1").Select
    Range("A4").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False



Kann ich hier etwas ändern und dann wendet er diesen Vorgang in allen Tabellenblättern an? Oder muss ich es komplett anders machen?

Es ist auch möglich, dass mit der Zeit Tabellenblätter wegfallen, bzw. neue dazukommen, auf die dieses Makro auch angewendet werden soll. 

Hoffe, es ist keine blöde Frage!

LG
Antworten Top
#2
Hallöchen,

im Prinzip so:

Code:
For Each Blaetter in Sheets()
  If Blaetter.Name <> ActiveSheet.Name Then
    Range("A4:A39").Copy
    Blaetter.Range("A4").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
  End If
Next

In der Schleife werden alle Blätter der Mappe durchgegangen. Wenn der Name unterschiedlich dem Namen des aktiven Blattes ist, werden die Formeln vom Bereich vom aktiven Blatt auf das Blaetter-Blatt kopiert

Du könntest aber auch mal das Erstellen der Formel aufzeichnen, dann brauchst DU nicht kopieren.

Das könnte so aussehen:

Code:
Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveCell.FormulaR1C1 = "=IF(COUNTIF(RC[-4]:R[2]C[-2],RC[-4])=3,RC[-4],"""")"
    Range("E2").Select
End Sub

und dann

Code:
For Each Blaetter in Sheets()
  If Blaetter.Name <> ActiveSheet.Name Then
    Range("A4:A39").FormulaR1C1 = "=IF(COUNTIF(RC[-4]:R[2]C[-2],RC[-4])=3,RC[-4],"""")"
  End If
Next

Du musst bei so was nur mit den Bezügen aufpassen. Die sind hier alle relativ. Benötigst Du die eine oder andere Stelle absolut, musst Du auch beim Erstellen dort die $ setzen.
Beim letzten Beispiel musst Du auch nicht unbedingt das aktive Blatt ausnehmen. Die Formel wird dann einfach mit der gleichen Formel überschrieben und Du hast zwei Zeilen Code weniger Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste