¿Cómo utilizar el nombre de la columna en la fórmula?Tengo la siguiente tabla. Necesito encontrar la suma de (TA008+SA2900 a SA2950+SA3400 a SA3500+TA99) para cada elemento. ¿Cómo puede jsl hacer esto?
| Artículo | SA0100 | SA0801 | SA0804 | SA0817 | SA0818 | SA0871 | SA0874 | SA2930 | SA2950 | SA2982 | SA2983 | SA2984 | SA3403 | SA3404 | SA3422 | SA3423 | SA3424 | SA3452 | SA3474 | SA3476 | SA3477 | SA3491 | SA3534 | SA9706 | SA9787 | SA9798 | SA9901 | SA9908 | TA001 | TA008 | TA029 | TA034 | TA035 | TA088 | TA097 | TA099 |
| 8A630 | 12 | | 2 | | | | | | | | | | | | | | | | | | | | | | | | | 7 | 12 | 2 | | | | | | 7 |
| 8A631 | 18 | 1 | 4 | | | 1 | | | | | | | | | | | | | | | | | | | | | | 11 | 18 | 6 | | | | | | 11 |
| 8A632 | 12 | | 1 | | 3 | 1 | | | | | | | | | | | | | | | | | | | | | | 21 | 12 | 5 | | | | | | 21 |
| A633 | 81 | | 1 | | 2 | 2 | | | | | | | | | | | | | | | | | | | 1 | | | 13 | 81 | 5 | | | | | 1 | 13 |
| A629 | 249 | | | 1 | | 2 | | | | | | | | | | | | | | | | | | | 1 | | | 33 | 249 | 3 | | | | | 1 | 33 |
| A626 | 380 | | | | 2 | 3 | | | | | | | | | | | | | | | | | | | | | | 13 | 380 | 5 | | | | | | 13 |
| A600 | 11 | | 1 | | | | 1 | | | | | | | | | | | | | | | | | 1 | | | | 3 | 11 | 2 | | | | | 1 | 3 |
Automatización y secuencias de comandosCombinación y limpieza de datosLa personalización en masaRe: ¿Cómo utilizar el nombre de la columna en la fórmula?Aquí hay otra forma de manejar las columnas para crear una fórmula:
// expression way
cdt=current data table();
sum_lst2 = {};
col_lst2 = cdt << get column names( Numeric );
For( i = 1, i <= N Items( col_lst2 ), i++,
colname = Column( col_lst2[i] ) << get name;
If( Contains( {"TA008", "TA099"}, colname ) | (colname >= "SA2900" & colname <= "SA2950") | (colname >= "SA3400" & colname <= "SA3550"),
Insert Into( sum_lst2, col_lst2[i] )
);
);
Eval( Eval Expr( cdt << New Column( "Sums_expr", formula( Sum( Expr( sum_lst2 ) ) ) ) ) );Re: ¿Cómo utilizar el nombre de la columna en la fórmula?Ah... ese requisito no estaba indicado en la pregunta original.
Sin embargo, el código para hacer lo que quieres es repetitivo, pero no difícil.
names default to here(1);
dt=current data table();
colNames = dt << get column names(string);
sumList = "";
if(contains(colNames,"TA008"),
sumList = ":TA008";
);
For(i=2900, i<=2950, i++,
If( contains(colNames,"SA" || char(i)),
if( sumList != "", sumList = sumList || ",");
sumList = sumList || ":SA" || char(i);
)
);
For(i=3400, i<=3500, i++,
If( contains(colNames,"SA" || char(i)),
if( sumList != "", sumList = sumList || ",");
sumList = sumList || ":SA" || char(i);
)
);
if(contains(colNames,"TA099"),
if( sumList != "", sumList = sumList || ",");
sumList = sumList || ":TA099";
);
Eval(
Parse(
"dt << new column(\!"Sums\!",formula(sum( " || sumList ||
" )));"
)
);
Re: ¿Cómo utilizar el nombre de la columna en la fórmula?El conjunto de datos es dinámico. Podría tener columnas con los nombres SA3400 a SA3450 y SA2900 a SA2950. Tendría que mencionar más de 100 nombres de columnas si siguiera este enfoque. Intentando encontrar una manera de simplificar.
Re: ¿Cómo utilizar el nombre de la columna en la fórmula?Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Sums",
formula(
Sum(
:SA2930,
:SA2950,
:SA3403,
:SA3404,
:SA3422,
:SA3423,
:SA3424,
:SA3452,
:SA3474,
:SA3476,
:SA3477,
:SA3491,
:TA008,
:TA099
)
)
);
Lo anterior agregará una nueva columna a su tabla de datos y la suma se agregará de las columnas requeridas a la nueva columna.
