Cómo Extraer Sólo Números de una Celda de Excel (7 Maneras Fáciles)

  • Compartir Este
Hugh West

Aunque Microsoft no ha proporcionado una fórmula o sintaxis directa para extraer sólo números de la celda de Excel, podemos incorporar una amplia gama de Fórmulas Excel para hacer una única función que se pueda utilizar para extraer números o dígitos sólo de las celdas de Excel. En este artículo, intentaremos mostrar y explicar en detalle cómo podemos sacar sólo números de las celdas con las fórmulas adecuadas bajo unos pocos criterios.

Descargar el cuaderno de prácticas

Descarga gratis el libro de prácticas que hemos utilizado para preparar este artículo. Puedes introducir los valores de texto con números en las celdas seleccionadas y encontrar los resultados inmediatamente mediante fórmulas incrustadas.

Extraer números de la celda.xlsm

7 Maneras Efectivas de Extraer Solo Números de una Celda de Excel

Habrá un código VBA, una función de Excel y cinco fórmulas prácticas que le ayudarán a extraer números de una celda. Como en la imagen de abajo, tenemos algunos códigos que incluyen dígitos y letras donde los dígitos están presentes al principio. Tenemos que extraer esos dígitos o números solamente.

1. Extraer números del principio de un texto

En este primer método, combinaremos el IZQUIERDA , SUM , LEN y SUSTITUIR para extraer números del principio de una cadena de texto. En primer lugar, escribiremos esta fórmula en la celda y, a continuación, utilizando el asa de llenado copiaremos esa fórmula al resto de las celdas.

Pasos:

  • En primer lugar, escriba la fórmula en la celda C5 .

=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))

  • En segundo lugar, pulse Entre en y obtendrás el número 34 para el primer código.

  • En tercer lugar, utilice el Asa de llenado a continuación, para autocompletar todas las demás celdas de la columna C .

🔎 Desglose de fórmulas

SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")

  • Aquí, el SUSTITUIR buscará los dígitos (0-9) consecutivamente y, si los encuentra, sustituirá ese dígito en la celda B5 con un carácter vacío cada vez. Así, la función devolverá como- {"34DTXRF", "34DTXRF", "34DTXRF", "4DTXRF", "3DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF"}.

LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))

  • En LEN determina el número de caracteres de una cadena. En este caso, la función LEN contará todos los caracteres encontrados individualmente en los textos a través de la función SUSTITUIR Los valores resultantes serán, en nuestro caso, {7,7,7,6,6,7,7,7,7,7}.

LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))

  • Ahora, esta parte es la resta del número de caracteres de la celda B5 Así, aquí los valores resultantes serán - {0,0,0,1,1,0,0,0,0,0,0}.

SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")))

  • En SUM simplemente sumará todos los valores restados encontrados & por lo que el resultado estará aquí, 2 (0+0+0+1+1+0+0+0+0+0).

=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))))

  • Y ahora aquí está la parte final donde el IZQUIERDA devolverá los valores con un número exacto de caracteres desde la izquierda encontrados en la sección anterior de la fórmula. Como hemos obtenido el valor de la suma como 2, la función IZQUIERDA sólo devolverá 34 del texto 34DTXRF .

Relacionado: Cómo separar números en Excel usando fórmulas (5 maneras)

2. Extracción de números de la parte derecha de un texto

En esta sección, extraeremos los números o dígitos de la parte derecha de la cadena de texto. Utilizaremos la función DERECHA , MIN y BUSCAR funciones aquí.

Pasos:

  • Para empezar, en nuestro conjunto de datos lo que tenemos que escribir en la celda C5 es-

=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789")) +1)

  • A continuación, pulse Entre en y, a continuación, utilice el Asa de llenado para autocompletar el resto de las celdas.

🔎 Desglose de fórmulas

B5& "0123456789″

  • En este caso, estamos concatenando valores en el campo B5 célula con 0123456789 utilizando ampersand (&) entre ellos y obtendremos el valor resultante como- DTXRF340123456789.

SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)

  • Ahora, el BUSCAR buscará todos los dígitos (0-9) uno a uno en el valor resultante obtenido de la sección anterior y devolverá las posiciones de esos 10 dígitos en los caracteres de DTXRF340123456789 Por lo tanto, aquí nuestros valores resultantes serán- {8,9,10,6,7,13,14,15,16,17}.

MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))

  • En MIN se utiliza para encontrar el dígito o número más bajo de una matriz. Así, aquí el valor mínimo o más bajo será-. 6 de la matriz {8,9,10,6,7,13,14,15,16,17} encontrada en la sección anterior de la fórmula.

LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)

  • Ahora, el número de caracteres en B5 será encontrado por el LEN Entonces restará el valor 6(encontrado en la última sección) y luego devolverá el resultado sumando 1. Aquí en nuestro caso, el valor resultante será 2 (7-6+1) .

RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)

  • En DERECHA devolverá el número especificado de caracteres del último lado o lado derecho de una cadena. Siguiendo el resultado encontrado mediante el proceso de resta en la sección anterior, aquí la función DERECHA mostrará los 2 últimos caracteres de la celda B5 y eso será 34 .

Más información: Cómo Separar Números en una Celda en Excel (5 Métodos)

3. Extracción de números de cualquier parte de una cadena de texto

Ahora, aquí tenemos una solución amplia para todos los casos. Este método extraerá números o dígitos de cualquier posición de una cadena de texto. Además, utilizaremos el método TEXTJOIN , IFERROR , INDIRECTO , MID y FILA en este método.

Pasos:

  • En primer lugar, escriba la fórmula en la celda de destino de la siguiente manera-

=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")

  • A continuación, si utiliza Excel 2016 o una versión superior, pulse Entre en de lo contrario, pulse Ctrl+Mayús+Intro para obtener el resultado de esta fórmula de matriz.
  • Después de este paso, autocomplete otras celdas utilizando la función Asa de llenado y ya está.

🔎 Desglose de fórmulas

INDIRECTO("1:"&LEN(B5))

  • En INDIRECTO se utiliza para almacenar una matriz de valores de celda como texto de referencia. Aquí el ampersand (&) concatena la longitud de los caracteres de la celda B5 con sintaxis de rango incompleta (1:) .
  • Por lo tanto, aquí el INDIRECTO almacenará todos los números entre 1 y la longitud de los caracteres en la celda B5 como texto de referencia.

ROW(INDIRECT("1:"&LEN(B5)))

  • En FILA suele indicar el número de fila de una celda, pero aquí en la función INDIRECTO función, ya que no se ha mencionado ninguna celda de referencia, en este caso, el FILA extraerá todos los valores o números de los textos de referencia almacenados en el archivo INDIRECTO función.
  • Ahora, para la 1ª celda B5 los valores resultantes a través de estos FILA y INDIRECTO serán- {1;2;3;4;5;6;7;8;9}.

(MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1))

  • En MID le permitirá determinar los caracteres de la mitad de una cadena de texto, dada una posición inicial & longitud.
  • Así, aquí para las 9 posiciones encontradas en la sección anterior, el MID mostrará ahora todos los caracteres uno a uno para cada posición & así devolverá los valores como- {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.

IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")

  • Ahora, el IFERROR es una función lógica que determinará si una cadena es un número u otra cosa. Si no identifica una cadena con números o dígitos, entonces devolverá el valor con un comando de texto definido.
  • En nuestro caso, todos los valores encontrados en la última sección se multiplicarán por 1, y cuando los resultados se devuelvan como errores de valor para letras o valores de texto que no se puedan multiplicar, su IFERROR convertirá los errores en cadenas vacías. Así, nuestros valores resultantes serán entonces- {1;9;"";"";"";"";2;"";""}.

=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")

  • Y ahora la parte final se ejecutará a través de la función TEXTJOIN Esta función se utiliza para concatenar o unir dos cadenas con un delimitador especificado.
  • Así pues, los valores resultantes que hemos hallado en la sección anterior se unirán ahora junto a esto TEXTJOIN Y así obtendremos el número 192.

Más información: Cómo extraer varios números de una cadena en Excel (6 métodos)

4. Anidamiento de varias funciones para obtener sólo números

Ahora, le mostraremos otra fórmula para extraer sólo números de cualquier posición de una celda de Excel. Aunque pueda parecer bastante compleja, desglosaremos toda la fórmula e intentaremos explicar todas las funciones compactas con facilidad. Además, utilizaremos la función SI , GRANDE , ÍNDICE , SUMPRODUCTO y NÚMERO en esta fórmula.

  • Para empezar, escriba esta fórmula en la celda C5 Tienes que reemplazar la referencia de la celda sólo en base a tu propia celda en la hoja de cálculo y luego incrustando esta fórmula, obtendrás el resultado esperado de inmediato. Y esta fórmula funciona perfectamente en cualquier versión de Excel.

=IF(SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&B5, LARGE(INDEX(ISNUMBER(--MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")

  • A continuación, pulse Entre en sólo después de escribir toda la fórmula y ya está.

🔎 Desglose de fórmulas

Antes de comenzar el desglose de este masivo & fórmula compacta, podemos separarlo en algunas partes como-

=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")

Esta sintaxis significa que si A es mayor que 0, entonces todos los productos de B n y C n sumará el resultado final. Y si A no es mayor que 0, el resultado será una celda vacía o en blanco.

  • A = SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""
  • B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1)
  • C = 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),""

Desglose de la parte A = SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""

SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, "")

  • En SUSTITUIR encontrará todos los dígitos (0-9) uno a uno en el texto 19 DDX2MN cada vez y sustituirá esos dígitos por una cadena vacía en las posiciones de los dígitos.
  • Así, los valores resultantes en una matriz serán- {"19 DDX2MN", "9 DDX2MN", "19 DDXMN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "1 DDX2MN"}.

LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""))

  • En LEN contará ahora el número de caracteres en todos los valores de cadena obtenidos de la sección anterior. Así, esta función devolverá como- {9,8,8,9,9,9,9,9,8}.

LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""))

  • Ahora en esta parte de la fórmula, un número de caracteres en la celda B5 restará todos los números encontrados en la sección anterior. Los valores resultantes serán entonces- {0,1,1,0,0,0,0,0,0,1}.

SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, "")))

  • Con la ayuda del SUM los valores dentro del array encontrado en la última sección sumarán 3 (0+1+1+0+0+0+0+0+1).
  • Así que, según la primera parte de nuestra fórmula, A>0 (3>0) Ahora pasaremos a la siguiente parte del desglose.

Desglose de la Parte B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1)

INDIRECTO("$1:$"&LEN(B5))

  • En INDIRECTO almacenará los valores de las cadenas como una referencia a la matriz. Dentro del paréntesis, el ampersand (&) unirá el número de caracteres encontrados en la celda B5 con la sintaxis de Rango de celdas. Significa que desde 1 hasta el número de caracteres definidos, cada uno se almacenará como una referencia de array.

ROW(INDIRECT("$1:$"&LEN(B5)))

  • Ahora, este FILA extraerá todos los números de la matriz y los valores resultantes para la celda B5 será- {1;2;3;4;5;6;7;8;9}.

MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1)

  • En esta parte de la fórmula, el MID expresará todos los caracteres de la celda B5 basado en todas las posiciones encontradas como números en la sección anterior. Así, los valores extraídos se encontrarán después de esta parte- {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.

ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))

  • En NÚMERO es una función lógica, determinará individualmente si los valores encontrados en la sección anterior son cadenas de números o no. En caso afirmativo, entonces devolverá como TRUE de lo contrario, aparecerá como FALSO .
  • Así, en nuestro caso, el resultado será- {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}.

INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0)

  • Si observa dentro de la función anterior, un guión doble, conocido como Unario doble Se utiliza para convertir todos los valores lógicos en cadenas numéricas. 1(TRUE) o 0(FALSE) Ahora, el ÍNDICE devolverá este resultado como- {1;1;0;0;0;0;0;1;0;0}.
  • A continuación, los valores resultantes se multiplicarán por los valores obtenidos del FILA dentro del array y el resultado será- {1;2;0;0;0;0;7;0;0}.

LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))

  • En GRANDE reordenará ahora los valores más grandes de la matriz según las posiciones basadas en los números encontrados en la función FILA & nuestros valores resultantes para esta sección de la fórmula serán- {7;2;1;0;0;0;0;0;0}.

MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1)

  • Ahora, esta parte de la función concatenará 0 con los textos de la celda B5 Entonces añadirá 1 individualmente con todos los números encontrados en la última sección y mostrar los caracteres de B5 celda en función de las posiciones numéricas definidas.
  • Así, nuestro resultado de esta sección será- {"2″; "9″; "1″; "0″; "0″; "0″; "0″; "0″; "0"}.

Desglose de la Parte C = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")

  • Esta parte determinará las potencias de 10 & almacenarlas dentro de la matriz. Los dígitos de las potencias son los números encontrados a partir de la FILA función anteriormente.
  • Esta parte de la fórmula devolverá los valores como- {1;10;100;1000;10000;100000;1000000;10000000;100000000}.

