Clever-Excel-Forum

Normale Version: Lookup-Formel gesucht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe hier ein ziemlich kompliziertes mathematisches Problem zu lösen. Eigentlich wollte ich fragen, wie das mit einer Excel-Formel geht, aber ich kann es ja schon nichtmal beschreiben. Also gehe ich einen anderen Weg: Ich überlege mir die Lösungen für alle Zahlen von 1 bis 16 (mehr brauche ich nicht) und möchte die von Excel nur übersetzt haben.

So eine Übersetzung geht wie folgt:

1 → 1
2 → 1
3 → 3
4 → 1
5 → 4
6 → 3
7 → 4
8 → 2
9 → 4
10 → 2
11 → 4
12 → 3
usw.

Das könnte ich jetzt mit 16-fach verschachtelten Wenndann-Funktionen machen. Gibt's da nicht auch was einfacheres, wo ich nur beide Listen (oder nur die Ergebnisliste) angebe? Sozusagen das hier in J‌avaScript:

n => [1, 1, 3, 1, 4, 3, 4, 2, 4, 2, 4, 3, ...][n - 1]

Oder in SQL:

case n when 1 then 1 when 2 then 1 when 3 then 3 when 4 then 1 when 5 then 4 ... end
Hola,

erstell die Liste mit den Werten und was daraus werden soll und hol dir die Werte mit einem Sverweis.
https://www.online-excel.de/excel/singsel.php?f=9
Gruß,
steve1da
Hallöchen,

oder auch ohne Liste im Prinzip so. Für gleiche Ergebnisse könnte man die Prüfungen auch mit ODER zusammenfassen.

Arbeitsblatt mit dem Namen 'Tabelle1'
AB
111
221
333

ZelleFormel
B1=(A1=1)*1+(A1=2)*1+(A1=3)*3
B2=(A2=1)*1+(A2=2)*1+(A2=3)*3
B3=(A3=1)*1+(A3=2)*1+(A3=3)*3
Verwendete Systemkomponenten: [Windows (64-bit) NT 10.00] / MS Excel 365
Diese Tabelle wurde mit Tab2Html (v2.7.2) erstellt. ©Gerd alias Bamberg

oder noch einfacher nach diesem Prinzip - in geschweiften Klammern kommt Deine Ergebnisliste:
=--INDEX({"1"."1"."3"."1"."4"};1;A1)
Hi,

noch 'ne Variante (funktioniert allerdings nur mit einstelligen Ergebnissen:
=--TEIL("1131433424243...";A1;1)

Und noch eins:
=WAHL(A1;1;1;3;1;...)

Meist wird jedoch dies verwendet:
Die schreibst deine Ergebnisse untereinander z.B. von X2:X17 und verwendest dann die Formel
=INDEX($X$2:$X$17;A1)
Wenn deine Ausgangswerte höhere Zahlen sind, dann in Y2:Y17 die Ausgangswerte (aufsteigend sortiert) und in Z2:Z17 die Ergebnisse
=SVERWEIS(A1;$Y$2:$Z$17;2;WAHR)
Aber Achtung! Wenn hier ein nicht vorhandener Ausgangswert in A1 steht liefert die Formel dennoch ein Ergebnis und zwar vom nächst kleineren Wert. Ist die Ausgangsliste nicht sortiert wird meist ein falsches Ergebnis zurückgegeben. Bei 
=SVERWEIS(A1;$Y$2:$Z$17;2;FALSCH)
passiert beides nicht. Kommt der Ausgangswert nicht vor, gibt es einen Fehler. Die Spalte muss nicht sortiert sein, Dafür benötige der Befehl aber erheblich mehr Rechenzeit.

Bei neuem Excel gibt es auch
=XVERWEIS(A1;$Y$2:$Y$17;$Z$2:$Z$17;"kein Wert;0;2)
das ist schnell (wenn sortiert), liefert auf Wunsch genaue Ergebnisse und nicht unbedingt einen Fehler, sondern eine beliebige Reaktion darauf (hier "kein Wert"). Außerdem braucht die Suchspalte nicht unbedingt links von der Ergebnisspalte und auf gleicher Höhe stehen.

In deinem Fall (Ausgangswerte 1:16) dürfte die INDEX-Variante das Einfachste sein.
Danke, die WAHL-Funktion ist noch besser als die lange Multiplikation. Und sie scheint auch sehr vielseitig einsetzbar zu sein. Praktisch genau das if-then-else-else-..., das ich gesucht habe! Smile
REST iVm INDEX ist WAHL noch überlegen (und kürzer), wenn die Maximalzahl Argumente überschritten wird.
Ja, klar, für große Datenmengen ist ein separater Ort für die Daten sicherlich besser geeignet. Ich wollte mir diese separate Ablage sparen und einfach alles in einer Formel haben. Für solchen Kleinkram …