Excel zwingt beim berechnen einer SVERWEIS-Formel den Rechner mit Warntönen in die Knie - Was kann ich verbessern?
Hallo,
ich habe eine Preisliste mit aktuellen Preisen und einen Export unseres Artikelstamms. Die Preisliste umfasst ca. 44mb und 250k Zeilen, der Artikelstamm ist ca. 4mb und 6000 Zeilen groß.
Ich wollte das mir die Formel für jeden Artikel aus dem Artikelstamm, die er in der Preisliste findet, den zur Zeit noch aktuellen Preis aus dem Artikelstamm schreibt.
Beispiel:
Artikel | Neuer Preis ab jetzt | Alter Preis bis jetzt
Ball | 10,00 | 9,00
Rad | 80,00 | 75,00
Den "alter Preis bis jetzt" wollte ich eben aus dem Artikelstamm holen.
Mein Lösungsansatz war folgender:
=WENN(WENNFEHLER(SVERWEIS(A2;artikelstamm.csv!$A:$AI;35;FALSCH);"")="";"";SVERWEIS(A2;artikelstamm.csv!$A:$AI;35;FALSCH))
Diese kopierte ich einfach auf alle Zeilen der Preisliste, in der Spalte wo ich den Wert brauche. Soweit ich sagen kann funktionierte das auch ohne bisher ohne weiteres, allerdings waren die Preislisten um einiges kleiner, vllt. 10-20k Zeilen und entsprechende MB. Dabei dauerte das berechnen der Formel (siehe Excel-Bild) 10-30 Sekunden.
Das es bei 250k Zeilen entsprechend länger dauert, darauf war ich eingestellt. Dass es meinen Rechner aber so dermaßen quält das dieser mit Warntönen daher kommt überraschte mich. Nach 2-3 Minuten der Berechnung fing der Rechner an zu Piepen (so Richtung Bios-Warntöne) und nach kurzer Zeit ging es in einen Dauerpiepton über, so dass ich Excel abwürgen musste, danach war wieder Ruhe. Normal beenden ließ es sich nicht mehr.
Ich such jetzt möglichst einen Lösungsansatz der sich weiterhin in Excel auf Formelbasis bewegt, der Entweder die Berechnung schneller vonstatten gehen lässt oder die Auslastung des Rechners soweit reduziert das dieser an der Aufgabe nicht stirbt.
Der Parameter "Wahr" in dem SVERWEIS ist leider keine Option.
Vielen dank im Voraus für die Mühen!
ich habe eine Preisliste mit aktuellen Preisen und einen Export unseres Artikelstamms. Die Preisliste umfasst ca. 44mb und 250k Zeilen, der Artikelstamm ist ca. 4mb und 6000 Zeilen groß.
Ich wollte das mir die Formel für jeden Artikel aus dem Artikelstamm, die er in der Preisliste findet, den zur Zeit noch aktuellen Preis aus dem Artikelstamm schreibt.
Beispiel:
Artikel | Neuer Preis ab jetzt | Alter Preis bis jetzt
Ball | 10,00 | 9,00
Rad | 80,00 | 75,00
Den "alter Preis bis jetzt" wollte ich eben aus dem Artikelstamm holen.
Mein Lösungsansatz war folgender:
=WENN(WENNFEHLER(SVERWEIS(A2;artikelstamm.csv!$A:$AI;35;FALSCH);"")="";"";SVERWEIS(A2;artikelstamm.csv!$A:$AI;35;FALSCH))
Diese kopierte ich einfach auf alle Zeilen der Preisliste, in der Spalte wo ich den Wert brauche. Soweit ich sagen kann funktionierte das auch ohne bisher ohne weiteres, allerdings waren die Preislisten um einiges kleiner, vllt. 10-20k Zeilen und entsprechende MB. Dabei dauerte das berechnen der Formel (siehe Excel-Bild) 10-30 Sekunden.
Das es bei 250k Zeilen entsprechend länger dauert, darauf war ich eingestellt. Dass es meinen Rechner aber so dermaßen quält das dieser mit Warntönen daher kommt überraschte mich. Nach 2-3 Minuten der Berechnung fing der Rechner an zu Piepen (so Richtung Bios-Warntöne) und nach kurzer Zeit ging es in einen Dauerpiepton über, so dass ich Excel abwürgen musste, danach war wieder Ruhe. Normal beenden ließ es sich nicht mehr.
Ich such jetzt möglichst einen Lösungsansatz der sich weiterhin in Excel auf Formelbasis bewegt, der Entweder die Berechnung schneller vonstatten gehen lässt oder die Auslastung des Rechners soweit reduziert das dieser an der Aufgabe nicht stirbt.
Der Parameter "Wahr" in dem SVERWEIS ist leider keine Option.
Vielen dank im Voraus für die Mühen!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 491947
Url: https://administrator.de/forum/excel-zwingt-beim-berechnen-einer-sverweis-formel-den-rechner-mit-warntoenen-in-die-knie-was-kann-ich-491947.html
Ausgedruckt am: 21.01.2025 um 13:01 Uhr
19 Kommentare
Neuester Kommentar
Moin,
was soll der ganze WENN-Konstrukt mit dem doppelten SVERWEIS? Warum nicht nur den letzten Teil der Formel (zweiter SVERWEIS)? Die Ausgabe #NV kannst Du in den Optionen unterdrücken. So, wie Du das geschrieben hast, muss Excel in jeder Zeile erst den ersten SVERWEIS auswerten, dann WENNFEHLER, dann WENN und dann noch einmal den zweiten SVERWEIS. Lässt Du den ganzen WENN-Teil weg, muss es nur einmal den SVERWEIS auswerten. Das dürfte schonmal schneller gehen.
hth
Erik
was soll der ganze WENN-Konstrukt mit dem doppelten SVERWEIS? Warum nicht nur den letzten Teil der Formel (zweiter SVERWEIS)? Die Ausgabe #NV kannst Du in den Optionen unterdrücken. So, wie Du das geschrieben hast, muss Excel in jeder Zeile erst den ersten SVERWEIS auswerten, dann WENNFEHLER, dann WENN und dann noch einmal den zweiten SVERWEIS. Lässt Du den ganzen WENN-Teil weg, muss es nur einmal den SVERWEIS auswerten. Das dürfte schonmal schneller gehen.
hth
Erik
Hallo,
Ist deine CPU ausreichend gekühlt wenn das Berechnungschaos losrennt?
Sind die Gehäuse Lüfter frei und können die Abwärme abtansportieren?
Ist der Grafik Lüfter OK usw.?
Gruß,
Peter
Ist deine CPU ausreichend gekühlt wenn das Berechnungschaos losrennt?
Sind die Gehäuse Lüfter frei und können die Abwärme abtansportieren?
Ist der Grafik Lüfter OK usw.?
Gruß,
Peter
Moin,
1. Schmeiße die 33 überflüssigen Spalten aus dem alten Stamm raus. Du brauchst ja nur Bezeichnung und Preis.
2. Suche nicht über die gesamten Spalten, sondern nur bis zu der Zeile, in der auch Daten stehen. Du suchst nämlich nicht über 6.000 Datensätze, sondern über 1.048.576 und das jedes Mal.
3. Sortiere beide Tabellen nach dem Suchkriterium.
Das sollte ein wenig Performance bringen, auch wenn ich das seltsam finde. Ich habe versucht, das nachzustellen. Bei 1.000.000 Zieldatensätzen und 7.000, in denen gesucht wird, hat das bei mir ein paar Sekunden gedauert.
Liebe Grüße
Erik
1. Schmeiße die 33 überflüssigen Spalten aus dem alten Stamm raus. Du brauchst ja nur Bezeichnung und Preis.
2. Suche nicht über die gesamten Spalten, sondern nur bis zu der Zeile, in der auch Daten stehen. Du suchst nämlich nicht über 6.000 Datensätze, sondern über 1.048.576 und das jedes Mal.
3. Sortiere beide Tabellen nach dem Suchkriterium.
Das sollte ein wenig Performance bringen, auch wenn ich das seltsam finde. Ich habe versucht, das nachzustellen. Bei 1.000.000 Zieldatensätzen und 7.000, in denen gesucht wird, hat das bei mir ein paar Sekunden gedauert.
Liebe Grüße
Erik
Moin,
Wenn die Suchmatrix 35 Spalten hat, dann muss er auch 35 Spalten laden.
Wenn das nicht besser wird, würde ich mal über eine Lösung mit der Powershell nachdenken.
Liebe Grüße
Erik
Zitat von @Balgor:
Das werde ich morgen mal versuchen.
Ich hätte aber gedacht, da ich ja nur Spalte 35 haben will, dass er die anderen gar nicht beachtet. Insgesamt haben die Listen 80 Spalten, welche aber unterschiedlich gefüllt sind.
Das werde ich morgen mal versuchen.
Ich hätte aber gedacht, da ich ja nur Spalte 35 haben will, dass er die anderen gar nicht beachtet. Insgesamt haben die Listen 80 Spalten, welche aber unterschiedlich gefüllt sind.
Wenn die Suchmatrix 35 Spalten hat, dann muss er auch 35 Spalten laden.
Wenn das nicht besser wird, würde ich mal über eine Lösung mit der Powershell nachdenken.
Liebe Grüße
Erik
Moin,
wenn du mindestens Excel 2010 hast, dann sollte das mit Power Query sehr gut und erheblich besserer Performance lösbar sein. Beispiele, wie das gehen kann: http://www.excel-ist-sexy.de/pqq-pq-verweis-statt-sverweis/ oder etwas ausführlicher hier: http://www.excel-ist-sexy.de/pqq-sverweis-nach-beiden-seiten/
Gruß
Günther
wenn du mindestens Excel 2010 hast, dann sollte das mit Power Query sehr gut und erheblich besserer Performance lösbar sein. Beispiele, wie das gehen kann: http://www.excel-ist-sexy.de/pqq-pq-verweis-statt-sverweis/ oder etwas ausführlicher hier: http://www.excel-ist-sexy.de/pqq-sverweis-nach-beiden-seiten/
Gruß
Günther
Hallo,
Du musst einen Rechner schon genau sagen was du erwartest, KI ist noch lange nicht soweit es zu erkennen das du die anderen Spalten nur als Platzhalter nimmst und er nur in einer Spalte suchen soll. Nachdenken statt denken hätte dir hier geholfen. Und ein 4 Jahre alter I3-4160 ist wirklich noch nicht so alt das er dein Problem ist
Gruß,
Peter
Zitat von @Balgor:
Ich hätte aber gedacht, da ich ja nur Spalte 35 haben will, dass er die anderen gar nicht beachtet. Insgesamt haben die Listen 80 Spalten, welche aber unterschiedlich gefüllt sind.
Sortiert sind beide bereits nach dem Suchkriterium.
Warum dauert meine Adressuche so lange? Ich will doch nur die mit den Namchname Holperdinger haben, und der Ort Kleinkleckersdorf ist auch der Weltliste enthalten. Warum sucht er dann in Moskau und Paris und NewYork und Passadena und Mexiko und und und.Ich hätte aber gedacht, da ich ja nur Spalte 35 haben will, dass er die anderen gar nicht beachtet. Insgesamt haben die Listen 80 Spalten, welche aber unterschiedlich gefüllt sind.
Sortiert sind beide bereits nach dem Suchkriterium.
Du musst einen Rechner schon genau sagen was du erwartest, KI ist noch lange nicht soweit es zu erkennen das du die anderen Spalten nur als Platzhalter nimmst und er nur in einer Spalte suchen soll. Nachdenken statt denken hätte dir hier geholfen. Und ein 4 Jahre alter I3-4160 ist wirklich noch nicht so alt das er dein Problem ist
Gruß,
Peter
Zitat von @Guenther45:
Moin,
wenn du mindestens Excel 2010 hast, dann sollte das mit Power Query sehr gut und erheblich besserer Performance lösbar sein. Beispiele, wie das gehen kann: http://www.excel-ist-sexy.de/pqq-pq-verweis-statt-sverweis/ oder etwas ausführlicher hier: http://www.excel-ist-sexy.de/pqq-sverweis-nach-beiden-seiten/
Gruß
Günther
Moin,
wenn du mindestens Excel 2010 hast, dann sollte das mit Power Query sehr gut und erheblich besserer Performance lösbar sein. Beispiele, wie das gehen kann: http://www.excel-ist-sexy.de/pqq-pq-verweis-statt-sverweis/ oder etwas ausführlicher hier: http://www.excel-ist-sexy.de/pqq-sverweis-nach-beiden-seiten/
Gruß
Günther
Das wäre auch mein nächste Vorschlag gewesen.
Hallo,
das eine ist EXCEL, das andere die Hardware.
Der Warnton sagt nur, daß eine im Bios eingestellte Warnschwelle erreicht ist. Hier mal prüfen, ab wann gewarnt wird. Nach 4 Jahren ist die Hardware auch nicht mehr taufrisch, immerhin scheint er auch von innen gepflegt zu werden.
Evtl. läßt sich das XLS ja optimieren. Ich würde auch den Arbeitsspeicher kontrollieren, evtl. reicht der nicht aus, XLS hat da gerne bei größeren Sachen etwas mehr.
Grüße Peter
das eine ist EXCEL, das andere die Hardware.
Der Warnton sagt nur, daß eine im Bios eingestellte Warnschwelle erreicht ist. Hier mal prüfen, ab wann gewarnt wird. Nach 4 Jahren ist die Hardware auch nicht mehr taufrisch, immerhin scheint er auch von innen gepflegt zu werden.
Evtl. läßt sich das XLS ja optimieren. Ich würde auch den Arbeitsspeicher kontrollieren, evtl. reicht der nicht aus, XLS hat da gerne bei größeren Sachen etwas mehr.
Grüße Peter
Hallo zusammen,
ich würde bei diese Konstellation ein MS SQL Server Express verewenden.
Mit Talend open Studio die neuen Preislisten immer automatisch in eine Preishistorietabelle laden.
Dann mit einer View die Daten per Excel Datenbankverbindung als fertig berechnete Werte ausgeben oder auch über Talend Open Studio die Exceldatei direkt mit den neuen Daten befüttern.
Das kostet zar alles etwas Einrichtungszeit, aber es ist nachhaltiger und im täglichen Einsatz um Welten schneller.
Es ist immerhin Excel - auch wenn man bis zu 1.048.576 Zeilen und 65535 Spalten zur Verfügung hat, ist es noch lange keine Datenbank.
Die Datenbanktabellen kann man dann mit einerm Index zu Beschleunigung der Suche ausstatten.
mit dem TOS (Talend Open Studio) ist auch ein automatischer Versand / Updload der fertigen Liste möglich.
Greetz,
thejoker2305
ich würde bei diese Konstellation ein MS SQL Server Express verewenden.
Mit Talend open Studio die neuen Preislisten immer automatisch in eine Preishistorietabelle laden.
Dann mit einer View die Daten per Excel Datenbankverbindung als fertig berechnete Werte ausgeben oder auch über Talend Open Studio die Exceldatei direkt mit den neuen Daten befüttern.
Das kostet zar alles etwas Einrichtungszeit, aber es ist nachhaltiger und im täglichen Einsatz um Welten schneller.
Es ist immerhin Excel - auch wenn man bis zu 1.048.576 Zeilen und 65535 Spalten zur Verfügung hat, ist es noch lange keine Datenbank.
Die Datenbanktabellen kann man dann mit einerm Index zu Beschleunigung der Suche ausstatten.
mit dem TOS (Talend Open Studio) ist auch ein automatischer Versand / Updload der fertigen Liste möglich.
Greetz,
thejoker2305
Zitat von @Balgor:
Trotzdem Schade, dass mir meine Kombination aus Hardware und Software einen strich durch die Rechnung macht.
Trotzdem Schade, dass mir meine Kombination aus Hardware und Software einen strich durch die Rechnung macht.
Ebenfalls schade, dass du kein Wort des Dankes für die kostenlose und zielführende Hilfe gefunden hast! Hier antworten keine Angestellten von MS sondern freiwillige Helfer aus der "freien Wildbahn".
Hallo,
Gruß,
Peter
Zitat von @Guenther45:
Ebenfalls schade, dass du kein Wort des Dankes für die kostenlose und zielführende Hilfe gefunden hast! Hier antworten keine Angestellten von MS sondern freiwillige Helfer aus der "freien Wildbahn".
Und ebenfalls schade das es vom TO noch nicht mal hierfür reicht... Wie kann ich einen Beitrag als gelöst markieren?Ebenfalls schade, dass du kein Wort des Dankes für die kostenlose und zielführende Hilfe gefunden hast! Hier antworten keine Angestellten von MS sondern freiwillige Helfer aus der "freien Wildbahn".
Gruß,
Peter