Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
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

VBA Formel mit variabler Spalte

VBA Formel mit variabler Spalte
08.10.2016 12:22:45
Hermann
Hallo,
im folg Code soll der Ausdruck für die Spalten-Nr. $G durch die Variable zy ersetzt werden. (zy wird in einem anderen Makro definiert, welches dann das Makro "kopieren" aufruft.)
Habt Ihr eine Idee wie man dies lösen kann ?
Viele Grüße
Hermann
Option Explicit
Public zy As Integer
Sub kopieren()
Dim MA
Dim MAz&, z&
For z = 2 To MAz - 1
Range("E" & MA(z, 2) & ":E" & MA(z, 3)).FormulaLocal = _
"=ADS!$G2*100/INDIREKT(""ADS!$G""&ZEILE(ADS!$G2)+ $D" & MA(z, 2) & ")-100" ' Formel in Spalte  _
_
E
Next
zy = zy + 1
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Formel mit variabler Spalte
08.10.2016 16:20:58
Daniel
Hi
verwende für die Formel die Z1S1-Schreibweise für Zellbezüge (.FormulaR1C1Local)
in dieser Schreibweise werden auch die Spalten als Nummern angegeben.
Ausserdem kann man in Z1S1 die relativen Zellbezüge auch wirklich relativ beschreiben, so dass sich der Formeltext nicht ändert, wenn die Formel in die nächste Zeile/Spalte übertragen wird.
Gruß Daniel
AW: VBA Formel mit variabler Spalte
08.10.2016 17:45:45
Hermann
Hallo Daniel,
ich bin kein VBA Experte und mit FormulaR1C1Local kenne ich mich nicht aus, habe aber mal versucht die Formel mit Recorder umzustellen:
Range("E" & MA(z, 2) & ":E" & MA(z, 3)).FormulaR1C1Local = _
"=ADS.DE!R[-1]C7*100/INDIRECT(""ADS.DE!$""&R[-1]C7&ROW(ADS.DE!R[-1]C7)+ $D" & MA(z, 2) & ")-100"
Funktioniert natürlich nicht und der Verweis auf C7 Spalte hilft mir nicht, denn dieser soll ja variabel sein über zy (s.o.)
Bin ratlos, kannst du mir weiterhelfen?
Gruß
Hermann
Anzeige
AW: VBA Formel mit variabler Spalte
08.10.2016 20:42:30
Daniel
Hi
der Recorder zeichnet den Formeltext immer in R1C1 auf, also in Englisch mit Z1S1-Zellbezügen.
wenn du die Deutsche Formel mit Z1S1-Bezügen brauchst weil du mit .FormulaR1C1Local (also deutsche Formeln in VBA) arbeiten willst, dann kannst du auch:
- die Formel ganz normal in einer Excelzelle von Hand erstellen, so wie du es gewohnt bist
- dir dann im Direktfenster die Formel in der gewünschten Schreibweise mit ?Selection.FormulaR1C1Local anzeigen lassen (lediglich die Anführungszeichen müssen dann noch gedoppelt werden)
dann hast du deine Vorlage für dein Code und musst nur noch die Variablen an der gewünschten Stelle einbauen (falls das überhaupt noch notwendig ist)
beim Arbeiten mit Z1S1-Zellbezügen ist es sinnvoll, alle Zellbezüge die nicht zwingend relativ sein müssen auf absolut zu setzen und nur die relativ zu lassen, die unbedingt relativ sein müssen.
das vereinfacht die Darstellung in der Formel.
Gruß Daniel
Anzeige
AW: VBA Formel mit variabler Spalte
08.10.2016 21:39:53
Hermann
Hallo Daniel,
das Dirketfenster kannte ich noch nicht, danke für den Hinweis !
Meine Formel sieht nun so aus, aber etwas stimmt noch immer nicht ?
Range("E" & MA(z, 2) & ":E" & MA(z, 3)).FormulaR1C1Local = _
"=ADS.DE!Z(-1)S" & zy & "*100/INDIREKT(""ADS.DE!G""&ZEILE(ADS.DE!Z(-1)S" & zy & ")+ $D" & MA(z, 2) & ")-100"
Der erste Teil bis Indirekt ist ok, aber wie stellt man mit Z1S1 Bezügen den Ausdruck ""ADS.DE!G""&ZEILE( ... dar ?
Gruß Hermann
AW: VBA Formel mit variabler Spalte
08.10.2016 22:22:45
Daniel
Hi
Du kannst in der Indirekt-Funktion auch mit Z1S1 arbeiten, musst dann aber den Zweiten Parameter = FALSCH setzen.
Gruß Daniel
Anzeige
AW: VBA Formel mit variabler Spalte
09.10.2016 22:06:32
Hermann
Hi,
ich komme einfach nicht weiter.
Der Ausdruck für Z in ADS.DE!Z(" & MA(1, 3) & ")S" & zy &" wird zu Beginn der 2. Schleife nicht absolut gesetzt sondern Z wird fortlaufend weitergezählt, obwohl der Z Ausdruck Z(" & MA(1, 3) & ") doch eindeutig ist.
und das Problem mit dem Ausdruck ""ADS.DE!G""&ZEILE( ... bekomme ich wg der Syntax nicht hin.
So siehtr es derzeit bei mir aus:
Range("E" & MA(z, 2) & ":E" & MA(z, 3)).FormulaR1C1Local = "=ADS.DE!Z(" & MA(1, 3) & ")S" & zy & "*100/INDIREKT(""ADS.DE!$""&S(" & zy - 5 & ")&ZEILE(ADS.DE!Z(" & MA(1, 3) & ")S" & zy & ")+ ZS(-1))-100"
Gruß
Hermann
Anzeige

330 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige