Convertir texto a número en Microsoft Excel VBA

Bilal Shahid 21 junio 2023
  1. Convertir Texto a Números en VBA
  2. Método 1: cambiar .NumberFormat a General
  3. Método 2: Utilice la función CSng()
  4. Método 3: multiplicar el valor de la celda por 1
  5. Conclusión
Convertir texto a número en Microsoft Excel VBA

VBA es un lenguaje de programación para aplicaciones de Microsoft Excel que brinda a los usuarios varias funciones y características. En este artículo, aprenderemos sobre diferentes métodos para convertir datos textuales a formato numérico.

Convertir Texto a Números en VBA

Puede haber una situación en la que desee aplicar cualquier fórmula aritmética a los datos de Excel pero no pueda hacerlo.

¡Esto se debe a que los números pueden almacenarse en forma de texto! Este artículo tiene la solución a este problema.

Sabemos cómo convertir números a texto simplemente usando la función CStr(). Sin embargo, cuando queremos hacer lo contrario, es decir, convertir texto en forma de números, tenemos múltiples formas de hacerlo usando VBA.

En este artículo, veremos diferentes métodos de conversión y algunos ejemplos para comprender cómo funcionan estos métodos.

Método 1: cambiar .NumberFormat a General

En el primer método, seleccionamos las celdas especificando el rango y cambiamos el formato de datos de Texto a General, luego establecemos los valores de los números.

Aquí está el código genérico para ello:

[X:Y].Select
With Selection
.NumberFormat = "General"
.Value = .Value
End With

Aquí, X:Y representa el rango de las celdas. Disponemos de diferentes formatos de números en MS Excel, como General, Moneda, Contabilidad, Texto, etc.

El formato General mantiene el número tal como fue ingresado.

Por ejemplo, 22 se mantendrá como 22, o 10.02 se mantendrá como 10.02. La declaración .Value = .Value está obteniendo y configurando los valores de las celdas, que ahora están en formato de número.

Como resultado, los datos del rango seleccionado ahora estarán en forma de números, convertidos del texto. Veamos un ejemplo para aclarar aún más el uso de este método.

Supongamos que tenemos los siguientes datos de muestra inicialmente en nuestra hoja de Excel.

Data de muestra

Aquí está el código para convertir los datos en texto a formato numérico:

Sub method1()
[A1:A7].Select
With Selection
.NumberFormat = "General"
.Value = .Value
End With
End Sub

Producción:

Cambiar formato de número a general

En este ejemplo, teníamos los números 1-7 en forma de texto. Después de ejecutar el código VBA anterior, los datos cambiaron de forma de texto a forma de números.

Método 2: Utilice la función CSng()

El segundo método puede encontrar todos los valores numéricos en la hoja, incluso si los valores tienen formato de texto. Luego, la función CSng() se utiliza para convertir estos datos en un solo tipo de datos (común).

Aquí está el código genérico para este método:

For Each r In Sheets("SheetName").UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then
r.Value = CSng(r.Value)
r.NumberFormat = "0.00"
End If
Next

Aquí, Sheets("SheetName").UsedRange selecciona todas las celdas en uso de la hoja. SheetName es el nombre de su hoja de Excel.

La función IsNumeric() identifica cualquier dato que pueda evaluarse como un número. Es una función de tipo booleano y devuelve True o False.

El código verifica cada celda una por una, y si se detecta algún dato que pueda evaluarse como un número, entonces su tipo de datos se establece primero en un solo tipo de datos (común) y luego se establece en el formato 0.00. Esto significa que todas las celdas que tienen datos (y pueden evaluarse como números) ahora tienen un tipo de datos común con el formato 0.00.

Por lo tanto, los datos ahora se han convertido en forma de números. Veamos cómo funciona el código usando un ejemplo.

Usaremos los mismos datos de muestra que se usaron en el ejemplo anterior.

Data de muestra

Aquí está el código para convertir texto a números usando la función CSng():

Sub method2()
For Each r In Sheets("Sheet1").UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then
r.Value = CSng(r.Value)
r.NumberFormat = "0.00"
End If
Next
End Sub

Producción:

Utilice la función CSng

En este ejemplo, la función IsNumeric() identifica todas las celdas en las que los datos se pueden evaluar como números, y esas celdas (que van desde A1 a A7) ahora se les asigna un tipo común, es decir, formato 0.00 o forma de número.

Método 3: multiplicar el valor de la celda por 1

Este método es solo una solución alternativa y proporciona un truco de acceso directo para convertir texto a formato numérico. La tarea que tienes que hacer en este método es sencilla: multiplicar cada valor de la celda por 1.

Esto convertirá los datos textuales a formato numérico sin cambiar el valor real de los datos ya que multiplicar con 1 no trae ningún cambio numérico, y el formato de los datos se cambiará implícitamente a números debido a una operación matemática.

Tenemos los siguientes datos de muestra:

Data de muestra

Aquí está el código para convertir texto a números multiplicando por 1:

Sub method4()
For Each r In Sheets("Sheet1").UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then
r.Value = r.Value * 1
End If
Next
End Sub

Conclusión

La conversión de un tipo de datos a otro es útil, como convertir números de forma de texto a forma de números para que podamos aplicar operaciones aritméticas en los datos.

En este artículo, discutimos diferentes métodos para convertir Texto en Número. También discutimos varios ejemplos para aclarar nuestros conceptos y comprender cómo funcionan los métodos.

Esperamos que hayas podido aprender este concepto. ¡Seguir aprendiendo!

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub