En una tarea reciente, estaba haciendo un filtro a través de VBA en una columna numérica. Pero esa columna de números tenía números en formato de texto. Cuando ejecuté el script VBA, no funcionó, por supuesto, porque el filtro era un número y la columna tenía números como texto. En ese caso, necesitaba convertir el texto en números manualmente y guardarlo. Entonces la macro funcionó perfectamente. Pero quería convertir estos textos en números usando el script VBA y pude hacerlo. Quería compartir esto como si alguien quisiera saber cómo convertir valores de texto en un número usando VBA, pueden echarle un vistazo.
Convierta texto en número usando el método Range.NumberFormat
Este primer y más sencillo método. Prefiero este método sobre otros métodos, ya que convierte directamente el rango de Excel seleccionado en formato numérico.
Entonces, si tiene un rango fijo que desea convertir a texto, use este fragmento de VBA.
Sub ConvertTextToNumber () Range ("A3: A8"). NumberFormat = "General" Range ("A3: A8"). Value = Range ("A3: A8"). Value End Sub
Cuando ejecuta el código anterior, convierte el texto del rango A3: A8 en texto.
Este código puede parecer más elegante si lo escribimos así.
Sub ConvertTextToNumber () With Range ("A3: A8") .NumberFormat = "General" .Value = .Value End With End Sub
¿Como funciona?
Bueno, es bastante simple. Primero cambiamos el formato numérico del rango a General. Luego colocamos el valor de ese rango en el mismo rango usando VBA. Esto elimina el formato de texto por completo. Simple, ¿no es así?
Cambiar el número de formato de un rango dinámico
En el código anterior, cambiamos el texto a un número en el código anterior de un rango fijo, pero este no será el caso la mayor parte del tiempo. Para convertir texto en varios rangos dinámicos, podemos evaluar la última celda utilizada o seleccionar el rango dinámicamente.
Así es como se vería:
Sub ConvertTextToNumber () With Range ("A3: A" & Cells (Rows.Count, 1) .End (xlUp) .Row) .NumberFormat = "General" .Value = .Value End With
Aquí, sé que el rango comienza desde A3. Pero no sé dónde puede terminar.
Así que identifico dinámicamente la última fila de Excel usada que tiene datos usando las celdas de fragmentos de VBA (Rows.Count, 1) .End (xlUp) .Row. Devuelve el último número de fila usado que estamos concatenando con "A3: A".
Nota: Este fragmento de VBA funcionará en el libro de trabajo activo y en la hoja de trabajo activa. Si su código cambia a través de varias hojas, sería mejor establecer un objeto de rango de la hoja de trabajo deseada. Como esto
Sub ConvertTextToNumber () Set Rng = ThisWorkbook.Sheets ("Sheet1"). Range ("A3: A" & Cells (Rows.Count, 1) .End (xlUp) .Row) With Rng .NumberFormat = "General" .Value = .Value End With End Sub
El código anterior siempre cambiará el texto al número de la hoja1 del libro de trabajo que contiene este código.
Bucle y CSng para cambiar el texto a número
Otro método es recorrer cada celda y cambiar el valor de la celda a un número usando la función CSng. Aquí está el código.
Sub ConvertTextToNumberLoop () Establecer Rng = ThisWorkbook.Sheets ("Sheet1"). Range ("A3: A" & Cells (Rows.Count, 1) .End (xlUp) .Row) Para cada celda In Rng.Cells cel.Value = CSng (cel.Value) Siguiente celda End Sub
En el fragmento de VBA anterior, estamos usando VBA For loop para iterar sobre cada celda en el rango y convertir el valor de cada celda en un número usando la función CSng de VBA.
Así que sí, chicos, así es como pueden cambiar los textos a números en Excel usando VBA. Puede utilizar estos fragmentos para preparar su hoja de trabajo antes de realizar cualquier operación numérica en ellos. Espero haber sido lo suficientemente explicativo. Puede descargar el archivo de trabajo aquí.
Cambiar texto a número usando VBA.
Si tiene alguna duda con respecto a esta conversión de texto a número o cualquier otra consulta relacionada con Excel / VBA, pregunte en la sección de comentarios a continuación.
Cómo obtener texto y número en reversa a través de VBA en Microsoft Excel | Para invertir el número y el texto usamos bucles y la función mid en VBA. 1234 se convertirá en 4321, "usted" se convertirá en "uoy". Aquí está el fragmento.
Formatee los datos con formatos numéricos personalizados usando VBA en Microsoft Excel | Para cambiar el formato numérico de columnas específicas en Excel, use este fragmento de VBA. Convierte el formato numérico del formato especificado al formato especificado con un solo clic.
Articulos populares:
50 accesos directos de Excel para aumentar su productividad | Acelera tu tarea. Estos 50 accesos directos le permitirán trabajar aún más rápido en Excel.
La función BUSCARV en Excel | Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas.
CONTAR.SI en Excel 2016 | Cuente valores con condiciones usando esta asombrosa función. No necesita filtrar sus datos para contar un valor específico. La función Countif es esencial para preparar su tablero.
Cómo usar la función SUMIF en Excel | Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.