Por qué tu fórmula de Excel no calcula?
En este artículo, aprenderemos ¿Por qué su fórmula de Excel no calcula?
Escenario:
Muchas veces, como cuando extraemos números de una cadena, son texto por propiedad. No se puede hacer ninguna operación numérica con ellos. Entonces tenemos la necesidad de convertir ese texto en un número. Así que para convertir cualquier texto en un número podemos tomar varios enfoques dependiendo de la situación. Echemos un vistazo a esos enfoques…
Usa la función VALUE para convertir texto en número
Así que si descargaste datos de suma de un sitio web, es común obtener algunos números como fechas especiales en formato de texto. Simplemente envuelva estos textos en una función VALOR. Devolverá un número puro.
Sintaxis de la función VALOR
=VALOR(texto)
Así que para convertir un texto en la celda B2 en número escribe esta fórmula VALOR.
=VALOR(B2)
Añadir 0 al texto para convertirlo en número
Si añades cualquier número utilizando el operador + a un número con formato de texto, convertirá el texto en un número y luego añadirá el número dado al número convertido. Finalmente el resultado será un número.
Por ejemplo, si hay un número con formato de texto en B4, entonces sólo hay que añadir 0 para convertir la cadena en número.
=B4+0
El resultado será un número con toda seguridad.
Como os decía al principio, este problema se produce cuando extraemos números de cadenas. Así que si quieres que el texto extraído esté numerado sólo tienes que añadir 0 al final.
Por ejemplo estoy extrayendo citycode del texto B6. Lo he extraído usando la función LEFT. Pero no es un número así que le añadí un 0 en la propia fórmula.
=LEFT(B6,6)+0
Utilizando la notificación de Excel para convertir un texto en un número
Cuando un número está en forma de texto, excel lo notifica mostrando una esquina verde de la celda.
Cuando haces clic en la celda muestra un pequeño icono de exclamación en la esquina izquierda de la celda.
Cuando haces clic en él, muestra una opción de Convertir en número. Haz clic en ella y el texto se convertirá en número.
Convertir texto en número usando VBA
Así que, si tienes un rango fijo que quieres convertir en texto entonces usa este fragmento de VBA.
Sub ConvertTextToNumber() Range("A3:A8").NumberFormat = "General" Range("A3:A8").Value = Range("A3:A8").ValueEnd Sub
Cuando ejecutas el código anterior convierte el texto del rango A3:A8 en texto.
Este código puede quedar más elegante si lo escribimos así.
Sub ConvertTextToNumber() With Range("A3:A8") .NumberFormat = "General" .Value = .Value End WithEnd Sub
¿Cómo funciona?
Pues es bastante sencillo. Primero cambiamos el formato numérico del rango a General. Luego ponemos el valor de ese rango en el mismo rango usando VBA. Esto elimina el formato de texto por completo. Sencillo, ¿no?
Cambiar el número de formato de un rango dinámico
En el código anterior, cambiamos el texto a número en el código anterior de un rango fijo pero esto no será así la mayoría de las veces. Para convertir texto a número de rangos dinámicos, podemos evaluar la última celda utilizada o seleccionar el rango de forma dinámica.
Así es como quedaría:
Sub ConvertTextToNumber()With Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row).NumberFormat = "General" .Value = .ValueEnd With
Aquí, sé que el rango empieza a partir de A3. Pero no sé dónde puede terminar.
Así que identifico dinámicamente la última fila de excel utilizada que tiene datos en ella utilizando el snippet de VBA Cells(Rows.Count, 1).End(xlUp).Row. Devuelve el último número de fila utilizado 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 múltiples hojas, sería mejor establecer un objeto de rango de la hoja de trabajo prevista. 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 WithEnd 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 hacer un bucle por cada celda y cambiar el valor de la celda a un número utilizando 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 celEnd Sub
En el anterior fragmento de VBA, estamos utilizando el bucle For de VBA para iterar sobre cada celda en el rango y convertir el valor de cada celda en un número utilizando la función CSng de VBA.
Así que sí chicos, esto es cómo se puede cambiar textos a números en Excel utilizando VBA. Podéis utilizar estos fragmentos para preparar vuestra hoja de trabajo antes de realizar cualquier operación numérica sobre ellos. Espero haber sido lo suficientemente explicativo. Puedes descargar el archivo de trabajo aquí.
Cambiar texto a número usando VBA.
Espero que este artículo sobre Por qué tu fórmula de Excel no calcula sea explicativo. Encuentra más artículos sobre el cálculo de valores y fórmulas de Excel relacionadas aquí. Si te han gustado nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook. Nos encantaría saber de ti, haznos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para ti. Escríbenos a [email protected].
Artículos relacionados :
Cómo obtener Texto & Número en Inverso a través de VBA en Microsoft Excel : Para invertir número y texto utilizamos bucles y la función mid en VBA. 1234 se convertirá en 4321, «you» se convertirá en «uoy». Aquí está el fragmento.
Formatear los datos con formatos numéricos personalizados utilizando VBA en Microsoft Excel : Para cambiar el formato de número de columnas específicas en Excel, utilice este fragmento de VBA. Convierte el formato de número de especificado a formato especificado en un solo clic.
Artículos populares :
Cómo utilizar la función IF en Excel : La sentencia IF en Excel comprueba la condición y devuelve un valor específico si la condición es TRUE o devuelve otro valor específico si FALSE.
Cómo utilizar la Función VLOOKUP en Excel : Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar el valor de diferentes rangos y hojas.
Cómo utilizar la Función SUMIF en Excel : Esta es otra función esencial del tablero. Esto le ayuda a sumar valores en condiciones específicas.
Cómo usar la Función COUNTIF en Excel : Cuente los valores con las condiciones utilizando esta increíble función. No necesita filtrar sus datos para contar valores específicos. La función Countif es esencial para preparar su panel de control.