El siguiente truco permite convertir automáticamente un rango predefinido de celdas a formato numérico. Baste decir que se ha realizado en Excel 2007, lo que valdrá también para Excel 2010.
En primer lugar pulsamos Alt+F11 para mostrar la ventana de Macros y de edición de Visual Basic.
En la carpeta "Módulos" (parte izquierda), hace clic con el botón derecho, y en el menú contextual seleccionar "Insertar" y "Módulo".
A continuación, escribir el siguiente procedimiento:
Sub ConvertirNumeros()
' Seleccion del rango
Range("A1:A5000").Select
' Conversion a formato numero sin decimales
Selection.NumberFormat = "0"
' Recorrido por la seleccion para su conversion
For Each xCell In Selection
' Comprobando si tiene informacion, va mucho mas rapido
If xCell.Value <> "" Then
xCell.Value = xCell.Value
End If
Next xCell
End Sub
Para ejecutar este código, acceder al menú "Vista", seleccionar la opción "Macros" y seleccionar "Ver macros". Aparecerá un diálogo mostrando "ConvertirNumeros". Seleccionar esta macro, y a continuación hacer clic en el botón "Ejecutar".
Otra forma más profesional de ejecutar el código es creando un objeto y hacer clic sobre él. Por ejemplo, se crear una forma (por ejemplo, un rectángulo), y se incluye un texto (por ejemplo, "Convertir"). Seleccionar este objeto y hacer clic con el botón derecho, y en el menú contextual seleccionar "Asignar macro...". En el diálogo, seleccionar "ConvertirNumeros" y hacer clic en el botón "Aceptar". Ahora, cada vez que se haga clic en esta forma, se ejecutará el código para convertir a número.
Lo siguiente es una mejora al código anterior, pues la coma decimal no es interpretada correctamente, requiriendo a veces que sea un punto decimal. Además de corregir este problema, además gana más velocidad aún, ya que sólo convierte los datos que sean numéricos, omitiendo textos normales y fechas.
Sub ConvertirNumeros()
' Seleccion del rango
Range("A1:A5000").Select
' Conversion a formato numero sin decimales
Selection.NumberFormat = "0.0"
' Recorrido por la seleccion para su conversion
For Each xCell In Selection
' Comprobando si tiene informacion, va mucho mas rapido
If xCell.Value <> "" Then
If IsNumeric(xCell.Value) Then
xCell.Value = 0 + xCell.Value
End If
End If
Next xCell
End Sub
Lo siguiente es una mejora al código anterior, pues la coma decimal no es interpretada correctamente, requiriendo a veces que sea un punto decimal. Además de corregir este problema, además gana más velocidad aún, ya que sólo convierte los datos que sean numéricos, omitiendo textos normales y fechas.
Sub ConvertirNumeros()
' Seleccion del rango
Range("A1:A5000").Select
' Conversion a formato numero sin decimales
Selection.NumberFormat = "0.0"
' Recorrido por la seleccion para su conversion
For Each xCell In Selection
' Comprobando si tiene informacion, va mucho mas rapido
If xCell.Value <> "" Then
If IsNumeric(xCell.Value) Then
xCell.Value = 0 + xCell.Value
End If
End If
Next xCell
End Sub