SVERWEIS, falls vorhanden, anderen Wert verwenden

SVERWEIS, falls vorhanden, anderen Wert verwenden

Tut mir leid, ich bin nicht so gut mit Excel, aber was ich erreichen möchte, ist diese vertikale Verweisfunktion in Zelle R7 von Blatt1:

=VLOOKUP(F2,config!F2:H20,3,FALSE)

Zeigt eine Zimmernummer an, z. B.1

Wenn der Raum jedoch bereits in der Spalte vorhanden ist, möchte ich, dass in der SVERWEIS-Funktion ein anderer Wert gefunden wird, der noch nicht in der Spalte vorhanden ist.

Ich überprüfe, ob es in der Spalte vorhanden ist, indem ich Folgendes verwende (befindet sich in Tabelle 1, Zelle R8):

=COUNTIF(E2:E20,R7)>0

Wenn diese Abfrage also FALSCH ist, können Sie die obige SVERWEIS-Funktion verwenden. Wenn sie jedoch WAHR zurückgibt, sollte die Suche fortgesetzt werden, bis eine Abfrage mit FALSCH gefunden wird.

Blatt1:

Bildbeschreibung hier eingeben

Konfigurationsblatt:

Bildbeschreibung hier eingeben

Hoffe das macht Sinn

Antwort1

Die Idee scheint also zu sein, dass Sie eine Liste der Zimmer wünschen, die noch nicht reserviert sind. Aus dieser Liste wählen Sie anhand einiger nützlicher Kriterien ein Zimmer aus.

Ich würde das anders angehen, als Sie es versuchen. Ich würde:

  1. Erstellen Sie irgendwo eine Liste aller verfügbaren Zimmer. Vielleicht ist es eine einfache Liste von 1 bis 100, vielleicht auch eine kompliziertere. Erstellen Sie sie in einer Tabelle auf einem Hilfsblatt, das Sie verbergen oder nicht. Erstellen Sie sie als benannten Bereich, damit sie praktisch, aber außer Sichtweite ist und von Benutzern leicht „verstümmelt“ werden kann.

  2. Nehmen Sie es und entfernen Sie die Räume, die sich in der Spalte „Verpflichtet“ befinden („Raum“ auf Blatt1).

  3. Wählen Sie eine Methode aus, um auszuwählen, welche der verbleibenden Räume reserviert werden sollen.

Im Folgenden erstelle ich eine Liste der Räume 1-12 in C1:C12. Die Liste der bereits reservierten Räume befindet sich in A1:A4. Sie können diese Bereiche entsprechend ändern: Verwenden Sie die Liste aller Räume, die Sie erstellt haben, und die Spalte „Raum“ in Blatt1. Dann führe ich einen Vergleich jedes Raums in der Liste „Vorhanden“ mit denen in der Liste „Reserviert“ durch.

Auf der innersten Ebene davon wird IF()dieser Vergleich durchgeführt. Es gibt ein ""Ergebnis für WAHRE (bereits fest gebuchte) Räume. Ich habe ein Ergebnis für FALSCHES angegeben, aber in Wahrheit spielt das keine Rolle und kann weggelassen werden, wenn das fehlende Argument in einem Jahr, wenn Sie die Tabelle aktualisieren möchten, nicht verwirrend ist. Viele würden es verwirrend finden, also habe ich es eingefügt. Aber manche würden DAS verwirrend finden, also „würzen Sie nach Geschmack“.

Der Grund, warum es keine Rolle spielt, ist, dass der Test einen Fehler für Räume erzeugt, die noch nicht festgeschrieben sind, und anhält, ohne jemals das Ergebnis FALSCH zu erhalten. Sie möchten eigentlich alle Räume, die Fehler verursachen. Also umschließe ich das mit einem , IFERROR()um sie abzufangen und ihnen ein nützliches Ergebnis zu liefern: welcher Wert auch immer getestet wird. Das alles ergibt also eine Menge Leerzeichen und eine Menge nicht festgeschriebener Räume.

