Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
708to712
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
708to712
708to712
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Variable in .Formula Eigenschaft möglich?

Variable in .Formula Eigenschaft möglich?
21.12.2005 11:07:29
Thias
Hallo Forum Gemeinde,
wollte mir gerade ein kleine Schleife basteln, die mir eine Berechnung durchführt. Allerdings merke ich gerade, dass ich dafür anscheinend doch noch nicht genug weiß.
Aufgabenstellung:
Ich möchte n-mal eine Berechnung ausführen. n ist hierbei die Anzahl der Daten in Spalte G, die ich der Variablen "ende" zuweise.
Nun möchte ich ab Zelle Z11 (und folgende) die Formel = L11*$Z$3 + $AA$3 berechnen.
Allerdings muss die Zeilenzahl von L ja variabel sein, als in jedem Durchlauf der Schleife um 1 erhöht werden. Wie kann ich denn diese variable Zeilenzahl nun in die Berechung innerhalb der Schleife einbauen?
Hier mein Ansatz:

Sub Berechne()
ende = Worksheets(koeffizienten).Range("G65536").End(xlUp).Row
ende = ende - 11 'weil die Daten erst ab Zelle G11 beginnen
z = 11
For n = 1 To ende
Range("Z11").Select
ActiveCell.Formula = "=L & z * Z3 + AA3"
z = z + 1
Next n
End Sub

Das klappt leider nicht, da ich anscheinend in der .Formula Methode keine Variable mit dem & einsetzen kann - jedenfalls nicht so. *g*
Kann mir da jemand weiterhelfen?
Gruß Thias

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable in .Formula Eigenschaft möglich?
21.12.2005 11:14:00
Markus
Hallo,
versuch mal:

Sub Berechne()
ende = Worksheets(koeffizienten).UsedRange.rows.count
For n = 11 To ende
with Worksheets(koeffizienten)
.cells(n,26)= .cells(n,12)*.cells(3,26)+.cells(3,27)
'Cells(zeile,spaltennummer)
end with
Next n
End Sub