Multiplicación de B n y C n

  • Ahora, los valores resultantes de las dos últimas descomposiciones principales de B y C se multiplicarán dentro de la matriz. Entonces los productos encontrados de las multiplicaciones serán- {2;90;100;0;0;0;0;0}.
  • Y por último, el SUMPRODUCTO sumará estos valores encontrados en el array. Así, nuestro resultado final será 192 (2+90+100+0+0+0+0+0+0) que son los números extraídos de la celda B5 .

Más información: Cómo separar texto y números en Excel (4 formas sencillas)

5. Extracción de números de cinco cifras de una cadena

Utilizaremos otra fórmula para extraer números de cinco dígitos de cualquier parte de una cadena en Excel. Utilizaremos la fórmula CONCAT y SECUENCIA Además, hemos modificado ligeramente nuestro conjunto de datos para este método.

Pasos:

  • En primer lugar, seleccione el rango de celdas C5:C12 .
  • En segundo lugar, escribe la siguiente fórmula.

=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),""))

  • Por último, pulse Ctrl+Intro .

🔎 Desglose de fórmulas

  • LEN(B5)
    • Salida: 11 .
    • Esta función devuelve la longitud de la cadena.
  • SECUENCIA(11)
    • Output: {1;2;3;4;5;6;7;8;9;10;11} .
    • Esta función devuelve los once primeros números.
  • MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
    • Salida: {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″} .
    • Con esta parte, obtenemos los caracteres individuales de la cadena.
  • 0+{"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″}
    • Salida: {1;9;#VALOR!;#VALOR!;#VALOR!;#VALOR!;2;#VALOR!;#VALOR!;3;3} .
    • Si sumamos cero con una cadena, devolverá un error.
  • IFERROR({1;9;#VALOR!;#VALOR!;#VALOR!;#VALOR!;2;#VALOR!;#VALOR!;3;3},"")
    • Salida: {1;9;"";"";"";"";2;"";"";3;3} .
    • Todos los valores de error aparecen en blanco.
  • CONCAT({1;9;"";"";"";"";2;"";"";3;3})
    • Salida: 19233 .
    • Por último, sumamos todos los valores para extraer sólo números de cinco cifras.

6. Uso de Flash Fill para extraer números dentro de un rango

Utilizando el Flash de relleno es más fácil y simple que cualquier otro método mencionado anteriormente. Vamos a extraer números de cualquier posición en las cadenas de texto. Para ejecutar este método correctamente, tenemos que ayudar a Excel a encontrar el patrón de los valores de las celdas en una columna o una fila haciendo la extracción sólo para los dos primeros valores.

Pasos:

  • Para empezar, escriba los números manualmente en la celda C5 .

  • A continuación, empieza a escribir los números de la celda B6 a la célula C6 y Excel reconocerá automáticamente el patrón.
  • Por último, pulse Entre en .

Notas: Este método tiene algunos inconvenientes, por lo que no se recomienda para todos los casos en los que es necesario extraer números de cadenas de texto. El método Flash de relleno suele seguir un patrón a partir de las celdas de una columna o un rango. Por lo tanto, las 2 ó 3 primeras extracciones o cálculos tienen que hacerse manualmente para ayudar a Excel a absorber el patrón común de los valores resultantes. Pero a veces, no sigue el patrón exacto que necesitamos y, por lo tanto, seguirá su propio patrón y te dará un resultado no coincidente.

Por ejemplo, si tuviéramos que extraer dos ceros (00) de los datos dados, mostraría sólo un cero, no dos. Luego, si quieres extraer números de las posiciones inicial o final de una celda, extraerá también valores de texto, junto con los números.

Más información: Cómo Extraer Números después de un Texto Específico en Excel (2 Formas Adecuadas)

7. Aplicación de código VBA para extraer sólo los números de la celda de Excel

Si está interesado en utilizar el Macro VBA de Excel para extraer números sólo de las celdas, entonces le recomendamos que siga los pasos que se indican a continuación. Le mostraremos cómo escribir el código en el campo Módulo VBA Este código pedirá al usuario que especifique los rangos de celdas de entrada y salida.

Pasos:

  • En primer lugar, pulse ALT+F11 para abrir el VBA ventana.
  • Entonces, desde el Inserte seleccione la pestaña Módulo Aparecerá una nueva ventana del módulo en la que deberá introducir los códigos.

  • En tercer lugar, dentro de su módulo, pegue los siguientes códigos después de copiarlos.
 Option Explicit Sub ExtractNumbersOnly() Dim CellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Selección de datos de entrada" DBxName2 = "Selección de celdas de salida" Set InBx1 = Application.InputBox("Rango de entrada de celdas de texto:", _ DBxName1, "", Type:=8)If TypeName(InBx1) = "Nothing" Then Exit Sub Set InBx2 = Application.InputBox("Select Output Cells:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nothing" Then Exit Sub Iteration = 0 XtrNum = "" For Each CellValue InBx1 Iteration = Iteration + 1 NumChar = Len(CellValue) For StartChar = 1 To NumChar If IsNumeric(Mid(CellValue, StartChar, 1)) Then XtrNum = XtrNum & Mid(CellValue,StartChar, 1) End If Next StartChar InBx2.Item(Iteration) = XtrNum XtrNum = "" Next CellValue End Sub 

  • A continuación, pulse F5 para ejecutar el código. Aparecerá un cuadro de diálogo llamado " Selección de datos de entrada ".
  • A continuación, seleccione todas las celdas de texto (es decir B5:B12 ) y pulse OK .

  • A continuación, aparecerá otro cuadro de diálogo denominado " Celda de salida Selección "Aparecerá un mensaje en el que deberá seleccionar una celda o rango de celdas concreto para ver los datos o valores de salida.
  • Por último, seleccione el rango de celdas C5:C12 y pulse Entre en .

  • Por lo tanto, verá los números extraídos de los textos de una sola vez. Así, vamos a terminar los siete métodos rápidos para extraer números sólo de la celda de Excel.

🔎 Desglose de código VBA

Declaración de parámetros

 Option Explicit Sub ExtractNumbersOnly() Dim cellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Selección de datos de entrada" DBxName2 = "Selección de celdas de salida" 
  • Aquí en esta parte al principio, estamos declarando todos nuestros parámetros como enteros, valores de cadena, o rangos de celdas. Luego estamos dando los nombres de nuestros cuadros de diálogo con "Selección de datos de entrada" y "Selección de celda de salida" .

Definición de los tipos de entradas y salidas de los cuadros de diálogo

 Set InBx1 = Application.InputBox("Rango de entrada de celdas de texto:", _ DBxName1, "", Type:=8) If TypeName(InBx1) = "Nada" Then Exit Sub Set InBx2 = Application.InputBox("Seleccionar celdas de salida:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nada" Then Exit Sub Iteración = 0 XtrNum = "" 
  • Ahora estamos definiendo los parámetros y sus tipos para los cuadros de diálogo. Aquí, añadir Type:=8 significa que los datos de entrada y salida consistirán en celdas de referencia o un rango de celdas.
  • También estamos definiendo que si los datos de entrada no se encuentran, entonces la subrutina se detendrá. Al mencionar esta macro, la subrutina no se detendrá por datos faltantes, sino que dejará de funcionar.

Combinación de las funciones dentro de los bucles de código para las iteraciones

 For Each cellValue In InBx1 Iteration = Iteration + 1 NumChar = Len(cellValue) For StartChar = 1 To NumChar If IsNumeric(Mid(cellValue, StartChar, 1)) Then XtrNum = XtrNum & Mid(cellValue, StartChar, 1) End If Next StartChar InBx2.Item(Iteration) = XtrNum XtrNum = "" Next cellValue End Sub 
  • Por último, esta es la parte más crucial en la que aplicamos las funciones o fórmulas que necesitamos asignar a los textos para encontrar los valores resultantes de las cadenas.
  • Una de las mayores ventajas de codificar una función para Excel es que no es necesario escribir una fórmula grande como teníamos que hacer en los métodos anteriores, ya que VBA tiene comandos incorporados para utilizar bucles For o While donde la iteración de todos y cada uno de los detalles de una cadena de texto se puede ejecutar sin ningún tipo de molestia.

Más información: Cómo separar números de texto en Excel VBA (3 métodos)

Conclusión

Le mostramos 7 métodos sencillos para extraer sólo números de una celda de Excel. Extraer sólo números de una cadena de texto no es tan sencillo como parece porque requiere una combinación de múltiples funciones, lo que hace que la fórmula o sintaxis final sea complicada. Pero esperamos que la forma en que hemos intentado ilustrar las fórmulas desglosando las funciones internas te haya ayudado a entender la sintaxis con un poco de comodidad y facilidad.

Si encuentra otras funciones o fórmulas que deberíamos haber añadido aquí, por favor háganoslo saber a través de sus valiosos comentarios. O puede echar un vistazo a nuestros artículos más informativos e interesantes relacionados con las funciones de Excel en este sitio web.

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.