Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formel per Makro nach unten kopieren

Formel per Makro nach unten kopieren
07.03.2007 09:05:28
Melanie
Hallo Excelprofis,
ich habe folgendes VBA-Problem. Ich will per Makro eine Formel in der Spalte D kopieren. Per Hand mache ich das, indem ich auf die rechte untere Ecke der Zelle, die die Formel enthält doppelklicke, d.h. die Formel wird automatisch bis zur untersten benachbarten, befüllten Zelle kopiert.
Wie kann ich das in VBA ausdrücken? Wenn ich versuche das mit dem Makrorecorder aufzuzeichnen, dann schreibt er mir einen fixen Zellbezug.
Danke im Voraus für eure Hilfe!
Grüße, Melanie
PS: Ich will die Formel nicht nur eine Zeile nach unten kopieren, sondern so weit runter wie in der benachbarten Spalte Werte entahlten sind. Ich hoffe, dass es verständlich geworden ist...
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel per Makro nach unten kopieren
07.03.2007 09:20:21
marcl
Hallo Mellanie,
versuch mal das.Du liest aus einer befüllten Spalte die letzte volle Zelle aus und nimmst die Variable für die Formel.
Sub Makro1()
Columns("A:A").Select ' Spalte mit Deinen Werten
zahl = Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Offset(-1, 0).Row ' sucht die letzte nichtfreie Zelle
Range("B1").AutoFill Destination:=Range("B1:B" & zahl) ' füllt die Formeln
End Sub

Gruß
marcl
Anzeige
AW: Formel per Makro nach unten kopieren
07.03.2007 09:21:29
Jürgen
Hi Melanie
Vorausgesetzt die Spalte mit den Werten befindet sich rechts neben der Spalte in die die Formel
kopiert werden soll:
Application.ScreenUpdating = False
Selection.Copy
Do Until ActiveCell.Offset(0, 1).Value = Empty
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
Wenn sie sich links davon befindet ersetze
Do Until ActiveCell.Offset(0, 1).Value = Empty
durch
Do Until ActiveCell.Offset(0, -1).Value = Empty
Gruß, Jürgen
Anzeige
Danke!!!
07.03.2007 13:29:00
Melanie
Vielan Dank, hat bestens geklappt!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Formel per Makro nach unten kopieren in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic-Editor:

    • Drücke ALT + F11, um den Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke im Projektfenster mit der rechten Maustaste auf VBAProject (DeineArbeitsmappe), wähle Einfügen und dann Modul.
  3. Füge den folgenden Code ein:

    Sub Makro1()
       ' Spalte mit Deinen Werten
       Columns("A:A").Select 
       ' Sucht die letzte nichtfreie Zelle und speichert die Zeilennummer
       zahl = Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
       :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
       False, SearchFormat:=False).Offset(-1, 0).Row 
       ' Füllt die Formeln bis zur letzten Zeile
       Range("B1").AutoFill Destination:=Range("B1:B" & zahl) 
    End Sub
  4. Anpassen der Zellen:

    • Stelle sicher, dass die Zelle B1 die Formel enthält, die Du nach unten kopieren möchtest.
  5. Führe das Makro aus:

    • Drücke F5 oder wähle Ausführen > Sub/UserForm ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004: Die Methode 'AutoFill' für das Objekt 'Range' ist fehlgeschlagen."

    • Lösung: Überprüfe, ob die Zielzelle (z.B. B1) die Formel enthält. Stelle sicher, dass die Quelle in Spalte A Werte hat.
  • Fehler: "Die Methode 'Find' hat kein Ergebnis zurückgegeben."

    • Lösung: Stelle sicher, dass die Spalte, die Du untersuchst, tatsächlich Werte enthält und nicht leer ist.

Alternative Methoden

Eine andere Methode, um eine Formel nach unten zu kopieren, ist die Verwendung einer Schleife. Hier ist ein Beispiel:

Sub FormelNachUntenKopieren()
    Application.ScreenUpdating = False
    Selection.Copy
    Do Until ActiveCell.Offset(0, 1).Value = Empty
        ActiveSheet.Paste
        ActiveCell.Offset(1, 0).Select
    Loop
    Application.ScreenUpdating = True
End Sub

Diese Methode ist nützlich, wenn Du die Formel manuell kopieren möchtest, ohne die AutoFill-Funktion zu verwenden.


Praktische Beispiele

  • Beispiel 1: Du hast in Spalte A die Werte 1 bis 10 und möchtest die Formel =A1*2 in Spalte B anwenden.
  • Beispiel 2: Wenn Du =SUM(A1:A10) in B1 hast und diese Formel für mehrere Zeilen nach unten kopieren möchtest.

In jedem Fall kannst Du die Methoden entsprechend anpassen, um die gewünschte Formel in der entsprechenden Zelle zu verwenden.


Tipps für Profis

  • Nutze die Application.ScreenUpdating = False-Anweisung, um die Bildschirmaktualisierung während der Makroausführung zu deaktivieren. Dies verbessert die Leistung.
  • Achte darauf, die richtigen Zellreferenzen zu verwenden, insbesondere wenn Du mit relativen und absoluten Bezügen arbeitest.
  • Speichere Deine Arbeit regelmäßig und teste das Makro zuerst in einer Kopie Deiner Datei, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Formel auch in leere Zellen kopiert wird?
Du kannst eine If-Bedingung hinzufügen, um zu überprüfen, ob die Zelle leer ist, und dann die Formel dort einfügen.

2. Funktioniert das auch in Excel 365?
Ja, die oben genannten Methoden und Skripte funktionieren in Excel 365 sowie in anderen Versionen von Excel, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige