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

Forumthread: VBA Formel nach unten ziehen

VBA Formel nach unten ziehen
05.03.2019 16:19:41
Chris
Hallo Zusammen,
Ich habe in den Spalten B3:DE3 Formeln die ich gerne per Makro automatisch bis in die letzte Zeile erweitern lassen möchte. Leider bin ich nicht gerade VBA erfahren und hänge jetzt schon seit längerem fest.
Folgendes konnte ich mir schon durch sämtliche Forum Recherchen erarbeiten.

Sub FormelErweitern()
ActiveSheet.Unprotect ""
'Formeln runterkopieren
Dim lngLetzte As Long
With ActiveSheet
'letzte Zeile auffinden:
lngLetzte = .UsedRange.Rows.Count + .UsedRange.Row - 1
'Formeln runterkopieren:
.Range(.Cells(3, 2), Cells(lngLetzte, 109)).Formula = .Range("myrange").Formula
'myrange =(B3:DE3)
End With
ActiveSheet.Protect ""
End Sub

Den Sinn erfüllt das ganze schon mal...
Jetzt das Problem: wenn als Bsp. in Zelle B3 schon ein Wert steht, überschreiben sich alle folgenden Zellen mit Formel und demselben Wert.
Ist es möglich das hier nur die Formel und nicht der Wert aus der obenstehenden Zelle übernommen wird?
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Formel nach unten ziehen
05.03.2019 17:03:50
Hajo_Zi
mit .Range("myrange").Formula wird nur die Fomel übernommen.
Ob das Range die Zelle B3 ist konnte ich nicht sehen, da ich nicht auf fremde Rechner schaue.

AW: VBA Formel nach unten ziehen
05.03.2019 17:12:24
Chris
Hallo Hajo,
danke für deine Antwort. Der Bereich "myrange" ist festgelegt als B3:DE3.
Wenn ich das Makro ausführe wird zwar die Formel übernommen aber der Wert, den ich z.B in Zelle B4 oder B5 stehen habe mit dem aus B3 überschrieben
Anzeige
AW: VBA Formel nach unten ziehen
05.03.2019 17:19:30
Hajo_Zi
eigentlich hatte ich schon geantwortet.
schreibe .Range("B3")
ich vermute eine Formel kannst Du nicht aus einem Bereich übertragen.
Gruß Hajo
AW: VBA Formel nach unten ziehen
06.03.2019 07:47:41
hary
Moin
Teste mal so.
Sub Formel_eintragen()
Dim lngLetzte As Long
Dim myrange As Range, zelle As Range
With ActiveSheet
Set myrange = .Range("B3:DE3")
lngLetzte = .UsedRange.Rows.Count + .UsedRange.Row - 1
For Each zelle In myrange.SpecialCells(xlCellTypeFormulas)
.Range(zelle, zelle.Offset(lngLetzte, 0)).FillDown
Next
End With
Set myrange = Nothing
End Sub

gruss hary
Anzeige
AW: VBA Formel nach unten ziehen
06.03.2019 09:58:28
Chris
Hallo Hary,
so klappt es. Vielen Dank für eure Unterstützung.
Grüße
Chris
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Formel nach unten ziehen


Schritt-für-Schritt-Anleitung

Um eine Excel Formel bis ans Ende zu ziehen oder eine Excel Funktion bis ans Ende zu ziehen, kannst du das folgende VBA-Makro verwenden. Dieses Makro kopiert die Formeln aus einem bestimmten Bereich in die letzte Zeile deiner Tabelle.

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen -> Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub FormelErweitern()
    ActiveSheet.Unprotect ""
    'Formeln runterkopieren
    Dim lngLetzte As Long
    With ActiveSheet
        'letzte Zeile auffinden:
        lngLetzte = .UsedRange.Rows.Count + .UsedRange.Row - 1
        'Formeln runterkopieren:
        .Range(.Cells(3, 2), Cells(lngLetzte, 109)).Formula = .Range("myrange").Formula
        'myrange =(B3:DE3)
    End With
    ActiveSheet.Protect ""
End Sub
  1. Stelle sicher, dass der Bereich myrange korrekt definiert ist (z.B. B3:DE3).
  2. Führe das Makro aus, um die Formeln in die letzte Zeile zu kopieren.

Häufige Fehler und Lösungen

Ein häufiges Problem beim Excel VBA Formel in Zelle schreiben und nach unten kopieren ist, dass bestehende Werte in den nachfolgenden Zellen überschrieben werden. Um dies zu vermeiden, kannst du den Bereich der Zellen anpassen, die du nach unten ziehen möchtest.

Problem: Die Werte in Zellen unterhalb der Formel werden überschrieben.

Lösung: Verwende diesen angepassten Code, um nur die Formeln zu kopieren:

Sub Formel_eintragen()
    Dim lngLetzte As Long
    Dim myrange As Range, zelle As Range
    With ActiveSheet
        Set myrange = .Range("B3:DE3")
        lngLetzte = .UsedRange.Rows.Count + .UsedRange.Row - 1
        For Each zelle In myrange.SpecialCells(xlCellTypeFormulas)
            .Range(zelle, zelle.Offset(lngLetzte, 0)).FillDown
        Next
    End With
    Set myrange = Nothing
End Sub

Alternative Methoden

Neben VBA gibt es auch alternative Methoden, um Formeln in Excel zu kopieren:

  • Drag-and-Drop: Du kannst die Zelle mit der Formel manuell auswählen und das kleine Quadrat in der unteren rechten Ecke der Zelle nach unten ziehen, um die Formel zu kopieren.
  • Kopieren und Einfügen: Kopiere die Zelle mit der Formel (Strg + C) und füge sie in den gewünschten Bereich ein (Strg + V). Achte darauf, dass du die Option "Formeln einfügen" wählst.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du eine Excel Formel bis zum Ende ziehen kannst:

  1. Wenn du eine Summe von Zellen in Spalte A bis zur letzten Zeile in Spalte B ziehen möchtest, könntest du die Formel in B1 so definieren: =SUM(A1:A10). Ziehe sie dann nach unten, um die Summe für die anderen Zeilen zu erhalten.

  2. Bei einer Berechnung, die eine konstante Zelle referenziert, kannst du die Formel ebenfalls nach unten ziehen, um die Berechnung für jeden Datensatz anzuwenden.


Tipps für Profis

  • Nutze die Funktion FillDown, um Formeln effizient in einer großen Anzahl von Zellen zu kopieren.
  • Experimentiere mit der Offset-Methode, um präzise zu steuern, wo die Formeln eingefügt werden.
  • Schütze dein Arbeitsblatt, nachdem du die Formeln kopiert hast, um versehentliche Änderungen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur die Formeln und nicht die Werte kopiert werden?
Nutze die Methode FillDown in einer Schleife, um sicherzustellen, dass nur die Formeln aus dem ursprünglichen Bereich übernommen werden.

2. Kann ich mehrere Bereiche gleichzeitig nach unten ziehen?
Ja, du kannst mehrere Bereiche in einer Schleife durchlaufen und die FillDown-Methode für jeden Bereich anwenden.

3. Welche Excel-Version benötige ich für die Nutzung von VBA?
VBA ist in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

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