Extraiga solo números del texto (cadena)
En Excel, puede usar fórmulas para extraer el número de un valor con texto y números combinados. En el siguiente ejemplo, utilizamos una fórmula para obtener 1984 del valor «TPS1984».
Fórmula para extraer números del texto.
=TEXTJOIN("",TRUE,IFERROR((MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1),""))
En este tutorial, entenderemos esta fórmula en detalle. Y para entenderlo tenemos que dividirlo en varias partes:
- Primero, tenemos la función LEN para obtener la cantidad de caracteres en el valor.
- Después de eso, INDIRECT usa una referencia de celda usando 1 y 7 (devuelta por LEN).
- Luego, la función FILA usará INDIRECTO y devolverá una matriz de números que comienza con 1 y termina con 7.
- Ahora MID usará esta matriz y devolverá una nueva con los valores de la celda a la que te refieres.
- A continuación, tenemos una fórmula de multiplicación simple para multiplicar la matriz por 1. ¡Con esta simple multiplicación, obtendrás una nueva matriz donde tendrás #VALOR! El error para valores de texto y números permanecerá intacto.
- A partir de aquí, la función IFERROR convertirá los valores de error en valores vacíos.
- Y al final, TEXTJOIN combinará los valores y solo tendrás números en el resultado.
La fórmula anterior solo funciona para la versión Excel 2019 y superior. Esto se debe a que estamos usando TEXTJOIN, que no está disponible en versiones anteriores.
Si desea un valor para parte de la fórmula, seleccione esa parte y presione la tecla de acceso directo F9.
TEXTJOIN es una función volátil que cambia de valor cuando actualiza una celda en la hoja de trabajo. Esto puede hacer que su libro de trabajo sea un poco lento.
Pero ¿qué pasa si uso una versión anterior (2007, 2010, 2013, 2016)?
Si está utilizando versiones anteriores, debe utilizar una fórmula diferente. Una fórmula como esta:
=IF(SUM(LEN(A1)-LEN(SUBSTITUTE(A1, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&A1, LARGE(INDEX(ISNUMBER(--MID(A1,ROW(INDIRECT("$1:$"&LEN(A1))),1))* ROW(INDIRECT("$1:$"&LEN(A1))),0), ROW(INDIRECT("$1:$"&LEN(A1))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(A1)))/10),"")
=SUMPRODUCT(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))*ROW(INDIRECT("1:"&LEN(A1))),0),ROW(INDIRECT("1:"&LEN(A1))))+1,1)*10^ROW(INDIRECT("1:"&LEN(A1)))/10)
Las dos fórmulas anteriores funcionan bien con diferentes tipos de valores. Lo probé de la siguiente manera.
En la celda A1 de arriba tenemos un valor complejo que consta de texto, números y símbolos y solo tenemos números en el resultado.