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.

Función FILTER() donde los valores existen en un rango

Deje que el rango con nombre “servicioPrestado” sea una columna de valores donde hay múltiples “servicios” dentro de la celda separados por comas. Ejemplo: “Pases de autobús, Servicio de alimentos” OR “Servicio de alimentos, Planificación de acciones” etc.

Deje que el rango con nombre “ListaDeServicios” contenga cada servicio en la columna. Entonces A2 = “Pases de autobús”, A3 = “Servicio de alimentos” etc.

Esta es la fórmula actual.

=filter(servicioPrestado, servicioPrestado <> "", servicioPrestado <> "N/A")

Pero en algún lugar de esa fórmula quiero agregar:

, servicioPrestado existe en ListaDeServicios.

Para ser más específico, quiero que cada palabra dentro de las celdas en servicioPrestado EXISTA dentro del rango ListaDeServicios. Entonces, si hay una celda en servicioPrestado que dice “Servicio de alimentos, Pases de autobús”, quiero que la fórmula la incluya porque “Servicio de alimentos” y “Pases de autobús” existen en el rango ListaDeServicios.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar la condición de que cada palabra dentro de las celdas en serviceRendered exista en el rango nombrado ListOfServices, puedes utilizar la siguiente fórmula:

    =filter(serviceRendered, 
      serviceRendered <>"", 
      serviceRendered<>"N/A", 
      ArrayFormula(
        regexmatch(
          split(serviceRendered, ", "),
          "^"&join("$|^", ListOfServices)&"$"
        )
      )
    )
    

    Esta fórmula utiliza la función regexmatch para verificar si cada palabra dentro de las celdas en serviceRendered existe en el rango nombrado ListOfServices.

    Primero, se utiliza la función split para dividir los valores separados por comas en un array de palabras.

    Luego, se utiliza la función regexmatch para comparar cada palabra con el rango nombrado ListOfServices al unirla con el símbolo de barra vertical (|) como operador OR. Los símbolos ^ y $ se agregan al principio y al final de la cadena unida para asegurarse de que coincida con la palabra completa.

    Finalmente, se utiliza ArrayFormula para aplicar esta comparación a cada palabra en el array y devolver un valor booleano, que luego se filtra utilizando la función filter como antes.

Comments are closed.