
Dies geschieht teilweise zum Spaß und ich hoffe, dass es nicht aus subjektiven Gründen geschlossen wird, denn obwohl die Frage „Welche Lösung ist die eleganteste?“ subjektiv ist, ist die Frage „Die aktuelle Lösung ist kompliziert und hässlich“ für alle offensichtlich.
Wie dem auch sei, ich habe in Blatt1 eine Liste wie diese:
*Thing* *type of thing*
Apple
Orange
Larceny
Cake
Banana
Murder
und in Blatt 2 so:
fruit confectionary crime
Apple x
Orange x
Larceny x
Cake x
Banana x
Murder x
und ich möchte Spalte B in Blatt 1 wie folgt zurückgeben
*Thing* *type of thing*
Apple fruit
Orange fruit
Larceny crime
Cake confectinary
Banana fruit
Murder crime
Ich werde meine aktuelle Lösung als Antwort posten. Sie funktioniert, das gebe ich zu ...
Wie würden Sie dieses Problem angehen?
Antwort1
Hier ist meine Lösung. Index+Match kann verwendet werden, um Werte in einer Tabelle auf beide Arten nachzuschlagen. Dies optimiert die normale Lösung, sodass das x gefunden und die Spaltenüberschrift zurückgegeben wird.
=INDEX($E$1:$G$1,MATCH("x",OFFSET($E$1:$G$1,MATCH(A2,$D$2:$D$7,0),),0))
Ich habe alles auf ein Blatt gelegt, damit es leichter zu sehen ist und die Funktion auch etwas kürzer wird.
Gemäß Barrys Kommentar weiter unten wäre es eine bessere Option, den Offset mit einer anderen Indexfunktion zu vermeiden, damit er nicht volatil ist.
=INDEX($E$1:$G$1,MATCH("x",INDEX($E$2:$G$7,MATCH(A2,$D$2:$D$7,0),0),0))
Antwort2
Für meine aktuelle Lösung habe ich
=MATCH(A1,Sheet1!A1:A10,0)
in Spalte B, wodurch die Zeile zurückgegeben wird, die das Ding in Blatt 2 enthält. So weit, so gut. Aber um dann die Position des x innerhalb dieser Zeile in Blatt 2 zurückzugeben und das richtige Wort auszugeben, habe ich diese Monstrosität, bei der ich eine R1C1-Referenzierung auf eine verknüpfte Zeichenfolge innerhalb einer indirekten Funktion verwende, um die Zeilennummer in eine Referenz umzuwandeln, die ich tatsächlich verwenden kann:
=IF(INDIRECT("sheet2!R"&B1&"C2",0)="X","fruit",IF(INDIRECT("sheet2!R"&B1&"C3",0)="X","confectionary",IF(INDIRECT("sheet2!R"&B1&"C4",0)="X","crime","ERROR")))
Die Zeichenfolge wird dann als "sheet2R[rownumber]C[column]" ausgewertet, was in die indirekte Referenz einfließt (in eine normale Referenz umgewandelt wird), die dann zur if-Anweisung geht, um das Vorhandensein des x in das relevante Wort umzuwandeln.
Antwort3
Hier ist meine bevorzugte Lösung, ein ähnliches Konzept wie das von gtwebb (und vorausgesetzt, Ihre Daten sind wie in seinem Screenshot ausgerichtet), aber es verwendet nicht OFFSET
(was meiner Meinung nach nur verwendet werden sollte, wenn es keine anderen Optionen gibt, weil esflüchtig).
=INDEX($E$1:$G$1,MATCH("x",$E2:$G2,0))