jueves, 8 de octubre de 2015

La función VALOR.NUMERO: Convertir Números como texto a números (puntos por comas).

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.

La función VALOR.NUMERO: Convertir Números como texto a números (puntos por comas).


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...

2 comentarios:

  1. 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?

    ResponderEliminar
    Respuestas
    1. Hola Ronald
      podrí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

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.