Acceso al contenido de una columna utilizando el número de la columna, no su nombre

Un usuario Pregunto ✅

marcp2

Hola

Intento comparar el contenido de dos columnas. Es fácil cuando conoce el nombre de las columnas que tiene que comparar.

Si tengo una columna A y una columna B, lo hago

SI UNA

Pero, en mi caso, tengo muchos pares de columnas para probar y necesito iterar con el número de la columna.

Entonces necesito algo así

IF Col (0)

Encontré la manera de iterar con una función recursiva pero no sé cómo acceder al contenido de la columna número X

Aquí está la función que intenté hacer. Siempre tengo Falso cualquiera que sea el contenido de las columnas comparadas:

(Tabla como tabla, Índice como número, NumCols como número) como tabla =>
dejar
ColumnsAdded_ = Table.AddColumn (Tabla,
«T _» & Table.ColumnNames (Table) {Index},
cada uno si Table.ColumnNames (Table) {Index} = Table.ColumnNames (Table) {Index + 289} entonces verdadero si no falso),
ColumnsAdded = if (Index en
ColumnsAdded

Usted me podría ayudar ?

Gracias por tu ayuda

Saludos

Bagazo

Edhans

Esta fórmula comparará la columna n. ° 4 con la columna n. ° 5 (indexa en cero, por lo que la primera columna es 0) y devolverá verdadero o falso.

if Record.Field(_, Table.ColumnNames(#"Changed Type"){3}) > Record.Field(_, Table.ColumnNames(#"Changed Type"){4}) then true else false

El nombre de la tabla # «Tipo cambiado» es la tabla devuelta en el paso anterior de mi consulta de muestra que hice para probar esto. Simplemente haga referencia a su paso anterior. Podría ser solo Fuente si es el primer paso después de que se importa la tabla.

Edhans

Esta fórmula comparará la columna n. ° 4 con la columna n. ° 5 (indexa en cero, por lo que la primera columna es 0) y devolverá verdadero o falso.

if Record.Field(_, Table.ColumnNames(#"Changed Type"){3}) > Record.Field(_, Table.ColumnNames(#"Changed Type"){4}) then true else false

El nombre de la tabla # «Tipo cambiado» es la tabla devuelta en el paso anterior de mi consulta de muestra que hice para probar esto. Simplemente haga referencia a su paso anterior. Podría ser solo Fuente si es el primer paso después de que se importa la tabla.

marcp2

En respuesta a Edhans

Hola edhans

Eso es genial, es extraordinario lo que podemos hacer con unas pocas líneas de código M.

Muchísimas gracias !! 🙂

Entonces, este es el código de función final que incluye su ayuda

(Table as table, Index as number, NumCols as number) as table =>
    let
        ColumnsAdded_=Table.AddColumn(Table,
                                     "T_"&Table.ColumnNames(Table){Index},
                                       each if Record.Field(_, Table.ColumnNames(Table){Index}) > Record.Field(_, Table.ColumnNames(Table){Index+289}) then true else false),
        ColumnsAdded = if (Index < NumCols) then @AddColumn( ColumnsAdded_, Index + 1, NumCols ) else Table
    in
        ColumnsAdded

Atentamente

Bagazo

Deja un comentario

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