Cambio de texto al número mediante VBA
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
¿Cómo 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 formateo 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ía de las veces. Para convertir texto a 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 link: / tips-how-to-find-the-last-used-cell-in-one-column-in-microsoft-excel-2010 [last used Excel row]
que tiene datos usando las celdas del fragmento 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. Así
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 un 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() Set Rng = ThisWorkbook.Sheets("Sheet1").Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row) For Each cel In Rng.Cells cel.Value = CSng(cel.Value) Next cel End Sub
En el fragmento de VBA anterior, estamos usando link: / vba-for-loops-with-7-examples [VBA For loop]
para iterar sobre cada celda en el rango y convertir el valor de cada celda en un número usando el enlace: / excel-macros-and-vba-what-is-csng-function-in-excel-vba [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í.
`link: /wp-content-uploads-2020-01-Change-Text-to-Number-Using-VBA.xls [Cambiar texto a número usando VBA].
Si tiene alguna duda con respecto a la 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.
Artículos relacionados:
enlace: / formateo-en-vba-formato-tabla-dependiendo-de-formatos-numéricos-usando-vba-en-microsoft-excel [Formatear 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.
Artículos populares:
link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-incrementa-your-productividad [50 accesos directos de Excel para aumentar su productividad]
| Acelera tu tarea. Estos 50 atajos lo harán trabajar aún más rápido en Excel.
enlace: / fórmulas-y-funciones-introducción-de-función-vlookup [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. enlace: / tips-countif-in-microsoft-excel [COUNTIF 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.
link: / excel-formula-and-function-excel-sumif-function [Cómo utilizar la función SUMIF en Excel]
| Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.