Excel - wie kann ich bei einem Vergleich innerhalb einer Spalte Schleifen vermeiden?

waps

Captain
Registriert
Sep. 2001
Beiträge
3.348
Excel - Schleifenproblem & Daten von Website einlesen

Hey.

Ich wollte mal meine Excel-Kenntnisse (die bislang nicht viel hermachen) ausbauen und habe
mir zu dem Zweck (und auch weil ich es relativ praktisch finde) eine Tabelle zu aktuellen Intel-
CPUs gebastelt. Interessant sind die Spalten N (TDP), Q (Preis), R (Passmark-Punktzahl) und
vor allem die daraus abgeleiteten Spalten S, T und U (siehe Anhang).

S tut eigentlich nichts anderes, als aus der Passmark-Punktzahl eine Prozentzahl im Verhältnis
zu allen anderen Werten in R zu bilden, indem die Punktzahl der entsprechenden CPU durch
die maximale Punktzahl in der Spalte geteilt und mit 100 multipliziert wird. Funktioniert wunderbar.
S=R3/MAX(R:R)*100

Mit T und U habe ich noch meine Probleme. Die Formeln sehen momentan so aus:
T=IF((R3*N3)>0; R3/N3; "N/A")
U=IF((R3*Q3)>0; R3/Q3; "N/A")
Absolute Werte bekommen ich so durch einfaches Teilen hin. Sollte ich für eine CPU keinen
Preis, keine TDP oder keine Benchmarkwerte gefunden haben, so wird dies per Multiplikation
der beiden Werte überprüft und mit "N/A" quittiert.

Nur bekomme ich keine relativen Zahlen in die Felder. Wenn ich in Spalte T ein MAX(T:T)
einfüge, bekomme ich eine Warnung, dass ich eine mathematische Schleife gebildet habe
und das Programm gibt 0 aus. Irgendwie logisch, die Formel bezieht sich ja auch auf sich
selbst.

Versuchsweise habe ich in V und W jeweils Rx/Nx und Rx/Qx mit weißer Schrift versteckt und
mich in T und U darauf bezogen. So konnte ich die Maximalwerte aus den versteckten Feldern
checken lassen und die Formel bezog sich nicht auf sich selbst.

Allerdings muss es da doch eine elegantere Lösung geben! Und ich finde sie einfach nicht.
Nochmal zum Verständnis: ich will aus den absoluten Zahlen ohne Einheit und Bezug
Prozentangaben machen - so wie in Spalte S. Nur WIE?

Dann noch eine Frage am Rande - kann ich in die Formeln irgendwie eine Farbgebung einfügen?
z.B., dass bei einem Prozentwert über 50% das Feld dunkelgrün wird, zwischen 25 und 50%
hellgrün, zwischen 12,5 und 25% grüngelb, zwischen 6,25 und 12,5% gelb... und so weiter.
Geht das?

Danke schon einmal.
 

Anhänge

  • excel.png
    excel.png
    198,2 KB · Aufrufe: 275
Zuletzt bearbeitet:
Benutzerdefinierte Formatierung ist das Zauberwort für die Farbschemas.
Hier kannst du definieren was für eine Zelle (oder einen Bereich) passieren soll.
Quasi:
Bedingung: Zellwert > 50% Formatierung: Schrift Rot oder Hintergrund rot oder so.
 
Du könntest Excel in den iterativen Modus schalten (müsste er dir eigentlich anbieten sobald du eine Formel mit Selbstbezug erstellst). Dann wird die automatische Aktualisiereung abgeschalten und du kannst mit Selbstbezug rechnen ohne das Endlosschleifen entstehen. Du musst halt nur nachdem du Werte geändert hast einmal per hand die Neuberechnung anstoßen.
 
Spricht doch nichts gegen Hilfsspalten, wird häufig benutzt. Man kann die Spalten dann auch ausblenden oder besser gruppieren. Mit weißer Schrift ist natürlich schlecht, da nicht auf den ersten Blick nachvollziehbar.
 
Zu dem Formelproblem:
Es gehen halt keine Zirkelbezüge. Wie sollen die auch gelöst werden?

Du hast ja schon mit Hilfsspalten gearbeitet, das ist die gängige Lösung dafür, wenn du kein Makro benutzen willst.
Damit könnte man so eine Funktion erstellen, aber ist imo unnötig.
Entweder du machst die Spalten weiß oder blendest sie halt aus. Ausgeblendet stören sie ja auch nicht.

Oder du lässt sie stehen. Eine Spalte" Punkte / Watt TDP" hat ja auch eine Aussage.
 
Mirakel schrieb:
Zu dem Formelproblem:
Es gehen halt keine Zirkelbezüge. Wie sollen die auch gelöst werden?

Natürlich gehen die... man darf Excel nur nicht mehr automatisch Rechnen lassen. Ich bin mir nur im angebenen Fall nicht 100%ig sicher ob der TE damit überhaupt zum gewünschten Ergebnis kommt. Ich denke die Hilfsspalten ergeben eher das was er sucht.
 
