Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formel kopieren über Schleife?

Formel kopieren über Schleife?
07.12.2017 11:39:12
snewi133
Hallo,
ich benutze folgenden VBA Code um eine Formel aus einer Zelle in einen Bereich zu kopieren:

Sheets("Daten").Range("JA3:JA50000").FormulaR1C1 = Sheets("Daten").Range("JA1").FormulaR1C1

Nun möchte ich auch in JB1 und weitere 30 Spalten das selbe machen! Ich will aber nicht unbedingt 30 mal für jede Spalte neu das definieren! Gibt es da ne Möglichkeit zb über eine Schleife oder so?
LG

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel kopieren über Schleife?
07.12.2017 12:02:18
Burak
entweder machst du das über macrorecorder per markieren, drag and drop
oder über eine variable für die Spalte
Dim spalte As Integer
for spalte = 1 to 30
...
... cells(spalte & "3:" & spalte "5000")
...
Next spalte
Da ich nicht so versiert bin, dient das hier als denkanstoß
ohne Schleife
07.12.2017 12:16:25
Rudi
Hallo,
Sheets("Daten").Range("JA3:JA50000").Resize(,30).FormulaR1C1 = Sheets("Daten").Range("JA1").Resize(,30).FormulaR1C1
Gruß
Rudi
AW: ohne Schleife
07.12.2017 12:55:25
snewi133
Hallo, dass über die Formel ist gut aber, ich will ja nicht immer die Formel aus JA1 sondern dann natürlich für jede Spalte neu aus JA2 , JA3 usw! Wie geht das dann?
Gruss
Anzeige
AW: ohne Schleife
07.12.2017 13:01:39
Rudi
Hallo,
natürlich für jede Spalte neu aus JA2 , JA3 usw!
meinst du nicht JB1, JC1 usw.?
Gruß
Rudi
AW: ohne Schleife
07.12.2017 13:19:17
snewi133
ja klar hast recht :-)
das macht mein Code. owT
07.12.2017 14:53:57
Rudi
AW: das macht mein Code. owT
07.12.2017 15:09:06
Snewi
Also wenn in JA1 eine Formel steht die nach unten kopiert wird und in JB1 eine andere Formel dann bleibt dies dort stehen und wird nicht überschrieben von JA1?
Dann wäre es so wie ich es will! Es stehen nämlich in alle. köpfen unterschiedliche Formeln die nicht überschrieben werden dürfen!
Danke und LG
AW: das macht mein Code. owT
07.12.2017 15:20:23
Rudi
Hallo,
muss anders.
Sheets("Daten").Range("JA1").Resize(,30).Copy Sheets("Daten").Range("JA3:JA50000")
Gruß
Rudi
Anzeige
das macht schon dein erster code
07.12.2017 15:45:35
Daniel
Hi Rudi
prinzipell sollte schon dein erster Code das gewünschte machen.
Da der Quellbereich genauso viele Spalten umfasst wie der Zielbereich, wird die Formel aus der jeweiligen Spalte kopiert.
Sheets("Daten").Range("JA3:JA50000").Resize(,30).FormulaR1C1 = Sheets("Daten").Range("JA1").Resize(,30).FormulaR1C1
Gruß Daniel
AW: das macht schon dein erster code
07.12.2017 21:29:17
Rudi
Hallo Daniel,
blöderweise nicht.
Durch den Versatz von Zeile 1 nach Zeile 3 gerät einiges durcheinander. Den Effekt hatte ich schon mal, aber wieder vergessen.
Ganz simpel:
A1: =Zeile(a1)
nach B1:J1 kopieren.
Range("a3").Resize(10,10).FormulaR1C1=Range("a1").Resize(,10).FormulaR1C1

ergibt in A dann =Zeile(A3), =Zeile(A5) etc.
Range("a3").Resize(,10).Copy Range("a3").Resize(10)

hingegen macht alles richtig.
Gruß
Rudi
Anzeige
AW: das macht mein Code. owT
07.12.2017 15:48:36
snewi133
Ok so passt es! Jetzt möchte ich aber nur die Formeln kopieren und keine Formatierung oder sonstiges!
LG
AW: das macht mein Code. owT
07.12.2017 16:14:01
Werner
Hallo,
Sheets("Daten").Range("JA1").Resize(, 30).Copy
Sheets("Daten").Range("JA3:JA50000").PasteSpecial Paste:=xlFormulas
Application.CutCopyMode = False
Gruß Werner
AW: das macht mein Code. owT
07.12.2017 16:27:34
snewi133
Da sind irgendwann meine Ressourcen zu Ende :-( stürzt ab
AW: das macht mein Code. owT
07.12.2017 16:41:43
Werner
Hallo,
keine Ahnung, bei mir nicht.
Schalt mal die automatische Berechnung vor dem Kopiervorgang ab und nach dem Kopiervorgang wieder ein.
Application.Calculation = xlCalculationManual
Sheets("Daten").Range("JA1").Resize(, 30).Copy
Sheets("Daten").Range("JA3:JA50000").PasteSpecial Paste:=xlFormulas
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Gruß Werner
Anzeige
AW: das macht mein Code. owT
07.12.2017 20:50:51
snewi133
Das klappt jetzt soweit ganz gut danke!
AW: das macht mein Code. owT
07.12.2017 17:44:40
Daniel
Hi
naja, das sind schon viele Zellen, die du da befüllst.
Wenn jetzt noch entsprechen komplexe Formeln (Matrixberechnungen, SVerweise, ZählenWenns) dahinter stecken, hat dein Rechner ganz schön was zu tun.
ich würde hier vorschlagen, die Formeln per Schleife Spaltenweise zu kopieren und hinterher gleich die Formeln durch ihre Werte zu ersetzen, wenn es die Aufgabe erlaubt.
ggf geht's auch schneller, wenn du nicht jede Spalte einzeln, sondern eine bestimmte Anzahl, die Excel noch verarbeiten kann, kopierst:
(hier mal im Beispiel für 5 Spalten im Block, diese Anzahl ggf varrieren, um das Optimum zu finden)

dim sp as Long
dim Anz as Long
Anz = 5
for sp = 0 to 29 step Anz
With Sheets("Daten").Range("JA1")
.Offset(0, sp).Resize(1, Anz).Copy
With .Offset(3, sp).Resize(49998, Anz)
.PasteSpecial xlpasteformulas
.copy
.pastespecial xlpastevalues
end with
end with
Next
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige