BUSCARV, si existe use otro valor

BUSCARV, si existe use otro valor

Lo siento, no soy muy bueno con Excel, pero lo que estoy tratando de lograr es esta búsqueda virtual ubicada en la celda R7 de la hoja 1:

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

Que muestra un número de habitación, por ejemplo1

Sin embargo, si la sala ya existe en la columna, quiero que encuentre otro valor en BUSCARV que aún no exista en la columna.

Compruebo si existe en la columna usando (ubicado en la celda R8 de la hoja 1):

=COUNTIF(E2:E20,R7)>0

Entonces, si esta consulta es FALSA, entonces está bien usar la BUSCARV anterior, pero si devuelve VERDADERO, debe seguir buscando hasta encontrar una que sea FALSA.

Hoja1:

ingrese la descripción de la imagen aquí

hoja de configuración:

ingrese la descripción de la imagen aquí

Espero que esto tenga sentido

Respuesta1

Entonces, la idea parece ser que desea una lista de salas que aún no están comprometidas. A partir de ahí, seleccionará uno según algunos criterios útiles.

Yo abordaría eso de manera diferente a cómo lo estás intentando. Identificación:

  1. Crea una lista en algún lugar de todas las habitaciones disponibles. Quizás sea un 1-100 simple, quizás más complicado. Créelo en una tabla en una hoja auxiliar que mantenga oculta o no. Créelo como un rango con nombre para que sea útil pero esté fuera de la vista y sea fácil de "destrozar" por parte de los usuarios.

  2. Tómelo y elimine las habitaciones que están en la columna comprometida ("Habitación" en la Hoja1).

  3. Elija un método para seleccionar cuál de las salas restantes comprometerse.

A continuación, creo una lista de las habitaciones 1 a 12 en C1:C12. La lista de salas ya comprometidas está en A1:A4. Cambiaría esos rangos para adaptarlos: use la lista de todas las habitaciones que creó y la columna Habitación en la Hoja1. Luego hago una comparación de cada habitación en la lista "existe" con las de la lista "comprometida".

En el nivel más interno de eso está IF()hacer esa comparación. Tiene un ""resultado para salas VERDADERAS (ya comprometidas). Le di un resultado FALSO, pero en verdad, eso no importa y podría omitirse si el argumento que falta no resulta desconcertante dentro de un año cuando desee actualizar la hoja de cálculo. A muchos les resultaría desconcertante, así que lo puse. Pero a algunos les resultaría ESO confuso, así que "sazone al gusto".

La razón por la que no importa es que la prueba producirá un error para las salas que aún no están confirmadas y se detendrá, sin llegar nunca al resultado FALSO. En realidad, quieres todas esas salas que dan errores. Así que lo envuelvo con un IFERROR()para capturarlos y darles algún resultado útil: cualquier valor que se esté probando. Entonces todo eso te da un montón de espacios en blanco y un montón de espacios no comprometidos.

Solía UNIQUE()​​reducir el número de espacios en blanco a solo 1. Así que ahora tienes una lista de salas no comprometidas y un espacio en blanco. Si no la tiene UNIQUE()(la pregunta es de 2019 y el cartel puede tenerla o no, pero cualquiera con una versión anterior no la tendría), puede realizar el siguiente paso, aunque de forma ligeramente diferente.

Luego SORT()modifiqué el resultado para ordenarlos. No es necesario si eso no importa, y no es necesario si su lista de habitaciones "existentes" está en orden para empezar. Pero deja el espacio en blanco al final. Si no puedes SORT()porque no tienes la función, el espacio en blanco será el primero. Tenerlo al final me permite seleccionar la PRIMERA "habitación todas menos una" INDEX()para que desaparezca el espacio en blanco. Eso es más fácil que seleccionar la ÚLTIMA "habitación todas menos una" para eliminarla. Más fácil de entender. No es particularmente difícil de hacer, pero es más complicado y más difícil de seguir dentro de un año.

Si no puede reducir los espacios en blanco a solo 1, entonces en lugar de hacer lo COUNTA()que hago con los resultados y restarle 1, haga lo COUNTA()de los resultados y reste una COUNTA()de las habitaciones "comprometidas".

Como solo quiero la entrada de una sola columna como resultado de una sola columna, usar "1" para el argumento de la columna INDEX()no es estrictamente necesario... a veces. Si se utiliza una forma ROW(1:xxx)como la que hago aquí (porque... 2019 y demás), no es necesaria. Pero si lo hace hoy y utiliza la SEQUENCE()función agradable, seguramente será necesaria. Por alguna razón, si se usa para un valor en INDEX(), generalmente hay que especificar el otro valor, tenga mucho sentido o no.

De todos modos, ahora tiene una lista ordenada (de una manera u otra) de salas que aún no están "comprometidas". Puede seleccionarlo con otro INDEX()envuelto alrededor usando ,1,1fila y columna, o volverse loco RANDBETWEEN()usando "1" y una fórmula para contar las habitaciones restantes no "comprometidas". Quizás simplemente MIN()seleccione la habitación con el número más bajo y no "comprometida". O... bueno, ya entiendes la idea. De muchas maneras. Aleatorice de RANDBETWEEN()alguna manera apropiada si aleatorizar el uso de la sala es importante, o simplemente tome la ruta más fácil MIN()si no. Cualquier idea que te parezca mejor. Incluso podría hacerlo en la lista de salas "existentes" ordenándolas de alguna manera no secuencial. Muchas maneras de hacerlo.

Respuesta2

Puedes probar esto:

ingrese la descripción de la imagen aquí

Fórmula en la celda J2:

=SI(Y(F2="Sí",I2="Sí")",",SI(F2="Sí",INDEX(H2:H11,MATCH("No",I2:I11,0))," "))

NÓTESE BIEN

  • Para una mejor comprensión, he agregado valor en la Columna I, puede modificarlos según sus necesidades.
  • Ajuste las referencias de celda en la fórmula según sea necesario.

información relacionada