rsfb schrieb:
Bedingung: Zellwert > 50% Formatierung: Schrift Rot oder Hintergrund rot oder so.
Kannst Du mir das nochmal ausformulieren bitte?
Rechtsklick auf die Felder, "Format Cells", "Custom" und dort was eintragen?

IF(S3>50; Hintergrund dunkelgrün; IF(S3>25; Hintergrund hellgrün; IF(S3>12,5; Hintergrund gelbgrün; IF(S3>6,25; Hintergrund gelb; IF(S3>3,125; Hintergrund orange; IF(S3>1,5625; Hintergrund hellrot; IF(S3<=1,5625; Hintergrund dunkelrot; 0)))))))

Passt das so? :D
Wie geht denn der Befehl um ein Feld einzufärben? Für die Farben werde ich vermutlich Farbcodes
verwenden müssen oder? Beißt sich die Formel im eigentlichen Feld nicht mit der in der
Formatierung? Fragen über Fragen...


Jesterfox schrieb:
Du könntest Excel in den iterativen Modus schalten (müsste er dir eigentlich anbieten sobald du eine Formel mit Selbstbezug erstellst).
Bietet er mir NICHT an, was ist der iterative Modus? :freak:

Du musst halt nur nachdem du Werte geändert hast einmal per hand die Neuberechnung anstoßen.
Genau das möchte ich vermeiden (wobei es zur Not noch akzeptabel wäre, schließlich trage
ich beim Ändern der Werte eh schon etwas ein, da sollte es kein allzu großer Aufwand sein
eine Neuberechnung durchzuführen (wie?)) und Hilfsspalten will ich auch nicht verwenden. Da
muss es doch irgendeine Patentlösung geben...


/edit
Nochmal zu den Hilfsspalten: anzeigen lassen möchte ich sie nicht, daher hatte ich beim Erweitern der
Tabelle schon des öfteren Probleme, alles zu übernehmen. Auch gab es schon Chaos mit irgendwelchen
Bezügen, eine Lösung ohne Hilfsspalten wäre optimal.


/edit2
Achja, noch eine Frage, die vermutlich etwas komplizierter sein wird. Ich kann nicht programmieren,
habe keine Ahnung von Makros und beherrsche auch sonst nur die Excel-Grundfunktionen und ein
klein wenig html... ABER:

Kann ich die Preise beim Öffnen der Tabelle von Geizhals abgreifen lassen??? (wäre ziemlich geil)
Die gh.de-Adressen sind ja schön statisch, das ist sicherlich schonmal eine Hilfe, diese URL führt z.B. zum i5 3470S.
Und die Adresse http://geizhals.de/artikelnummer#ang führt zum aktuell günstigsten Angebot.
Irgendwie müsste man Excel doch dazu bringen können, den Preis bzw. die Zahl aus der
jeweiligen Adresse zu saugen und in das Tabellenfeld einzutragen. Sollte das möglich sein,
würden sich dadurch ungeahnte Möglichkeiten ergeben :D

Beispielsweise könnte man, wenn kein Preis ausgelesen werden kann (die CPU also nicht mehr
verfügbar ist), das Preis-Leistungs-Feld per IF-Bedingung auf den Wert der CPU mit dem
besten P/L-Verhältnis (also 100) setzen und daraus einen Richtpreis für die CPU auf dem
Gebrauchtmarkt errechnen lassen. So könnte man den Preis abhängig von einer P/L von 100 bestimmen
und mit 0,7 multiplizieren lassen und schon hätte man einen vernünftigen Richtpreis zum eBayern ;)

Geht das?!?


/edit3
Nur zur Klarstellung, bevor mich die ersten drauf ansprechen werden:
Ja, ich weiß, dass die TDP nicht den Realverbrauch wiedergibt. Und ja, ich weiß auch, dass Passmark
nicht die einzige Möglichkeit ist, CPUs zu vergleichen und viele Prozessoren in anderen Tests besser
oder schlechter abschneiden. Wenn man sich die Tabelle anschaut sind die Werte aber nachvollziehbar
und zu jeder CPU einen gemessenen Verbrauch plus Cinebench-Performance plus oft nicht reproduzier-
bare Spielewerte plus PCMarks etc. anzugeben würde alleine das erstmalige Erstellen der Tabelle zu
einer unlösbaren Aufgabe machen, von der Gewichtung der einzelnen Werte im Verhältnis zu anderen
und dem Verhalten bei fehlenden Werten (hat ein Pentium III jemals Cinebench 11.5 durchlaufen?)
ganz zu schweigen... ;)
 
Zuletzt bearbeitet:
Hm, das ist irgendwie in jeder Excel-Version anders...

Startknopf - Exceloptionen - Formeln

und dort dann:

Berechnungsoption - Arbeitsmappenerechnung auf manuell
Iterative Berechnung aktivieren anhaken
maiximale iterationszahl auf 1

(könnte bei deiner Excelversion aber etwas anders sein)

