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

VBA-Formel um nur Berechnungswerte einzutragen

Forumthread: VBA-Formel um nur Berechnungswerte einzutragen

VBA-Formel um nur Berechnungswerte einzutragen
12.08.2008 08:51:00
Matthias
Hallo Excel und Makrofans.
Ich habe folgende 2 Probleme. Erstmal zum ersten Problem:
Ich habe eine Datei in der ich Daten (Betriebsparameter [Druck, Temperatur usw.]) aus einem externen Programm einlese. Aus diesen Werten möchte ich gerne einige Werte Berechnen.
Zur Zeit mache ich das noch Umständlich über FormulaLocal und danach Copy und Pastespecial - Werte einfügen.
Das sieh zum Beispiel so aus:
Range("I5:I1500").FormulaLocal = "=WENN(C5="""";"""";C5+D5)"
Range("J5:J1500").FormulaLocal = "=WENN(C5="""";"""";I5/3,6*$I$1*(E5-B5))"
Range("K5:K1500").FormulaLocal = "=WENN(C5="""";"""";LMTD(F5;G5;B5;E5))"
Range("L5:L1500").FormulaLocal = "=WENN(C5="""";"""";(J5*1000)/(K5*$L$1))"
Range("M5:M1500").FormulaLocal = "=WENN(C5="""";"""";I5/F5*3,6)"
Range("I5:M1500").Copy
Range("I5").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Ich würde diesen Kopierschritt gerne löschen indem ich nur Werte eintrage und nicht zu allererst die Formel. Könnte mir da bitte jemand weiterhelfen?
Das zweite Problem ist möglicherweise etwas einfacher. Ich Berechne die Steigung einer Kurve über die Excel-Formel "Steigung". Nun möchte ich aber das für die Berechnung aber nur die letzten 200 Datenpunkte genutzt werden. Gibt es dafür eine Formel die nur die letzten 200 Werte nimmt. Also einen dynamischen Bereich oder so etwas.
Vielen Dank im voraus.
Mit freundlichen Grüßen
Matthias

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Formel um nur Berechnungswerte einzutragen
12.08.2008 09:31:00
Erich
Hallo Matthias,
statt
Range("I5:M1500").Copy
Range("I5").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
kannst du auch schreiben:
Range("I5:M1500").Value=Range("I5:M1500").Value
oder
Range("I5:M1500").formula=Range("I5:M1500").Value
Vielleicht reicht das ja aus.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: VBA-Formel um nur Berechnungswerte einzutragen
12.08.2008 10:13:00
Matthias
Hallo Erich,
danke das klappt super.
MFG Matthias

AW: VBA-Formel um nur Berechnungswerte einzutragen
12.08.2008 09:42:05
Luschi
Hallo Matthias,
zum 1. Problem:
ich würde an dem Copy-Paste nichts ändern, da es wohl auch mit anderem Vba-Code
nicht schneller geht; dafür aber dafür ein paar Exceleinstellungen umschalten:

getMoreSpeed True
Range("I5:I1500").FormulaLocal = "=WENN(C5="""";"""";C5+D5)"
Range("J5:J1500").FormulaLocal = "=WENN(C5="""";"""";I5/3,6*$I$1*(E5-B5))"
Range("K5:K1500").FormulaLocal = "=WENN(C5="""";"""";LMTD(F5;G5;B5;E5))"
Range("L5:L1500").FormulaLocal = "=WENN(C5="""";"""";(J5*1000)/(K5*$L$1))"
Range("M5:M1500").FormulaLocal = "=WENN(C5="""";"""";I5/F5*3,6)"
Range("I5:M1500").Copy
Range("I5").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
getMoreSpeed False

Die Procedure 'getMoreSpeed' schaltet am Anfang einige geschwindigkeitshemmende Einstellungen aus und zum Schluß wieder ein und sieht so aus:


Sub getMoreSpeed(bDoIt As Boolean)
Application.ScreenUpdating = Not (bDoIt)
Application.EnableEvents = Not (bDoIt)
Application.Calculation = IIf(bDoIt, xlCalculationManual, xlCalculationAutomatic)
Application.Cursor = IIf(bDoIt, 2, -4143)
End Sub

zu Deinem 2. Problem: definiere im Namensmager (Strg+F3) die folgenden Namen und hinterlege dafür folgende Formeln:
1. mein_Bereich_ges =Tabelle1!$A$2:$A$2500
2. mein_Bereich_ben =BEREICH.VERSCHIEBEN(mein_Bereich_ges;;;ANZAHL2(mein_Bereich_ges))
3. mein_Bereich_L200 =BEREICH.VERSCHIEBEN(mein_Bereich_ben;ANZAHL2(mein_Bereich_ben)-200;;200)
Mit dem 1. Namen definierst Du den maximalen Gesamtbereich,
mit dem 2. Namen den davon tatsächlich benutzten Bereich, und
mit dem 3. Namen die letzten 200 Zeilen vom benutzten Bereich.
Den Namen 'mein_Bereich_L200' kann man jetzt als Datenquelle angeben.

Anzeige
AW: VBA-Formel um nur Berechnungswerte einzutragen
12.08.2008 10:19:00
Matthias
Hallo Luschi,
also das mit getmoreSpeed klappt gut, aber beim Zweiten bin ich mir nicht sicher ob es das richtige ist. Was ich vergaß zu sagen ist das ich nicht nur eine Tabelle habe sondern so an die 8. Wenn ich das richtig Verstehe müsste ich ja dann für alle Tabellen die Namen definieren? Des Weiteren kommen jeden Tag Werte hinzu. Die Tabellen werden also länger und würden dann aus dem definierten Bereich raus "wachsen". Wie ist das mit dem Bereich? Wenn ich zum Beispiel sage "nimm Bereich Z5:Z1200" und ich aber nur Werte bis Zeile 800 drin habe, nimmt er dann die Zeilen 1000 bis 1200 (wenn ich L200 annehme) um die Steigung zu Berechnen? Vielen Dank schon mal für deine bisherige Hilfe.
MFG Matthias

Anzeige
AW: VBA-Formel um nur Berechnungswerte einzutragen
12.08.2008 11:51:35
Daniel
Hi
wenn du wie eingangsbeschrieben, immer nur die letzen 200 Zeilen für die Berechnung verwenden willst, (also wenn die Datei 1200 Zeilen hat dann nur die Zeilen 1001 - 1200), dann geht das mit folgendermassen:
anstelle des Zellbereichs "A1001:A1200 " setzt du in die Formel ein:
Bereich.Verschieben(A1;Anzahl2(A:A)-200;0;200;1)
funktioniert unter folgenden Bedingungen:
- es gibt mindestens 200 Zeilen
- die Zeilen sind lückenlosg gefüllt
Gruß, Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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