Declaración If – Expression.Error: no podemos convertir el valor para escribir texto

Un usuario Pregunto ✅

pmc086

Tratando de hacer lo que pensé que era una simple declaración if anidada en power query. Use la función ‘agregar columna personalizada’ para construir esto rápidamente.

La fórmula M resultante es:

= Table.AddColumn(#»Columnas reordenadas», «Calificación», cada una si [Grade Original] = «Prep» y luego 0 si no Text.Start([Grade Original],1) = «7» luego 7 más -1)

Anotación 2019-10-24 103207.png

Como puede ver en lo anterior, la primera evaluación de la declaración if funciona, al igual que el else if. Se está cayendo en la declaración else que pensé que sería bastante simple (en realidad quiero devolver el [Original Grade] columna como el resto, pero lo simplificó para depurar.

No importa qué valor intente y coloque en la declaración ‘else’ (probé una cadena, número, nulo), arroja el mismo error (a continuación). Por mi vida, no puedo averiguar cuál es el problema, pero sería genial si alguien pudiera proporcionar alguna información.

Anotación 2019-10-24 103208.png

Si es importante, estoy usando Power Query en Excel y tengo la última versión de Office 365. He intentado buscar errores similares pero no puedo encontrar nada que funcione.

Gracias por adelantado.

mcybulski

El tipo de datos para las filas que fallan son números, por lo que la expresión Texto.Inicio([Grade Original],1) está devolviendo el error. Cambie el tipo de columna a texto antes de agregar la columna o modifique la fórmula como se muestra a continuación:

= Table.AddColumn(#»Columnas reordenadas», «Calificación», cada una si [Grade Original] = «Prep» y luego 0 si no Text.Start(Texto.Desde([Grade Original]),1) = «7» luego 7 más -1)

mcybulski

El tipo de datos para las filas que fallan son números, por lo que la expresión Texto.Inicio([Grade Original],1) está devolviendo el error. Cambie el tipo de columna a texto antes de agregar la columna o modifique la fórmula como se muestra a continuación:

= Table.AddColumn(#»Columnas reordenadas», «Calificación», cada una si [Grade Original] = «Prep» y luego 0 si no Text.Start(Texto.Desde([Grade Original]),1) = «7» luego 7 más -1)

pmc086

En respuesta a mcybulski

¡Gracias! Sí, esa fue la solución. Ni siquiera había mirado esa parte de la fórmula, ya que estaba evaluando correctamente la condición que quería. Tiene total sentido ahora que he sido iluminado.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *