Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola.
Tengo un problema bastante raro para el que no encuentro solución.
Tengo estos datos en un excel (escritos justo así, respetando separadores decimales y de miles):
Dim1 | Exp1 | Exp2 |
2 | 136650 | 1944,90 |
8 | 111916 | 3325,40 |
8 | 85840 | 2392,59 |
2 | 84962 | 2964,98 |
Quiero obtener el valor de Dim1 que contiene el valor más alto de Exp1 y de Exp2.
He creado 4 cuadros de texto con las siguientes fórmulas:
1) =MAX(Exp1) ----> Devuelve el valor más alto de Exp1, o sea, 136650
2) =MAX(Exp2) ----> Devuelve el valor más alto de Exp2, o sea, 3325,40
3) =concat( {$<[Exp1] = {$(=MAX([Exp1]))}>} Dim1,'\n ') ---> Devuelve el valor de Dim1 que tiene el valor más alto en Exp1, o sea, me devuelve '2' (si tuviera varios valores máximos en Exp1, me devolvería, separados por un salto de línea, todos los valores posibles de Dim1 que corresponden con ese valor máximo de Exp1)
4) =concat( {$<[Exp2] = {$(=MAX([Exp2]))}>} Dim1,'\n ') ----> ¡¡¡ NO DEVUELVE NADA!!!!
¿Por qué no devuelve nada?
He llegado a la conclusión de que el problema podría estar en el formato de los números, pero no estoy seguro. He probado a cambiar formatos pero el problema continua.
La configuración regional de mi equipo usa '.' (punto) como separador de miles y ',' (coma) como separador decimal. Excel está usando también esos símbolos para separar millares y decimales respectivamente.
En el script estoy usando:
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
Realmente creo que debes precisamente hacer una conversion de los valores, mientras tanto cuando hagas el load de los datos has la conversion.
Load ...
Num(Num#(Exp2,'#,##')) as Exp2
...
Verifica el resultado.
Acabo de probarlo y sigue sin funcionar.
Hola, en el excel, entiendo que están en formato numérico, no?
Si es así, prueba a poner en lugar de max o sum en lugar de concat, a ver si así funciona el set analysis.
Un saludo.
Si. Están en formato numérico y SUM, MAX y MIN se comportan exactamente igual que Concat.
He encontrado una solución alternativa utilizando la función FirstSortedValue(Dim1,-[Exp2]).... pero sigo intrigado por qué no funciona mi primera opción cuando se trata de números con decimales y funciona perfectamente con números naturales.
En cualquier caso sigo necesitando usar la función Concat en un caso muy concreto y para ello necesito encontrar una explicación al problema..
Al final he encontrado una solución aunque sigo sin encontrar una explicación al problema.
La solución pasa por cargar el campo Exp2 dos veces en el LOAD. Una vez con su valor tal cual y otra multiplicándolo por 1000 para quitarle los decimales y que la expresión funcione.
Osea, el LOAD sería algo así.
LOAD
Dim1,
Exp1,
Exp2,
Exp2 * 1000 as Aux_Exp2
From.......
Luego sustituimos en la expresión EXP2 por Aux_Exp2 de modo que quedaría así.
=concat( {$<[Aux_Exp2] = {$(=MAX([Aux_Exp2]))}>} Dim1,'\n ')
Y esto funciona perfectamente. O sea, por algún motivo a este tipo de expresiones se le atragantan los decimales.