es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Comprobar si una cadena está presente en una columna solo donde la celda precedente contiene una X?

Estoy tratando de averiguar si se ha programado a un individuo para que otra hoja pueda hacer referencia a ese hecho.

La hoja de nombre:

https://i.stack.imgur.com/05B9R.png

La otra hoja se ve algo así:

https://i.stack.imgur.com/tbsL3.png

Entonces, ‘x’ aparece para AM si ‘Brooke’ está programada en AM para ese día. Pero no para PM si aún no ha sido programada para PM (en este caso, lo ha sido, pero este es solo un ejemplo).

¿Hay alguna manera de hacer algo así como verificar si una cadena está presente en una columna solo para las filas donde la celda precedente es una cadena ‘x’? También tendría que tener en cuenta las celdas fusionadas.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar una combinación de las funciones FLATTEN y TEXTJOIN en Google Sheets para lograr esta tarea.

    Primero, usa la función FLATTEN para convertir el rango de celdas combinadas en un arreglo unidimensional. Por ejemplo, si el rango es A2:B2 y A2 está combinada con B2, utilizarías FLATTEN(A2:B2). Esto creará un arreglo de una sola fila con el contenido de las celdas combinadas.

    Luego, usa la función TEXTJOIN para concatenar el contenido de cada celda en el arreglo, utilizando un delimitador de tu elección. Por ejemplo, si el arreglo contiene “AM” en A2 y “Brooke” en B2, utilizarías TEXTJOIN(“,”, true, A2:B2). Esto creará una cadena única que contiene “AM,Brooke”.

    Finalmente, usa las funciones SEARCH o FIND para verificar si la cadena “Brooke” está presente solo cuando la celda anterior contiene “x”. Puedes lograr esto utilizando una combinación de las funciones INDEX, MATCH e IF. Por ejemplo, si el rango que deseas verificar es A2:B10, utilizarías la siguiente fórmula:

    =IF(INDEX(A2:A10,MATCH("x",A2:A10,0))="x",IFERROR(SEARCH("Brooke",TEXTJOIN(",", true, FLATTEN(B2:B10))), false), false)
    

    Esta fórmula verifica si la primera aparición de “x” en la columna A está en la misma fila que la celda que estás verificando (utilizando INDEX y MATCH). Si es así, entonces verifica si la cadena “Brooke” aparece en la cadena concatenada utilizando SEARCH (o FIND). Si la cadena está presente, devuelve VERDADERO, de lo contrario devuelve FALSO.

    Ten en cuenta que esta fórmula asume que los valores “x” aparecen solo una vez en la columna A y que los rangos de celdas combinadas que estás verificando se encuentran en la columna B. Es posible que necesites ajustar la fórmula para adaptarla a tu escenario específico.

Comments are closed.