En un post anterior (ver) hablé, mediante programación, de una manera de convertir en números ciertos valores almacenados como texto, y que además tenían la peculiaridad de tener intercambiado los caracteres separadores de miles y decimales.
Hoy, y para versiones de Excel 2013 y superiores, explicaré el uso de la función VALOR.NUMERO que nos habilita el intercambio para valores numéricos (sea cual sea la forma en que estén almacenados - texto o números-) independientemente de la configuración regional de Windows...
la sintaxis:
VALOR.NUMERO(valor 'numérico'; [Separador_decimal]; [Separador_miles])
sabiendo que:
1- Si no se especifican los argumentos Separador_decimal y Separador_miles, se usarán los separadores de la configuración regional actual.
2- Si se usan varios caracteres en los argumentos Separador_decimal o Separador_miles, solo se usará el primer carácter.
Veamos un ejemplo, donde en B2 tenemos un valor guardado como texto, y con los separadores contrarios a mi configuración regional de Windows; y en la celda B3 un número guardado como tal que sigue la pauta de mi configuración regional.
Para afianzar la vista, he aplicado en E2:E3 la función lógica ESNUMERO sobre las celdas B2 y B3
La función aplicada en C2:C3 es:
=VALOR.NUMERO(B2;".";",")
donde como primer argumento indicamos qué separador se está utilizando como separador decimal; y en el segundo argumento qué separador como separador de miles.
Observamos que el texto:
123,456.78 lo convierte en el número 123.456,78.
OJO, el tratamiento lo realiza para cualquier valor, por tanto, corremos el riesgo que entre el rango de valores haya un dato 'bien' informado, y que tras aplicarle esta función, nos transforme el número en un dato incorrecto.. tal y como vemos en el segundo caso, celda B3.
Una forma de salvar la situación sería con la fórmula anidada:
=SI(ESNUMERO(B2);B2;VALOR.NUMERO(B2;".";","))
que tiene en cuenta si el valor ya es un número...
Hoy, y para versiones de Excel 2013 y superiores, explicaré el uso de la función VALOR.NUMERO que nos habilita el intercambio para valores numéricos (sea cual sea la forma en que estén almacenados - texto o números-) independientemente de la configuración regional de Windows...
la sintaxis:
VALOR.NUMERO(valor 'numérico'; [Separador_decimal]; [Separador_miles])
sabiendo que:
1- Si no se especifican los argumentos Separador_decimal y Separador_miles, se usarán los separadores de la configuración regional actual.
2- Si se usan varios caracteres en los argumentos Separador_decimal o Separador_miles, solo se usará el primer carácter.
Veamos un ejemplo, donde en B2 tenemos un valor guardado como texto, y con los separadores contrarios a mi configuración regional de Windows; y en la celda B3 un número guardado como tal que sigue la pauta de mi configuración regional.
Para afianzar la vista, he aplicado en E2:E3 la función lógica ESNUMERO sobre las celdas B2 y B3
La función aplicada en C2:C3 es:
=VALOR.NUMERO(B2;".";",")
donde como primer argumento indicamos qué separador se está utilizando como separador decimal; y en el segundo argumento qué separador como separador de miles.
Observamos que el texto:
123,456.78 lo convierte en el número 123.456,78.
OJO, el tratamiento lo realiza para cualquier valor, por tanto, corremos el riesgo que entre el rango de valores haya un dato 'bien' informado, y que tras aplicarle esta función, nos transforme el número en un dato incorrecto.. tal y como vemos en el segundo caso, celda B3.
Una forma de salvar la situación sería con la fórmula anidada:
=SI(ESNUMERO(B2);B2;VALOR.NUMERO(B2;".";","))
que tiene en cuenta si el valor ya es un número...
muy util la informacion adicional del final. hay alguna salvedad cuando el campo de texto tiene espacios (_) de por medio o al final de los datos?
ResponderEliminarHola Ronald
Eliminarpodrías aplicar previamente la función ESPACIOS para eliminarlos, o incluso SUSTITUIR, y una vez limpio de 'espacios' aplicarle la función VALOR.NUMERO
Saludos