Ich habe UNIQUE()die Anzahl der Leerzeichen immer auf nur 1 reduziert. Jetzt haben Sie also eine Liste mit nicht belegten Räumen und ein Leerzeichen. Wenn Sie das nicht haben UNIQUE()(die Frage ist von 2019 und der Verfasser hat es vielleicht oder vielleicht auch nicht, aber jeder mit einer früheren Version hätte es nicht), können Sie den folgenden Schritt etwas anders ausführen.

Als nächstes habe ich SORT()das Ergebnis mit -ed versehen, um sie in die richtige Reihenfolge zu bringen. Nicht notwendig, wenn das keine Rolle spielt, und nicht notwendig, wenn Ihre Liste der „vorhandenen“ Räume von Anfang an in der richtigen Reihenfolge ist. Aber es setzt das Leerzeichen ans Ende. Wenn Sie das nicht können, SORT()weil Sie die Funktion nicht haben, wird das Leerzeichen ans Ende gesetzt. Wenn es ans Ende gesetzt ist, kann ich das ERSTE „alle bis auf ein Zimmer“ auswählen, sodass INDEX()das Leerzeichen weg ist. Das ist einfacher, als das LETZTE „alle bis auf ein Zimmer“ auszuwählen, um es zu entfernen. Leichter zu verstehen. Es ist nicht besonders schwer zu machen, aber komplizierter, sodass es in einem Jahr schwieriger ist, es nachzuvollziehen.

Wenn Sie die Lücken nicht auf nur 1 reduzieren konnten, führen Sie nicht die Operation COUNTA()auf die Ergebnisse aus, wie ich es tue, und ziehen Sie davon 1 ab, sondern führen Sie die Operation COUNTA()auf die Ergebnisse aus und ziehen Sie davon a COUNTA()der „festgelegten“ Räume ab.

Da ich nur die einspaltige Eingabe als einspaltiges Ergebnis haben möchte, INDEX()ist die Verwendung von „1“ für das Spaltenargument in nicht unbedingt erforderlich … manchmal. Wenn Sie eine Form von verwenden, ROW(1:xxx)wie ich es hier tue (weil … 2019 und so weiter), ist dies nicht erforderlich. Aber wenn Sie es heute tun und die nette SEQUENCE()Funktion verwenden, wird es sicherlich benötigt. Aus welchem ​​Grund auch immer, wenn man es für einen Wert in verwendet INDEX(), muss man normalerweise den anderen Wert angeben, ob das nun viel Sinn macht oder nicht.

Wie dem auch sei, Sie haben jetzt eine geordnete (auf die eine oder andere Weise) Liste noch nicht „festgelegter“ Räume. Sie können sie mit einer anderen Liste auswählen, INDEX()die sie umschließt, indem Sie ,1,1für Zeile und Spalte verwenden, oder Sie können RANDBETWEEN()„1“ und eine Formel verwenden, um die verbleibenden nicht „festgelegten“ Räume zu zählen. Vielleicht nur ein , MIN()um den nicht „festgelegten“ Raum mit der niedrigsten Nummer auszuwählen. Oder … nun, Sie verstehen schon. Es gibt viele Möglichkeiten. Verwenden Sie RANDBETWEEN()eine geeignete Methode, um die Räume zufällig zu verteilen, wenn die zufällige Raumnutzung wichtig ist, oder wählen Sie einfach den einfachen Weg mit , MIN()wenn nicht. Welche Idee Ihnen auch immer am besten erscheint. Sie könnten es sogar in der Liste der „vorhandenen“ Räume tun, indem Sie sie auf eine nicht sequenzielle Weise sortieren. Es gibt viele Möglichkeiten, das zu tun.

Antwort2

Sie können Folgendes versuchen:

Bildbeschreibung hier eingeben

Formel in Zelle J2:

=WENN(UND(F2="Ja",I2="Ja"),"",WENN(F2="Ja",INDEX(H2:H11,VERGLEICH("Nein",I2:I11,0)),""))

Achtung

  • Zum besseren Verständnis habe ich in Spalte I Werte hinzugefügt. Sie können diese nach Bedarf ändern.
  • Passen Sie die Zellbezüge in der Formel nach Bedarf an.

verwandte Informationen