Clever-Excel-Forum

Normale Version: Makro Formeln auf jedes Tabellenblatt kopieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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