Registriert seit: 15.04.2014
Version(en): 2007, 2010, 2019
04.09.2016, 23:17
(Dieser Beitrag wurde zuletzt bearbeitet: 04.09.2016, 23:17 von radagast.)
heje excelfreunde, schauan, aus #8: Zitat:wenn Du Deine Ansicht konsequent verfolgst, würde es ggf. reichen, die 147 am Ende der Schleife in B2 einzutragen. da liegst du völlige falsch, nicht die eigenen mutmaßungen/interpretationen sind gefragt, sonder das problem, welches dargestellt wurde... und dessen elegantere, aber gleichwertigere umsetzung.
Vielen Dank --Janosch Excel 2019 (64bit) Win 10 Pro (64bit)
Registriert seit: 04.09.2016
Version(en): 2010
(04.09.2016, 10:58)Crazy Tom schrieb: Moinmoin
war wohl noch etwas früh heut morgen :D klar sollte die Berechnung da automatisch bleiben
aber so sollte es auch schnell genug sein
Code: Sub WKN_Update() Dim i As Long With Sheets("WKN Data") For i = 1 To 147 .Range("B2").Value = i .Cells(i + 4, 10).Value = .Range("C3").Value .Cells(i + 4, 11).Value = .Range("G3").Value Next i End With MsgBox "fertsch" End Sub
MfG Tom Danke Tom! Läuft in der Tat schneller, aber bei 147 Loops immer noch recht zeitaufwendig. Der Aufwand kommt von der Berechnung einiger Zellen in Abhängigkeit von B2. Ich kann in meinem Modell die Variablen reduzieren, das hilft nochmal (siehe unten). Gerne würde ich diese Idee weiterführen, sodass B2 für noch weniger Variablen verändert wird; allerdings bin ich mit einem IF im Loop nicht so weit gekommen. Von der Idee her sollte es so aussehen: Code: Sub WKN_Update()
Application.ScreenUpdating = False Dim i As Long With Sheets("WKN Data") For i = 1 To .Range("I3").Value If Left(.Cells(i + 4, 10).Value, 1) = " " Then Next i Else
.Range("B2").Value = i .Cells(i + 4, 10).Value = .Range("C3").Value .Cells(i + 4, 11).Value = .Range("G3").Value End Next i End With
End Sub
Das Next i im Then geht aber leider nicht. Ideen? Danke!!!
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo, so? Code: Sub WKN_Update()
Application.ScreenUpdating = False Dim i As Long With Sheets("WKN Data") For i = 1 To .Range("I3").Value If Left(.Cells(i + 4, 10).Value, 1) <> " " Then
.Range("B2").Value = i .Cells(i + 4, 10).Value = .Range("C3").Value .Cells(i + 4, 11).Value = .Range("G3").Value End If Next i End With
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• and.so
Registriert seit: 29.09.2015
Version(en): 2030,5
Wie sehen die Formel in C3 und G3 aus ?
Registriert seit: 04.09.2016
Version(en): 2010
Danke Uwe, das funktioniert top! @snb: Die Formeln lauten
=ROUND(INDEX(Performance!N$14:N$183,MATCH('WKN Data'!$C$4,Performance!$B$14:$B$183,0)),2)*100&"%"
und
=ROUND(OFFSET($G$4,COUNT($G$5:$G$1030),)/$G$5-1,2)*100&"%"
Meinst du, durch Berechnung in VBA wäre es vllt noch schneller?
Danke!
Registriert seit: 29.09.2015
Version(en): 2030,5
05.09.2016, 14:36
(Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2016, 14:36 von snb.)
Ja, das meine ich.
In keinem der Formeln spielt B3 eine Rolle ???
Warum denn B3 ändern ?
Registriert seit: 04.09.2016
Version(en): 2010
Doch - B2-Bezüge sind natürlich indirekt in den anderen Formeln drin. Sonst würde es ja keinen Sinn machen. B2 wird von einem Spin Button gefüttert, daher nicht direkt in den Formeln verlinkt. Basierend auf B2 werden entsprechende Daten in dem Sheet aufgerufen, die dann in C3 und G3 zusammengefasst werden.
Registriert seit: 29.09.2015
Version(en): 2030,5
Wenn es zu langsam läuft solltest du die ganze Berechnung zeigen. Das wird mit VBA viel schneller gehen.
Registriert seit: 04.09.2016
Version(en): 2010
Sorry, das Modell ist recht komplex, dauert wsh sehr lange bis man sich da eingearbeitet hat. Ich versuche mal mein Anliegen in Kurzform zu erklären :) [ Bild bitte so als Datei hochladen: Klick mich!] B2 ist die durch den Spin Button getriggerte Zelle. Füttert C4 mit einem Namen Datumspalte B zieht Daten aus einem anderen Sheet für diesen Namen: =INDEX(Overview!F$3:F$500,MATCH('WKN Data'!$C$4,Overview!$B$3:$B$500,0)) Spalten C-F ebenso, z.B.: =INDEX(Overview!$AA$3:$CO$5000,MATCH('WKN Data'!B6,Overview!$Z$3:$Z$5000,0),MATCH('WKN Data'!$C$4,Overview!$AA$2:$CO$2,0)) Spalte G berechnet auf Basis von D-F eine Zahl: =IFERROR(INDEX(D5:F5,,MATCH($G$4,$D$3:$F$3,0)),D5*Overview!$W$32+E5*Overview!$W$33+F5*Overview!$W$34)*$C$5 C3 zieht auf Basis von B2 eine Zahl aus einem anderen Sheet (aus meiner Sicht unkritisch): =ROUND(INDEX(Performance!N$14:N$183,MATCH('WKN Data'!$C$4,Performance!$B$14:$B$183,0)),2)*100&"%" G3 ist wohl der Übeltäter, da für die Berechnung hier der gesamte Klatsch vornedran verwendet wird: =ROUND(OFFSET($G$4,COUNT($G$5:$G$1030),)/$G$5-1,2)*100&"%" Was ich machen möchte: Alle Zahlen des Spin-Buttons durchgehen. Mit jeder Änderung gibt es neue C3 und G3 Werte. Diese möchte ich dann einfach nur in das entsprechende Feld J & K kopieren. Ist das soweit verständlich? Falls ja, welche Idee hättest du, das direkt in VBA umzusetzen? Vielen Dank und Grüße Andreas
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Andreas, in Deinen Formeln ist immer noch kein Bezug zu B2 erkennbar  Zur Umsetzung wäre es in diesem Fall ausnahmsweise hilfreich, eine Musterdatei zu posten. Hier mal noch vorab die von snb vorgeschlagene Variabte mit dem Array auf Basis von Tom's Code: Code: Sub WKN_Update() Dim i As Long, arrData(1 To 147, 1) With Sheets("WKN Data") For i = 1 To 147 .Range("B2").Value = i '.Cells(i + 4, 10).Value = .Range("C3").Value '.Cells(i + 4, 11).Value = .Range("G3").Value arrData(i, 0) = .Range("C3").Value arrData(i, 1) = .Range("G3").Value Next i .Range(.Cells(1, 10), .Cells(147, 11)).Value = arrData() End With MsgBox "fertsch" End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|