Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Edgar, dann setze ich mal ein paar Zeichen Wenn ich anschließend in K6, bei 0 in Z6, eine andere Zahl >0 eingebe
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 28.08.2022
Version(en): 365
Hi, um das eigentliche Problem anzugehen: Deine Vorgehensweise ist nicht vernünftig. Wenn du etwas protokollieren willst, dann schreib jeden Wert jeweils eine eigene Zeile. Damit kannst du dann alles nachvollziehen. Was ist z.B., wenn du aus Versehen in K6 mal 0 statt 9 eingibst? Dann bleibt die 0 als Minimum stehen und du kannst es nicht korrigieren. Willst du das? Vor allem ist es doch unsinnig, da du nicht weißt, wann und wie oft der Wert erreicht wurde. Ebenso weißt du nicht, ob es ein Ausreißer war, oder es noch mehr ähnliche Werte gibt. Wenn du dennoch darauf bestehst, immer nur einen Wert zu haben und von dem in einer anderen Zelle den niedrigsten oder höchsten Wert, dann geht das nur über VBA. Code: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("K6")) Is Nothing Then With Range("K6") If .Value < Range("Z6") Then Range("Z6") = .Value End With End If End Sub
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Registriert seit: 22.08.2020
Version(en): 365
11.11.2022, 17:35
(Dieser Beitrag wurde zuletzt bearbeitet: 11.11.2022, 17:43 von Sultaner.)
ja, das ist eben die Frage ob man das mit VBA umgehen kann, das er es neu berechnen will danach.
(11.11.2022, 14:13)HKindler schrieb: Hi,
um das eigentliche Problem anzugehen: Deine Vorgehensweise ist nicht vernünftig.
Wenn du etwas protokollieren willst, dann schreib jeden Wert jeweils eine eigene Zeile. Damit kannst du dann alles nachvollziehen. Was ist z.B., wenn du aus Versehen in K6 mal 0 statt 9 eingibst? Dann bleibt die 0 als Minimum stehen und du kannst es nicht korrigieren. Willst du das? Vor allem ist es doch unsinnig, da du nicht weißt, wann und wie oft der Wert erreicht wurde. Ebenso weißt du nicht, ob es ein Ausreißer war, oder es noch mehr ähnliche Werte gibt.
Wenn du dennoch darauf bestehst, immer nur einen Wert zu haben und von dem in einer anderen Zelle den niedrigsten oder höchsten Wert, dann geht das nur über VBA.
Code: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("K6")) Is Nothing Then With Range("K6") If .Value < Range("Z6") Then Range("Z6") = .Value End With End If End Sub
danke fuer die hilfe. ich habe vielleicht nicht genau genug die datenquelle erklaert. in K6 befinden sich automatisch staendig aktualsierende kursdaten von einigen aktien, die also entweder 0 sind wenn Fehler uebermittelt oder irgendwas gravierendes nicht stimmt oder einen wert ueber null enthalten. also sind immer groesser null wenn nicht mega fehler, der noch nie kam. in z6 will ich berechnen, ab wenn ich excel starte und die kurse bekomme, was war ab diesen zeitpunkt der kleinste wert (beziehungsweise der groesste wert in einer weiteren Zelle). das funktoniert , geht aber leider auf die performance ganzschoen. ich habe iteration auf 1 gesetzt und einen sehr hohen wert eingetragen, das er es fast nie neu berechnet. aber es gibt trotzgibt trotzdem immer wieder minifreezes wo excel wegen berechnung nicht benuztbar. wuerde genau das mit deinem vba script besser gehen und iteration ausstellbar? falls ich irgendwas dummes sage verzeiht die unwissenheit, ich rede eben von meinem wissensstandpunkt aus, und bestimmt weiss fast jeder hier der hilft die genaueren begriffe und wege.
Registriert seit: 13.04.2014
Version(en): 365
11.11.2022, 17:46
(Dieser Beitrag wurde zuletzt bearbeitet: 11.11.2022, 17:48 von BoskoBiati.)
Hi, wenn es nur darum geht, den kleinsten Wert aus K6 in Z6 zu speichern, dann reicht das: Code: Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("K6")) Is Nothing Then Exit Sub If Range("Z6") = 0 Or Range("K6") < Range("Z6") Then Range("Z6") = Range("K6") End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 28.08.2022
Version(en): 365
Hi, bitte keine FullQuotes, erst recht nicht von Antworten direkt über der eigenen Antwort! (11.11.2022, 17:35)Sultaner schrieb: in K6 befinden sich automatisch staendig aktualsierende kursdaten von einigen aktien, Von mehreren Aktien in einer Zelle? Das glaube ich nicht! Und wie werden diese Daten aktualisiert? Wäre es nicht sinnvoll da anzusetzen? Deine Mini-Einfrierungen kommen ganz sicher nicht von deiner Formel. Wahrscheinlich stammen sie aus der Abfrage.
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Registriert seit: 22.08.2020
Version(en): 365
11.11.2022, 17:53
(Dieser Beitrag wurde zuletzt bearbeitet: 11.11.2022, 18:07 von Sultaner.)
noch als zusatz. deine ideen sind super mit mehr protokollieren. und wuerde sinn machen jeden wert speichern, waeren dann nur tausende werte je aktie, also jeder neue kurs. mir reicht eigentlich dieser eine wert, weil ich ja jederzeit auch in den charts die restlichen werte ablesen kann. dieser wert in Z6 ist mehr als kontrollwert gedacht, da handelsstrategien oft backups und sicherheitskontrollen brauchen, da immer mal was falsch gesendet werden kann vom broker.
nein, pro zelle ist eine einzelne aktie natuerlich. und davon 20 stueck. die kursdaten werden ueber broker add in (api ) integriert. ich teste dein script mal heute abend,kann ich dann iteration ausschalten oder schadet nie anzulassen?
muss ich das vba script irgendwie aufrufen , oder wird das jedes mal wenn K6 sich aendert erneut einmalig aktiviert automatisch? bisher habe ich immer nur event bassierte vba gehabt, wie makros, deshalb klingt das bestimmt gerade wie eine dumme frage  danke wirklich fuer die hilfe
Registriert seit: 28.08.2022
Version(en): 365
Hi, Ich kenne dieses addin nicht. Wenn damit die Zelle K6 beschrieben wird (dort also keine Formel steht), dann funktioniert mein Makro einfach so - solange es im Code-Modul des betreffenden Tabellenblatts steht. Wenn du mehr Zellen überwachst, dann solltest du es allerdings anders schreiben: Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim Bereich As Range Dim Zelle As Range Set Bereich = Intersect(Target, Range("K6:K26")) 'Range anpassen If Not Bereich Is Nothing Then For each Zelle in Bereich With Zelle If .Value < .Offset(, 15) And .Value > 0 Then .Offset(, 15) = .Value End With Next Zelle End If End Sub
ungetestet!
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
|