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

Forumthread: Formel mit VBA nach unten ziehen

Formel mit VBA nach unten ziehen
04.06.2013 11:03:09
Werner
Hallo zusammen,
Die Daten aus den Spalten A & B werden aus einer anderen Datei Kopiert und eingefügt, dass klappt auch.
in die Zelle C1 wird eine Formel geschrieben und in der Spalte A wird ermittelt, wie viele Zellen beschrieben sind.
Das geht auch noch. Die Variable laR ist gefüllt aber die Formel wird nicht runterkopiert bis zur letzten beschriebenen Zelle in Spalte A.
Sheets("Datenbasis").Range("C1").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
Dim laR As Long
laR = Cells(Rows.Count, 1).End(xlUp).Row 'Spalte "A" = 1
Range("C1:C1").AutoFill Destination:=Range("C1:C" & laR)
https://www.herber.de/bbs/user/85641.xlsm
Gruß Werner

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel mit VBA nach unten ziehen
04.06.2013 11:15:52
Tino
Hallo,
füge die Formel kleich in allen Zellen ein.
Dim lngRow&
With Sheets("Datenbasis")
lngRow = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("C1:C" & lngRow).FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
End With
Gruß Tino

Anzeige
AW: Formel mit VBA nach unten ziehen
04.06.2013 11:15:54
Rudi
Hallo,
ohne AutoFill. Direkt eintragen.
Dim laR As Long
With Sheets("Datenbasis")
laR = .Cells(Rows.Count, 1).End(xlUp).Row 'Spalte "A" = 1
.Range("C1").resize(laR-1).FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
End With

Gruß
Rudi

Anzeige
AW: Formel mit VBA nach unten ziehen
04.06.2013 11:19:42
Klaus
Hi Werner,
du referenzierst nicht ausreichend, die verschiedenen Programmteile laufen in verschiedenen Arbeitsblättern ab und das gibt Chaos.
Hier mal dein Programm mit sauberer WITH-Referenzierung, beachte die .Punkte vor jedem Range die auf sich je auf das WITH-Blatt beziehen:

With Sheets("Datenbasis")
.Activate
.Range("C1").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
Dim laR As Long
laR = .Cells(.Rows.Count, 1).End(xlUp).Row  'Spalte "A" = 1
.Range("C1:C1").AutoFill Destination:=.Range("C1:C" & laR)
End With
übrigens: das Formel schreiben, kopieren, ausfüllen ist im Makro unnötig. Aktivieren und Selektieren sowieso!
Schreibe die Formel einfach direkt in alle benötigten Zellen:
    With Sheets("Datenbasis")
Dim laR As Long
laR = .Cells(.Rows.Count, 1).End(xlUp).Row  'Spalte "A" = 1
.Range("C1:C" & laR).FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
End With
Grüße,
Klaus M.vdT.

Anzeige
AW: Formel mit VBA nach unten ziehen
04.06.2013 11:37:30
Werner
Hallo Tino, Rudi & Klaus,
danke für Eure Hilfe das runterkopieren klappt.
Die Formel direkt in die benötigte Zelle schreiben, geht das so? oder kann man dass auch andes schreiben.
Sheets("Datenbasis").Range("C1").FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
Gruß Werner

Anzeige
AW: Formel mit VBA nach unten ziehen
04.06.2013 11:40:10
Klaus
Hallo Werner
Die Formel direkt in die benötigte Zelle schreiben, geht das so? oder kann man dass auch andes schreiben.
dafür haben WIR ALLE doch bereits Beispiele geliefert!
Es geht so:
Sheets("Datenbasis").Range("C1:C" & var).FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
var ist natürlich eine Variable, in der zB die letzte Zeile steht. Beispiele: siehe vorherige Posts :-)
Grüße,
Klaus M.vdT.

Anzeige
AW: Formel mit VBA nach unten ziehen
04.06.2013 11:47:00
Werner
Hallo Klaus,
klappt auch danke
Gruß Werner

Danke für die Rückmeldung! owT.
04.06.2013 11:55:23
Klaus
.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Formeln nach unten ziehen


Schritt-für-Schritt-Anleitung

  1. Daten vorbereiten: Stelle sicher, dass die Spalten A und B in deinem Arbeitsblatt "Datenbasis" die erforderlichen Daten enthalten.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle Einfügen > Modul.

  4. Code einfügen: Füge folgenden Code in das Modul ein, um die Formel in die Zellen zu schreiben:

    Sub FormelNachUntenZiehen()
       Dim laR As Long
       With Sheets("Datenbasis")
           laR = .Cells(.Rows.Count, 1).End(xlUp).Row ' Bestimmung der letzten Zeile in Spalte A
           .Range("C1:C" & laR).FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")" ' Formel eintragen
       End With
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle FormelNachUntenZiehen und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: Formel wird nicht übernommen
    Lösung: Stelle sicher, dass die Referenzen korrekt sind. Verwende die .FormulaR1C1-Methode, um die Formel ordnungsgemäß einzufügen.

  • Fehler: Die letzte Zeile wird nicht richtig erkannt
    Lösung: Überprüfe, ob in Spalte A tatsächlich Daten vorhanden sind. Der Code laR = .Cells(.Rows.Count, 1).End(xlUp).Row sucht nach der letzten nicht-leeren Zelle in dieser Spalte.


Alternative Methoden

  • Direktes Eintragen ohne AutoFill: Du kannst die Formel direkt in die Zellen eintragen, ohne die AutoFill-Methode zu verwenden. Verwende dazu folgende Zeile:

    .Range("C1").Resize(laR - 1).FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
  • Mit einer Schleife: Eine andere Möglichkeit besteht darin, eine Schleife zu verwenden, um die Formel in jede Zelle einzufügen:

    Dim i As Long
    For i = 1 To laR
       .Cells(i, 3).FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
    Next i

Praktische Beispiele

  1. Formel für Spalte C: Wenn du die Formel in Spalte C eintragen möchtest, kannst du dazu den folgenden Code verwenden:

    Sub FormelBisUntenZiehen()
       Dim laR As Long
       With Sheets("Datenbasis")
           laR = .Cells(.Rows.Count, 1).End(xlUp).Row
           .Range("C1:C" & laR).FormulaR1C1 = "=IF(RC[-2]=""werner"",RC[-1],"""")"
       End With
    End Sub
  2. Formel für unterschiedliche Bedingungen: Ändere die Bedingung in der Formel, um verschiedene Daten zu verarbeiten. Zum Beispiel:

    .Range("C1:C" & laR).FormulaR1C1 = "=IF(RC[-2]=""max"",RC[-1],"""")"

Tipps für Profis

  • Verwendung von Variablen: Nutze Variablen wie laR, um die letzte Zeile dynamisch zu bestimmen und die Formel effizient einzufügen.

  • Optimierung der Performance: Deaktiviere Bildschirmaktualisierungen und Berechnungen während der Ausführung des Makros, um die Performance zu verbessern:

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    ' Dein Code hier
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich die Formel anpassen?
Du kannst die Formel in der Zeile, in der sie eingetragen wird, leicht ändern, indem du die Bedingungen anpasst.

2. Welche Excel-Version wird benötigt?
Der Code funktioniert ab Excel 2007 und höher, solange die VBA-Funktionalität unterstützt wird.

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