Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro-Formel/Format für bestimmte Zellen nach unten kopieren

Forumthread: Makro-Formel/Format für bestimmte Zellen nach unten kopieren

Makro-Formel/Format für bestimmte Zellen nach unten kopieren
17.08.2024 14:05:02
Ashley
Hallo zusammen,

ich möchte gerne die Formel und das Format in den Zellen K12 bis DB12 per Makro bis zum Tabellenende nach unten kopieren, jedoch nur wenn in Spalte I "Projected Inventory" steht. Könnt ihr mir hierzu weiterhelfen?

Unter dem folgenden Link findet ihr die Beispieldatei: https://www.herber.de/bbs/user/171665.xlsx
Die Anzahl der Zeilen sind jedoch von Datei zu Datei unterschiedlich.

Ich hatte es schon mit dem folgenden Code ausprobiert, allerdings übernimmt es mir in jeder zweiten Zeile die Formel nicht richtig:
Sub test()

Range("K12").Select
ActiveCell.FormulaR1C1 = "=RC[-1]-R[-3]C+R[-2]C"
Range("K12").Select
Selection.AutoFill Destination:=Range("K12:DB12"), Type:=xlFillDefault
Range("K12:DB12").Select

ActiveSheet.Range("$I$1:$I$849").AutoFilter Field:=1, Criteria1:= _
"Projected Inventory"
Range("K12:DB12" & Cells(Rows.Count, 9).End(xlUp).Row).FormulaR1C1 = Range("K12:DB12").FormulaR1C1
ActiveSheet.ShowAllData

End Sub


Viele Grüße
Ashley
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro-Formel/Format für bestimmte Zellen nach unten kopieren
17.08.2024 15:12:44
BoskoBiati2
Hi,

das ist jetzt schon das zweite Forum, in welchem Du Deine Datei einstellst!
https://www.clever-excel-forum.de/Thread-Excel-Makro-Formel-fuer-mehrere-Spalten-nach-unten-kopieren-Fehler
Hier mal ein geändertes Makro:

Sub test()

ActiveSheet.Range("$I$1:$I$849").AutoFilter Field:=1, Criteria1:= _
"Projected Inventory"
Range("K12:DB" & Cells(Rows.Count, 9).End(xlUp).Row).FormulaR1C1 = "=RC[-1]-R[-3]C+R[-2]C"
ActiveSheet.ShowAllData

End Sub

Gruß

Edgar
Anzeige
AW: Makro-Formel/Format für bestimmte Zellen nach unten kopieren
17.08.2024 16:07:56
Ashley
Hallo Edgar,

vielen Dank für deine Hilfe!
Korrigierter Code funktioniert nun einwandfrei :)
Funktioniert das ganze auch mit dem runterkopieren der bedingten Formatierung in Zelle J12 bis DB12 oder muss man dies dann anders lösen?

Viele Grüße
Ashley
AW: Makro-Formel/Format für bestimmte Zellen nach unten kopieren
17.08.2024 16:51:19
BoskoBiati2
Hi,

Deine bedingten Formatierungen sind suboptimal. Die solltest Du alle löschen und umsteigen auf bedF mit Formeln. Als Beispiel:

=(Rest(Zeile();8)=4)*(J120) anzuwenden auf J12:DB92
=(Rest(Zeile();8)=4)*(J12$G9) anzuwenden auf J12:DB92

Gruß

Edgar
Anzeige
AW: Makro-Formel/Format für bestimmte Zellen nach unten kopieren
17.08.2024 17:07:11
BoskoBiati2
Hi,

hier mal am Bild, wie das aussehen könnte:

Userbild

Gruß

Edgar
AW: Makro-Formel/Format für bestimmte Zellen nach unten kopieren
18.08.2024 10:20:23
Ashley
Hallo Edgar,

vielen Dank für den Tipp!
Wofür steht die 4 in der Formel?

=(Rest(Zeile();8)=4)*(J120)

Viele Grüße
Ashley
Anzeige
AW: Makro-Formel/Format für bestimmte Zellen nach unten kopieren
18.08.2024 10:30:05
BoskoBiati2
Hi,

trag den ersten Teil der Formel mal in ein leeres Blatt ein und ziehe sie nach unten, dann siehst Du, was sie macht.

Gruß

Edgar
AW: Makro-Formel/Format für bestimmte Zellen nach unten kopieren
17.08.2024 15:29:18
Christian
Hallo Ashley,

meinst du sowas?

Sub test()

Dim lastRow As Long
Dim currentRow As Long
Dim sourceRange As Range
Dim destinationRange As Range

' Letzte Zeile in Spalte I ermitteln
lastRow = Cells(Rows.Count, "I").End(xlUp).Row

' Ausgangsbereich für die Formeln und Formate (K12:DB12)
Set sourceRange = Range("K12:DB12")

' Schleife durch alle Zeilen ab Zeile 12 bis zur letzten Zeile
For currentRow = 12 To lastRow
' Überprüfen, ob in Spalte I "Projected Inventory" steht
If Cells(currentRow, "I").Value = "Projected Inventory" Then
' Zielbereich für die aktuelle Zeile festlegen
Set destinationRange = Range("K" & currentRow & ":DB" & currentRow)
' Formeln und Formate kopieren
sourceRange.Copy
destinationRange.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
End If
Next currentRow

' Kopiermodus deaktivieren
Application.CutCopyMode = False
End Sub


Gruß
Christian
Anzeige
Falls du lieber die Formel ins Makro schreiben willst, dann
17.08.2024 15:39:15
Christian
Sub Test()

Dim lastRow As Long
Dim currentRow As Long
Dim formulaRange As Range
Dim col As Long

' Letzte Zeile in Spalte I ermitteln
lastRow = Cells(Rows.Count, "I").End(xlUp).Row

' Schleife durch alle Zeilen ab Zeile 12 bis zur letzten Zeile
For currentRow = 12 To lastRow
' Überprüfen, ob in Spalte I "Projected Inventory" steht
If Cells(currentRow, "I").Value = "Projected Inventory" Then
' Schleife durch die Spalten K bis DB
For col = 11 To 105 ' K=11, DB=105
' Formel in jede Zelle eintragen
Cells(currentRow, col).FormulaR1C1 = "=RC[-1]-R[-3]C+R[-2]C"
Next col
End If
Next currentRow
End Sub
Anzeige
@Christian
17.08.2024 15:56:50
RPP63
Moin!
Wie man eine Formel korrekt in einen Bereich schreibt, hat @BoskoBiati gezeigt.
Einzelne Zellmanipulationen mittels Schleife ist das Langsamste, was man VBA antuen kann!

Gruß Ralf
AW: @Christian
17.08.2024 15:58:47
Christian
Hallo Ralf,

danke für den Hinweis, du hast vollkommen recht.

Christian
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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