Como eliminar texto ou números da cela de Excel

  • Comparte Isto
Michael Brown

Este titorial ensinarache como separar texto dos números en Excel usando fórmulas nativas e funcións personalizadas. Tamén aprenderás a dividir o texto e os números en dúas columnas separadas.

Imaxina isto: recibes datos brutos para a análise e descobres que os números se mesturan con texto nunha columna. Na maioría das situacións, seguramente será máis conveniente telos en columnas separadas para un exame máis detallado.

No caso de que esteas a traballar con datos homoxéneos, probablemente podes usar as funcións ESQUERDA, DEREITA e MEDIA para extraer os datos. mesmo número de caracteres da mesma posición. Pero ese é un escenario ideal para probas de laboratorio. Na vida real, é máis probable que trates con datos diferentes onde os números van antes do texto, despois do texto ou entre o texto. Os exemplos seguintes proporcionan solucións exactamente para este caso.

    Como eliminar texto e manter os números nas celas de Excel

    A solución funciona en Excel 365, Excel 2021 , e Excel 2019

    Microsoft Excel 2019 introduciu algunhas funcións novas que non están dispoñibles nas versións anteriores, e imos utilizar unha destas funcións, a saber, TEXTJOIN, para eliminar os caracteres de texto dunha cela. que contén números.

    A fórmula xenérica é:

    TEXTJOIN("", TRUE, IFERROR(MID( celda, ROW(INDIRECT( "1:"&LEN(<1)>celda))), 1) *1, ""))

    En Excel 365 e 2021, este tamén funcionará:

    TEXTJOIN("", TRUE,IFERROR(MID( celda, SEQUENCE(LEN( celda)), 1) *1, ""))

    A primeira vista, as fórmulas poden parecer un pouco intimidantes, pero funcionan :)

    Por exemplo, para eliminar texto dos números en A2, introduza unha das fórmulas seguintes en B2 e, a continuación, cópiea a tantas celas como sexa necesario.

    En Excel 365 - 2019:

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

    En Excel 2019, debe introducirse como unha fórmula matricial con Ctrl + Maiús + Intro . Na matriz dinámica Excel, funciona como unha fórmula normal completada coa tecla Intro.

    En Excel 365 e 2021:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))

    Como resultado, todos os caracteres de texto son eliminado dunha cela e gárdanse os números:

    Como funciona esta fórmula:

    Para comprender mellor a lóxica, empecemos a investigar a fórmula desde dentro:

    Utiliza ROW(INDIRECT("1:"&LEN(cadea))) ou SEQUENCE(LEN(cadea)) para crear unha secuencia de números correspondentes ao número total de caracteres na cadea de orixe e, a continuación, alimenta eses números secuenciais á función MID como números de inicio. En B2, esta parte da fórmula ten o seguinte aspecto:

    MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)

    A función MID extrae cada carácter de A2 comezando polo primeiro e devólveos como unha matriz:

    {"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    Esta matriz multiplícase por 1. Os valores numéricos sobreviven sen cambios, mentres que a multiplicación dun carácter non numérico dá como resultado un #VALOR! erro:

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    A función IFERROR xestionaestes erros e substitúeos por cadeas baleiras:

    {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}

    Esta matriz final serve para a función TEXTJOIN, que concatena os valores non baleiros da matriz ( ignore_empty argumento definido como TRUE) usando unha cadea baleira ("") para o delimitador:

    TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})

    Consello. Para Excel 2016 - 2007, tamén existe unha solución, pero a fórmula é moito máis complexa. Podes atopalo neste tutorial: Como extraer números en Excel.

    Función personalizada para eliminar texto dos números

    A solución funciona para todas as versións de Excel

    Se estás a usar unha versión antiga de Excel ou tamén atopas as fórmulas anteriores difícil de lembrar, nada che impide crear a túa propia función cunha sintaxe máis sinxela e un nome sinxelo como RemoveText . A función definida polo usuario (UDF) pódese escribir de dúas maneiras:

    Código VBA 1:

    Aquí observamos cada carácter da cadea fonte un por un e comprobe se é numérico ou non. Se é un número, o carácter engádese á cadea resultante.

    Función RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i , 1)) Entón sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    Código VBA 2:

    O código crea un obxecto para procesar unha expresión regular. Usando RegExp, eliminamos todos os caracteres que non sexan os díxitos 0-9 da cadea de orixe.

    Función RemoveText(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) Finalizar coa función Final

    Nas follas de traballo pequenas, ambos os códigos funcionarán igual de ben. Nas follas de traballo grandes onde a función se chama centos ou miles de veces, o código 2 que usa VBScript.RegExp funcionará máis rápido.

    Os pasos detallados para inserir o código no teu libro de traballo pódense atopar aquí: Como inserir VBA código en Excel.

    Calquera enfoque que elixas, desde a perspectiva do usuario final, a función para eliminar texto e deixar números é tan sinxela como esta:

    RemoveText(string)

    Por exemplo, para elimina os caracteres non numéricos da cela A2, a fórmula en B2 é:

    =RemoveText(A2)

    Só que cópiaa na columna e obterás este resultado:

    Nota. Tanto as fórmulas nativas como a función personalizada producen unha cadea numérica . Para convertelo nun número, multiplica o resultado por 1 ou engade cero ou envolve a fórmula na función VALOR. Por exemplo:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Como eliminar números da cadea de texto en Excel

    A solución funciona en Excel 365, Excel 2021 e Excel 2019

    As fórmulas para eliminar números dunha cadea alfanumérica son bastante similares ás que se comentaron no exemplo anterior.

    Para Excel 365 - 2019:

    TEXTJOIN(" ", VERDADEIRO, SE(ISERR(MID( celda , FILA(INDIRECT("1:"&LEN( cela ) )), 1) *1), MID( celda , FILA(INDIRECT("1:"&LEN( ) cela ))), 1), ""))

    En Excel 2019, lembre de facelo unha fórmula matricial premendo as teclas Ctrl + Maiús + Intro xuntos.

    Para Excel 365 e 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( celda , SEQUENCE(LEN( celda 1)) *1), MID ( celda , SEQUENCE(LEN( celda )), 1), ""))

    Por exemplo, para eliminar números dunha cadea en A2, a fórmula é:

    =TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))

    Ou

    =TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))

    Como resultado, todos os números quítanse dunha cela e gárdanse os caracteres de texto:

    Como se mostra na captura de pantalla anterior, a fórmula elimina os caracteres numéricos de calquera posición dunha cadea: ao principio, ao final e ao medio. Non obstante, hai unha advertencia: se unha cadea comeza cun número seguido dun espazo , ese espazo é conservado, o que produce un problema de espazos principais (como en B2).

    Para desfacerse dos espazos adicionais antes do texto , envolve a fórmula na función TRIM así:

    =TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))

    Agora, os teus resultados son absolutamente perfectos!

    Como funciona esta fórmula:

    En esencia, a fórmula funciona igual que se explica no exemplo anterior. A diferenza é que, desde a matriz final servida ata a función TEXTJOIN, cómpre eliminar números, non texto. Para facelo, usamos a combinación das funcións IF e ISERROR.

    Como lembras,MID(…)+0 xera unha matriz de números e #VALOR! erros que representan caracteres de texto nas mesmas posicións:

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    A función ISERROR detecta os erros e pasa a matriz resultante de valores booleanos a IF:

    {FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}

    Cando a función SE ve TRUE (un erro), insire o carácter de texto correspondente na matriz procesada coa axuda doutra función MID. Cando a función SE ve FALSO (un número), substitúea por unha cadea baleira:

    {"";"";"";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    Esta matriz final pasa a TEXTJOIN, polo que concatena os caracteres de texto e saca o resultado.

    Función personalizada para eliminar números do texto

    A solución funciona para todas as versións de Excel

    Tenndo presente que se debe manter unha fórmula robusta simple, compartirei o código da función definida polo usuario (UDF) para eliminar calquera carácter numérico.

    Código VBA 1:

    Función RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Entón sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Función

    Código VBA 2:

    Función RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End Function

    Como é o caso da función RemoveText, é mellor usar o segundo código en grandefollas de traballo para optimizar o rendemento.

    Unha vez que se engade o código ao teu libro de traballo, podes eliminar todos os caracteres numéricos dunha cela usando esta función personalizada:

    RemoveNumbers(string)

    No noso caso, o a fórmula en B2 é:

    =RemoveNumbers(A2)

    Para recortar os espazos iniciais, se os hai, aniña a función personalizada dentro de TRIM como se faría cunha fórmula nativa:

    =TRIM(RemoveNumbers(A2))

    Dividir números e texto en columnas separadas

    En caso de querer separar o texto e os números en dúas columnas, sería bo facer o traballo cunha única fórmula , de acordo? Para iso, só combinamos o código das funcións RemoveText e RemoveNumbers nunha soa función, chamada SplitTextNumbers , ou simplemente Dividir , ou o que queiras :)

    Código VBA 1:

    Función SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Entón sNum = sNum & sCurChar Else sText = sTexto & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End Función

    Código VBA 2:

    Función SplitTextNumbers(str As String , is_remove_text As String) Con CreateObject ("VBScript.RegExp") .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Else.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    A nosa nova función personalizada require dous argumentos:

    SplitTextNumbers(string, is_remove_text)

    Onde is_remove_text é un valor booleano que indica que caracteres eliminar:

    • VERDADEIRO ou 1: elimina o texto e mantén os números
    • FALSO ou 0: elimina os números e mantén o texto

    Para o noso conxunto de datos de mostra, as fórmulas adoptan esta forma:

    Para eliminar caracteres non numéricos:

    =SplitTextNumbers(A2, TRUE)

    Para eliminar caracteres numéricos :

    =SplitTextNumbers(A2, FALSE)

    Consello. Para evitar un posible problema de espazos principais, recoméndolle que sempre envolve a fórmula que elimina números na función TRIM:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Ferramenta especial para eliminar números ou texto

    Para quen o faga Non me gusta complicar as cousas innecesariamente, mostrarei o noso propio xeito de eliminar texto ou números en Excel.

    Supoñendo que se engade a nosa Ultimate Suite á túa cinta de Excel, isto é o que fas:

    1. Na pestana Datos de Ablebits , no grupo Texto , faga clic en Eliminar > Eliminar caracteres .

  • No panel do complemento, seleccione o intervalo de orixe, escolla a opción Eliminar xogos de caracteres e seleccione Texto caracteres ou caracteres numéricos na lista despregable.
  • Preme Eliminar e goza do resultado :)
  • Consello. Se os resultados conteñen algúns espazos principais, os espazos de recorteferramenta eliminaraos en pouco tempo.

    Así é como eliminar texto ou caracteres numéricos dunha cadea en Excel. Grazas por ler e espero verte no noso blog a próxima semana!

    Descargas dispoñibles

    Eliminar texto ou números en Excel - exemplos (ficheiro .xlsm)

    Ultimate Suite: versión de proba (ficheiro .exe)

    Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.