Danach gehen Zirkelbezüge und aktualisieren geht z.B. über F9
 
Ich würde dir das gerne ausformulieren.
Das Problem im Moment habe ich nur ein Office 2k3 zur Verfügung. Daheim könnte ich dir die Stelle in einem Office 2007 oder Office 2010 sagen. Aber auch nur in Deutsch (übersetzen kann man die Begriffe aber sicherlich).

Wenn ich das richtig sehe setzt du gerade Office 2012 ein. Das habe ich bisher nicht gesehen und kann dir das daher natürlich auch nicht ganz genau beschreiben. Es könnte sich ja geändert haben.

Grüße

edit: In deinem Screenshot dürfte das "Conditional Formatting" vermutlich die richtige Option sein.
 
Jesterfox schrieb:
Danach gehen Zirkelbezüge und aktualisieren geht z.B. über F9
Auch bei der 2013er ist es so, danke! Habe dafür nun ein Problem mit der Formel an sich:

=IF((R9*N9)>0; (R9/N9)/MAX(R:R)*100; "N/A")

Heißt:

Wenn das Produkt aus Benchmark und TDP nicht null ist (also für beide Felder ein Wert
vorhanden ist) wird die Effizienz aus Benchmarkpunkten durch TDP errechnet. Dabei hat
die effizientere CPU naturgemäß den höheren Wert. Diesen Wert teile ich durch den Wert
der höchsten Effizienz und multiplizieren ihn mit 100.

Meiner Meinung nach müsste da für die effizienteste CPU folgendes rauskommen:

9125 Passmark-Punkte / 45W TDP = 202,7...

geteilt durch den Wert der effizientesten CPU:

202,7... / 202,7... = 1

multipliziert mit 100:

1 * 100 = 100 (%)

Bei mir hat diese CPU nun aber einen Wert von 1,44... warum?!?

Das Problem liegt immer noch am Zirkel - oder? Schließlich soll die CPU einen Effizienz-
Wert von 202,7... und durch die Division gleichzeitig einen Wert von 100 haben.
Fühle mich gerade an die Zeitreisefolgen aus Star Trek erinnert, ergibt irgendwie keinen Sinn :freak:
 
rsfb schrieb:
edit: In deinem Screenshot dürfte das "Conditional Formatting" vermutlich die richtige Option sein.
Tausend Dank, die kannte ich gar nicht, hat wunderbar funktioniert!


Werde dann wohl tatsächlich auf Hilfszeilen ausweichen müssen :( und beim Erweitern der
Tabelle eben das Hirn einschalten müssen, um sie nicht zu vergessen. Elegant ist das trotzdem
nicht.


Hat jemand eine Idee für das Geizhals-Preis-Problem?
 

Anhänge

  • excel2.png
    excel2.png
    215,5 KB · Aufrufe: 227
waps schrieb:
Werde dann wohl tatsächlich auf Hilfszeilen ausweichen müssen :( und beim Erweitern der
Tabelle eben das Hirn einschalten müssen, um sie nicht zu vergessen. Elegant ist das trotzdem
nicht.

Die einfache Version sind Hilfsspalten.
Die Elegante dann eine eine Makro-Funktion.
Damit könntest du z.B. einfach "=Effizienz(N3;R3)" schreiben und es wäre so wie du willst.
Nebenher lernst du noch was VBA.

Es gibt für alles eine Lösung. Ob der Aufwand dann gerechtfertigt ist, ist natürlich eine andere Sache ;)

Ich könnte mir gut vorstellen, dass Geizhals eine API bereithält, mit der man die Preise auslesen lassen kann. Wenn ja, könnte man sich die Daten bestimmt exportieren und in Excel integrieren.
Wenn du die statische Adresse wählst, kannst du dir ggf. auch ein Skript basteln, dass dir die Sachen automatisch aus den öffentlich zugänglichen Daten ausliest. Dafür bräuchte man dann aber in Excel ein Makro oder ein anderes Programm, dass das für dich übernimmt.
 
Ich muss mich mal wirklich in die Makrogeschichte einlesen, weiß nicht einmal genau was das ist. Aber die
Sache klingt interessant. Zumal sich Geizhals-Preise nicht über die "offizielle" webimport-Tool abrufen lassen.

Der Aufwand ist insofern gerechtfertigt, als dass ich die Tabelle mindestens zur Hälfte deshalb gemacht habe,
um ein wenig über Excel zu lernen. Und wenn nebenbei noch ein wenig "Miniprogrammiersprache" dabei ist -
immer gerne ;)
 
Wenn du mit Makros anfangen willst, nimm am besten mal den Makro-Rekorder und mach etwas. Dann generiert dir Excel den Code dafür und du kannst dir ansehen, wie sowas als Makro aussehen könnte.
Selbst geschriebener Code ist fast immer kürzer, da er sich besser zusammenfassen lässt. Der Recorder macht oft Select-Befehle, die man im Makro nicht braucht (aber natürlich dem gemachten Mausklick entsprechen). Probiers einfach mal aus :)
 
Zurück
Oben