AW: Variable in .Formula Eigenschaft möglich?
21.12.2005 11:18:54
Thias
Hi Markus,
hab's gerade doch noch hingefummelt bekommen (siehe unten). vielleicht ist aber Deine Methode schneller. Werde sie mal antesten. Vielen Dank für die schnelle Antwort.
ende = Worksheets(koeffizienten).Range("G65536").End(xlUp).Row
ende = ende - 10
z = 11
For n = 1 To ende
Range("Z" & z).Select
ActiveCell.Formula = "=L" & z & "* $Z$3 + $AA$3"
z = z + 1
Next n
Anzeige
AW: Variable in .Formula Eigenschaft möglich?
21.12.2005 11:24:35
Markus
Hallo Thias,
ja, sie ist schneller. Wirst du aber wohl erst merken, wenn du mehrere tausend Zeilen bearbeitest.
Deine Version selektiert jede einzelne Zelle und schreibt eine Formel rein, meine schreibt die Werte direkt in die Zelle, ohne diese vorher anzusprechen.
Vorteil deiner Formel: bei Änderung der Werte in L-zeile- , Z3 und AA3 werden die Werte automatisch neu berechnet, bei meiner Version müsstest du das Programm nochmal starten.
Je nach Umfang der Tabelle wird aber trotz nochmaligem Programmdurchlauf meine Version dennoch schneller sein.
Probier aus, was für dich am besten ist. Viel erfolg weiterhin.
Markus
Anzeige
AW: Variable in .Formula Eigenschaft möglich?
21.12.2005 11:54:45
Thias
Hi Markus,
die kleine Berechnung ist nur ein Teil eines umfangreicheren Makro's.
Habe hier noch ein paar Zeilen Code, die ich mir mit der Hilfe des Forum's zusammengebastelt habe (oder besser: ich ließ größtenteils basteln! *g*).
Ich befürchte, diese Zeilen sind der eigentliche "Zeitfresser" des Makros, da mit Arrays gearbeitet wird.
Kannst Du evtl. mal durch diese Zeilen schauen und mir sagen, ob sich das evtl. verschnellern lässt? Wenn nicht macht auch nix...
Die Kommentare habe ich mir dazugeschrieben, so wie ich den Code verstanden habe. Falls da was Grundlegendes falsch ist, würde ich mich über eine Verbesserung freuen!
Ich befürchte aber, dass Du zur besseren Lesbarkeit den Code in den Editor kopieren müsstest.
With Sheets(koeffizienten) 'Festlegung des zu nutzenden Arbeitsblatts
.Range("G11:J65536").ClearContents 'evtl. vorhandene Werte im angegebenen Bereich von Spalte G
'werden zuerst geleert
For Each rngA In .Range("B11:B65536") 'Schleife: weise für jeden Durchlauf B11 (+1) rngA zu, bis
'B65536 erreicht ist
If rngA &gt .Range("G10") Then 'Wenn Wert in rngA &gt Wert in Zelle G10, dann...
ReDim Preserve varValuesA(nA) 'Reserviere Speicherplatz für Wert nA in Feld varValuesA
varValuesA(nA) = rngA.Value 'Kopiere Wert aus rngA an Stelle nA von Feld varValuesA
nA = nA + 1 'Variable nA um Eins erhöhen (in Java nA++)
End If 'Ende der If-Bedingung
Next 'zurück zum Schleifenkopf
If nA &gt 0 Then .Range("G11:G" & UBound(varValuesA) + 11) = Application.Transpose(varValuesA)
'Wenn mind. ein Wert größer war als in G10 vorgegeben, kopiere die Werte nach G11
'und forlaufend
End With
For lngI = 11 To Worksheets(koeffizienten).Cells(Rows.Count, 2).End(xlUp).Row
If Cells(lngI, 2) &gt Cells(10, 7) Then
Exit For
End If
Next lngI
ende = Worksheets(koeffizienten).Range("C65536").End(xlUp).Row
Worksheets(koeffizienten).Range("C" & lngI & ":C" & ende).Copy Worksheets(koeffizienten).Range("H11")
Anzeige
AW: Variable in .Formula Eigenschaft möglich?
21.12.2005 11:32:54
UweD
Hallo
deine Formel geht aber auch ohne Select...
ende = Worksheets("Koeffizienten").Range("G65536").End(xlUp).Row - 10
Z = 11
For n = 1 To ende
Range("Z" & Z).Formula = "=L" & Z & "* $Z$3 + $AA$3"
Z = Z + 1
Next n
Gruß UweD
(Rückmeldung wäre schön)
AW: Variable in .Formula Eigenschaft möglich?
21.12.2005 11:45:31
Thias
Hi Uwe,
Danke für die Hilfe. Da hätte ich aber auch selber drauf kommen müssen! Junge, Junge...
Ich glaube für die viele in Anspruch genommene Hilfe müsste ich mal langsam 3 Euro für ein Bier auf Dein Konto überweisen. :-)
Gruß Thias
PS:
da fällt mir noch eine Frage zum VBA-Editor ein: Gibt es eigentlich irgendwo eine Funktion, mit der ich mehrere Zeilen markierten Code's aufeinmal auskommentieren kann, also nicht immer Zeile für Zeile das Hochkomma setzen muss?
Im JAVA-Editor CodeGuide gibt es sowas nämlich...
Anzeige
AW: Variable in .Formula Eigenschaft möglich?
21.12.2005 12:43:38
UweD
Hallo nochmal
ja gibt es.
Userbild
Siehe roten Kreis
Gruß UweD
(Rückmeldung wäre schön)
AW: Variable in .Formula Eigenschaft möglich?
21.12.2005 13:05:53
Thias
Hi Uwe,
meine Leiste sieht leider völlig anders aus! Ich habe hier auch nur Excel in der Version von 2002 druff. Kann es damit zusammenhängen?
AW: Variable in .Formula Eigenschaft möglich?
21.12.2005 13:29:50
Thias
Hi Uwe,
hat sich erledigt. Die entsprechende Symbolleiste war nicht eingeblendet.
Danke trotzdem nochmals.
Gruß Thías

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige