Cómo convertir cadena a número en Excel VBA (3 métodos)

  • Compartir Este
Hugh West

En este artículo, vamos a discutir varios métodos para convertir cadena a número en Excel VBA. Vamos a ver cómo utilizar las funciones incorporadas y crear una función personalizada con ellos para convertir cadena a número con ejemplos de código VBA.

Descargar el cuaderno de prácticas

Descárgate este cuaderno de prácticas para ejercitarte mientras lees este artículo.

Convertir Cadena en Número.xlsm

3 Maneras de Convertir Cadena a Número en Excel VBA

1. Convertir Cadena a Número Usando Funciones de Conversión de Tipo

Excel proporciona varios funciones de conversión de tipos Podemos utilizarlos en nuestro código VBA para convertir fácilmente de tipo de datos de cadena a diferentes tipos de datos.

1.1 Cadena a entero

Para convertir cadena a entero podemos utilizar Función CInt en nuestro código. El Función CInt sólo necesita un argumento y que debería ser un valor numérico Probemos el siguiente código en el Editor de Código Visual.

 Sub StringToNumber() MsgBox CInt(12.3) End Sub 

Pulse F5 a ejecute el código El resultado se muestra en MsgBox .

La función CInt convertido el cadena numérica valor ("12.3" ) a un entero 12.

Para saber más sobre el Función CInt ejecute el siguiente código en el editor de código y observe el resultados .

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CInt(Cells(i, 2)) Next End Sub 

En salida está aquí en captura de pantalla .

Código Explicación

En este código, utilizamos la función Bucle For...Next para aplicar el Función CInt en las cadenas de células B3:B7. En salidas se imprimen en las celdas C3:C7. Utilizamos el Función de las células para especificar los valores de entrada y dónde imprimir los valores de salida.

Resultados

La función CInt convertido 25,5 a la siguiente número entero 26 Por otro lado convertido 10.3 a 10, no 11 Cuando un valor numérico decimal es inferior a 0,5, la función redondea hacia abajo al mismo número. Pero la función decimal se convierte en el valor siguiente entero número si es igual a o superior a 0,5.

Nota

El valor entero tiene un rango entre -32,768 a 32,767 Si ponemos un valor numérico que es fuera de este rango Excel mostrará un error .

1.2 De cadena a largo

En Función CLng convierte un valor numérico de cadena en un tipo de datos long Funciona de forma similar a la función CInt. La diferencia clave radica en su función gama que está entre -2,147,483,648 y 2,147,483,647.

 El código a ejecutar está aquí abajo:  Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub 

Aquí, las células B3:B9 contienen algunos valor numérico de cadena y convertido l úmero están en las celdas C3:C9. En Función CLng convertido -32800 y 32800 con éxito a números largos que el Función CInt pero también conseguirá un error si la entrada valor numérico es fuera de rango.

1.3 Cadena a decimal

Utilización de la Función CDec podemos convertir a valor numérico de cadena a un tipo de datos decimal. Ejecutar el siguiente código para convertir el valores numéricos en las células B3:B7 a la tipo de datos decimal.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CDec(Cells(i, 2)) Next End Sub 

1.4 De cadena a sencillo

En este ejemplo, convertiremos las cadenas de entrada en tipo de dato único (coma flotante de precisión simple). Para ello, debemos utilizar el método Función CSng .

Los rangos de tipo de datos único- (i) -3,402823E38 a -1.401298E-45 para negativo números.

(ii) 1.401298E-45 a 3.402823E38 para positivo números.

Ejecute el siguiente código en el editor de visual basic.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

En la salida, las celdas B3:B9 contienen algunos valor numérico de cadena, y números de tipo de datos único convertidos están en las celdas C3:C9. Pero también obtendrá un error si la entrada valor numérico es fuera de rango.

1,5 Cadena a doble

En este ejemplo, convertiremos las cadenas de entrada en tipo de dato double (coma flotante de doble precisión). Para ello, necesitamos utilizar la función Función CDbl .

El tipo de datos doble abarca- (i) -1,79769313486231E308 a -4.94065645841247E-324 para negativo números.

(ii) 4.94065645841247E-324 a 1.79769313486232E308 para positivo números.

Ejecute el siguiente código en el editor de visual basic.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

En la salida, las celdas B3:B9 contienen algunos valor numérico de cadena y números de tipo de datos doble convertidos están en las celdas C3:C9. Pero también obtendrá un error si la entrada valor numérico es fuera de rango.

1.6 De cadena a moneda

En tipo de moneda es útil cuando los cálculos están relacionados con dinero Además, si queremos más precisión en fijo - punto cálculo el uso del tipo de datos currency es una buena elección. Necesitamos utilizar el tipo de datos Función CCur para convertir una cadena en tipo de moneda El tipo de datos gamas de -922,337,203,685,477.5808 a 922,337,203,685,477.5808.

Código a convertir valor numérico de cadena de células B3:B7 a tipo de moneda en las células C3:C7 está aquí abajo.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CCur(Cells(i, 2)) Next End Sub 

1.7 Cadena a byte

En Función CByte convierte los valores numéricos de cadena al formato tipo de datos byte que oscila entre 0 a 255.

Código es el siguiente :

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CByte(Cells(i, 2)) Next End Sub 

En la salida, las celdas B3:B9 contienen algunos valor numérico de cadena, y números de tipo byte convertidos están en las celdas C3:C9. Pero también obtendrá un error si la entrada valor numérico es fuera de rango.

Más información: Cómo convertir cadena a largo utilizando VBA en Excel

Lecturas similares

  • Convertir Cadena a Doble en Excel VBA (5 Métodos)
  • Cómo Convertir Texto a Número con Excel VBA (3 Ejemplos con Macros)
  • Solucionar Error de Conversión a Número en Excel (6 Métodos)
  • Cómo convertir notación científica a número en Excel (7 métodos)

2. Uso de Función VBA Personalizada para Comprobar y Convertir Cadena a Número en Excel

En esta ilustración, vamos a hacer un función personalizada para convertir cadenas en números. Podemos entonces utilice este función personalizada en nuestro hoja de trabajo como un función incorporada En este ejemplo, utilizaremos la función Función CInt a convertir cadenas a números enteros mientras se crea el función personalizada. También podríamos utilizar todos los otras funciones descrito en método 1 convertir cadenas a diferentes tipos de datos Siga los pasos que se indican a continuación para conseguirlo.

Pasos:

  • Aquí, en las células B3:B7, tenemos algunos valores numéricos de cadena.

  • Ahora, en el editor de visual basic, copia y pegar el siguiente código y, a continuación, pulse Ctrl + S a guardar
 Function StringToNumber(inputStr) Dim convertedNum As Variant If IsNumeric(inputStr) Then If IsEmpty(inputStr) Then convertedNum = "-" Else convertedNum = CInt(inputStr) End If Else convertedNum = "-" End If StringToNumber = convertedNum End Function 
  • En célula C3 , empezar a escribir el nombre de la función ( StringToNumber ). Excel sugerir automáticamente el función usar. Pulse el Tabulador para entrar en la función.

  • Ponga el celda de referencia B3 como único argumento.

  • Ahora, pulse Entre en después de cerrar los paréntesis.

  • Localice el Asa de llenado en el esquina inferior derecha de célula C3 a aplicar la función a las células C4:C7.

  • La salida final son los codiciados números enteros a partir de los valores de cadena.

3. Código VBA para convertir un rango seleccionado de celdas a números en Excel

En esta ilustración, convertiremos un gama de celdas seleccionadas que contienen valores de cadena a números enteros. Si alguna celda contiene un no numérico en él, la salida será un línea de guiones (-) en su lugar Sigue el pasos :

  • Seleccionar celdas B3:B6 teniendo cadenas numéricas y B7 que contiene un no numérico

  • En el Editor de Visual Basic copia y pegar lo siguiente código .
 Sub StringToNumber() Dim convertedNum As Variant For Each cell In Selection If IsNumeric(cell) Then If IsEmpty(cell) Then convertedNum = "-" Else convertedNum = CInt(cell) End If Else convertedNum = "-" End If With cell .Value = convertedNum.HorizontalAlignment = xlCenter End With Next cell End Sub 
  • Ahora, pulse F5 a ejecute el salida como se indica a continuación captura de pantalla .

Notas

  • Utilizamos el Función isNumeric en el 2ª y 3ª métodos en nuestro código VBA que comprueba si una expresión puede convertirse en un número.
  • En método 1 utilizamos funciones integradas (CInt, CDbl, CSng.....) para convertir valores numéricos de cadena a números Pero si hay un valor no numérico mostrará un error de desajuste .

Conclusión

Ahora, ya sabemos cómo convertir valores de cadena a números en Excel. Esperemos que esto te anime a utilizar esta funcionalidad con más confianza. Cualquier duda o sugerencia no olvides ponerla en la caja de comentarios de abajo.

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.