Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
3 years ago

IF Varias columnas iguales a Valor (Power Query M)

Hola, chicos,
Necesito saber si hay una fórmula o función que me permita enumerar columnas y si esas columnas equivalen a un cierto valor en cada fila, quiero devolver algún valor.

Por ejemplo:


A B C D E RESULTADO
VERDADERO VERDADERO VERDADERO VERDADERO VERDADERO
VERDADERO FALSO VERDADERO FALSO FALSO FALSO FALSO

Normalmente, escribiría:

if
[A] = true or
[B] = true or
[C] = true or
[D] = true
then true else false


Pero tengo muchas columnas y esto se está volviendo realmente desordenado, me gustaría ver si hay una función para ello, similar a List.Contains.

Así que idealmente algo como esto:

if ColumnContains({"A","B","C","D"}, true) = true then true else false


Y quiero hacerlo en Power Query M para cada fila.

Lo siento por el formato, pero no me permitió usar la tabla de alguna manera.

5 Replies

  • Puedes usar List.MatchesAny pero ¿cuál es la lógica de que la segunda línea sea igual a FALSE? Si sigue la lógica del código que proporcionó (cada condición con una 'o'), es VERDADERO

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @HotChilli ,
      Sí, mi mal, realmente no verifiqué la lógica, fue solo para dar un ejemplo, que necesito verificar varias columnas.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @HotChilli
      Así que utilicé tu lógica y es correcta, gracias, HotChilli.

      List.MatchesAny({[A], [B], [C], [D]}, each _ = true)
  • = Table.AddColumn(#"Changed Type", "Result", each not (List.PositionOf(Record.ToList(_),false)<>-1))

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @CNENFRNL
      Gracias por el esfuerzo, esto comprueba si cada columna es VERDADERA, ¿verdad?
      Esto no me conviene, muy bien, en mi escenario real, pero estoy de acuerdo, mi ejemplo no fue el mejor.

      Así que gracias por el esfuerzo.