Како уклонити текст или бројеве из Екцел ћелије

  • Деле Ово
Michael Brown

Овај водич ће вас научити како да одвојите текст од бројева у Екцел-у користећи изворне формуле и прилагођене функције. Такође ћете научити како да поделите текст и бројеве у две одвојене колоне.

Замислите ово: добијате сирове податке за анализу и сазнаћете да су бројеви помешани са текстом у једној колони. У већини ситуација ће свакако бити згодније да их имате у одвојеним колонама ради детаљнијег прегледа.

У случају да радите са хомогеним подацима, вероватно бисте могли да користите функције ЛЕФТ, РИГХТ и МИД да бисте издвојили исти број знакова са исте позиције. Али то је идеалан сценарио за лабораторијске тестове. У стварном животу, највероватније ћете имати посла са различитим подацима где бројеви долазе пре текста, после текста или између текста. Примери у наставку пружају решења управо за овај случај.

    Како уклонити текст и задржати бројеве у Екцел ћелијама

    Решење ради у Екцел 365, Екцел 2021 , и Екцел 2019

    Мицрософт Екцел 2019 увео је неколико нових функција које нису доступне у ранијим верзијама, а ми ћемо користити једну од таквих функција, наиме ТЕКСТЈОИН, да уклонимо текстуалне знакове из ћелије садржи бројеве.

    Генеричка формула је:

    ТЕКСТЈОИН("", ТРУЕ, ИФЕРРОР(МИД( целл, РОВ(ИНДИРЕЦТ( "1:"&амп;ЛЕН(<1)>целл))), 1) *1, ""))

    У Екцел 365 и 2021, ово ће такође радити:

    ТЕКСТЈОИН("", ТРУЕ,ИФЕРРОР(МИД( целл, СЕКУЕНЦЕ(ЛЕН( целл)), 1) *1, ""))

    На први поглед, формуле могу изгледати помало застрашујуће, али раде :)

    На пример, да бисте уклонили текст из бројева у А2, унесите једну од доле наведених формула у Б2, а затим је копирајте у онолико ћелија колико је потребно.

    У Екцел 365 - 2019:

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

    У Екцел 2019, мора се унети као формула низа помоћу Цтрл + Схифт + Ентер . У динамичком низу Екцел функционише као нормална формула довршена тастером Ентер.

    У Екцел 365 и 2021:

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

    Као резултат, сви текстуални знакови су уклоњени из ћелије и бројеви се чувају:

    Како ова формула функционише:

    Да бисмо боље разумели логику, хајде да почнемо да истражујемо формула изнутра:

    Користите или РОВ(ИНДИРЕЦТ("1:"&амп;ЛЕН(стринг))) или СЕКУЕНЦЕ(ЛЕН(стринг)) да бисте креирали низ бројева који одговарају укупном броју знакова у изворном низу, а затим унесите те секвенцијалне бројеве функцији МИД као почетне бројеве. У Б2, овај део формуле изгледа овако:

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

    Функција МИД издваја сваки знак из А2 почевши од првог и враћа их као низ:

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

    Овај низ се множи са 1. Нумеричке вредности остају без промене, док множење ненумеричког карактера резултира #ВРЕДНОСТ! грешка:

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

    Управља функција ИФЕРРОРове грешке и замењује их празним стринговима:

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

    Овај коначни низ се сервира функцији ТЕКСТЈОИН, која спаја непразне вредности у низу ( игноре_емпти аргумент постављен на ТРУЕ) користећи празан стринг ("") за граничник:

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

    Савет. За Екцел 2016 - 2007 такође постоји решење, али је формула далеко сложенија. Можете га пронаћи у овом водичу: Како издвојити бројеве у Екцел-у.

    Прилагођена функција за уклањање текста из бројева

    Решење ради за све верзије Екцел-а

    Ако користите старију верзију Екцел-а или пронађете и горе наведене формуле тешко запамтити, ништа вас не спречава да креирате сопствену функцију са једноставнијом синтаксом и корисничким именом као што је РемовеТект . Кориснички дефинисана функција (УДФ) се може написати на два начина:

    ВБА код 1:

    Овде гледамо сваки карактер у изворном низу по један један и провери да ли је нумерички или не. Ако је број, резултујућем низу се додаје знак.

    Функција РемовеТект(стр Ас Стринг) Дим сРес Ас Стринг сРес = "" За и = 1 То Лен(стр) Ако је Труе = ИсНумериц(Мид(стр, и) , 1)) Тада је сРес = сРес &амп; Мид(стр, и, 1) Енд Иф Нект и РемовеТект = сРес Енд Фунцтион

    ВБА код 2:

    Код креира објекат за обраду регуларног израза. Користећи РегЕкп, уклањамо све знакове осим цифара 0-9 из изворног низа.

    Функција РемовеТект(стр Ас Стринг) Као стринг са ЦреатеОбјецт ("ВБСцрипт.РегЕкп") .Глобал = Труе .Паттерн = "[^0-9]" РемовеТект = .Реплаце(стр, "" ) Завршава са функцијом Енд

    На малим радним листовима, оба кода ће радити подједнако добро. На великим радним листовима где се функција позива стотине или хиљаде пута, код 2 који користи ВБСцрипт.РегЕкп ће радити брже.

    Детаљне кораке за уметање кода у радну свеску можете пронаћи овде: Како да уметнете ВБА кода у Екцел-у.

    Који год приступ да одаберете, из перспективе крајњег корисника, функција брисања текста и остављања бројева је једноставна као ова:

    РемовеТект(стринг)

    На пример, да уклоните ненумеричке знакове из ћелије А2, формула у Б2 је:

    =RemoveText(A2)

    Само је копирајте низ колону и добићете овај резултат:

    Напомена. И матичне формуле и прилагођена функција излазе нумерички стринг . Да бисте га претворили у број, помножите резултат са 1, или додајте нулу, или умотајте формулу у функцију ВАЛУЕ. На пример:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Како уклонити бројеве из текстуалног низа у Екцел-у

    Решење ради у Екцел 365, Екцел 2021 и Екцел 2019

    Формуле за уклањање бројева из алфанумеричког низа су прилично сличне онима о којима се расправљало у претходном примеру.

    За Екцел 365 - 2019:

    ТЕКСТЈОИН(" ", ТРУЕ, ИФ(ИСЕРР(СРЕДИНА( ћелија , РОВ(ИНДИРЕЦТ("1:"&амп;ЛЕН( ћелија ) )), 1) *1), СРЕДИНА( ћелија , РОВ(ИНДИРЕЦТ("1:"&амп;ЛЕН( ) целл ))), 1), ""))

    У програму Екцел 2019, не заборавите да га направите формулом низа тако што ћете заједно притиснути тастере Цтрл + Схифт + Ентер.

    За Екцел 365 и 2021:

    ТЕКСТЈОИН("", ТРУЕ, ИФ(ИСЕРРОР(МИД( целл , СЕКУЕНЦЕ(ЛЕН( целл 1) *1), МИД) ( целл , СЕКУЕНЦЕ(ЛЕН( целл )), 1), ""))

    На пример, да бисте уклонили бројеве из низа у А2, формула је:

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

    Или

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

    Као резултат, сви бројеви се уклањају из ћелије, а знакови текста се задржавају:

    Као што је приказано на слици изнад, формула уклања нумеричке знакове са било које позиције у низу: на почетку, на крају и у средини. Међутим, постоји упозорење: ако је стринг почиње бројем иза којег следи размак , тај размак се задржава, што ствара проблем са водећим размацима (као у Б2).

    Да бисте се решили додатних размака пре текста , умотајте формулу у функцију ТРИМ овако:

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

    Сада, ваши резултати су апсолутно савршени!

    Како ова формула функционише:

    У суштини, формула функционише исто као што је објашњено у претходном примеру. Разлика је у томе што, из коначног низа који се сервира функцији ТЕКСТЈОИН, морате уклонити бројеве, а не текст. Да бисмо то урадили, користимо комбинацију функција ИФ и ИСЕРРОР.

    Као што се сећате,МИД(…)+0 генерише низ бројева и #ВРЕДНОСТ! грешке које представљају текстуалне знакове на истим позицијама:

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

    Функција ИСЕРРОР хвата грешке и прослеђује резултујући низ Булових вредности у ИФ:

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

    Када функција ИФ види ТРУЕ (грешка), она убацује одговарајући текстуални карактер у обрађени низ уз помоћ друге МИД функције. Када функција ИФ види ФАЛСЕ (број), она га замењује празним стрингом:

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

    Овај коначни низ се прослеђује на ТЕКСТЈОИН, тако да спаја текстуалне знакове и излази резултат.

    Прилагођена функција за уклањање бројева из текста

    Решење ради за све верзије Екцел-а

    Имајући на уму да треба задржати робусну формулу једноставно, поделићу код кориснички дефинисане функције (УДФ) да бих уклонио било који нумерички карактер.

    ВБА код 1:

    Функција РемовеНумберс(стр Ас Стринг) Дим сРес Ас Стринг сРес = "" За и = 1 То Лен(стр) Ако је Фалсе = ИсНумериц(Мид(стр, и, 1)) Тада је сРес = сРес &амп; Мид(стр, и, 1) Енд Иф Нект и РемовеНумберс = сРес Енд Функција

    ВБА код 2:

    Функција РемовеНумберс(стр Ас Стринг) Као стринг са ЦреатеОбјецт ( "ВБСцрипт.РегЕкп" ) .Глобал = Труе .Паттерн = "[0-9]" РемовеНумберс2 = .Реплаце(стр, "" ) Енд Витх Енд Фунцтион

    Као што је случај са функцијом РемовеТект, други код је боље користити у великирадне листове за оптимизацију перформанси.

    Када се код дода у радну свеску, можете уклонити све нумеричке знакове из ћелије користећи ову прилагођену функцију:

    РемовеНумберс(стринг)

    У нашем случају, формула у Б2 је:

    =RemoveNumbers(A2)

    Да бисте скратили водеће размаке ако их има, угнездите прилагођену функцију унутар ТРИМ-а као што бисте то урадили у изворној формули:

    =TRIM(RemoveNumbers(A2))

    Раздвојите бројеве и текст у засебне колоне

    У ситуацији када желите да раздвојите текст и бројеве у две колоне, било би лепо да се посао обави помоћу једне формуле , договорити се? За ово, само спојимо код функција РемовеТект и РемовеНумберс у једну функцију, под називом СплитТектНумберс , или једноставно Сплит , или шта год желите :)

    ВБА код 1:

    Функција СплитТектНумберс(стр Ас Стринг , ис_ремове_тект као Боолеан ) Као Низ Дим сНум, сТект, сЦхар Као стринг сЦурЦхар = сНум = сТект = "" За и = 1 За Лен(стр) сЦурЦхар = Мид(стр, и, 1) Ако је Тачно = ИсНумериц(сЦурЦхар) Тада је сНум = сНум &амп; сЦурЦхар Елсе сТект = сТект &амп; сЦурЦхар Енд Иф Нект и Иф Труе = ис_ремове_тект Онда СплитТектНумберс = сНум Елсе СплитТектНумберс = сТект Енд Иф Енд Функција

    ВБА код 2:

    Функција СплитТектНумберс(стр Ас Стринг , ис_ремове_тект) Као Стринг Са ЦреатеОбјецт ( "ВБСцрипт.РегЕкп" ) .Глобал = Труе Ако је Труе = ис_ремове_тект Онда .Паттерн = "[^0-9]" Иначе.Паттерн = "[0-9]" Енд Иф СплитТектНумберс = .Реплаце(стр, "" ) Енд Витх Енд Фунцтион

    Наша нова прилагођена функција захтева два аргумента:

    СплитТектНумберс(стринг, ис_ремове_тект)

    Где ис_ремове_тект је Боолеан вредност која показује које знакове треба уклонити:

    • ТРУЕ или 1 - уклонити текст и задржати бројеве
    • ФАЛСЕ или 0 - уклонити бројеве и задржати текст

    За наш пример скупа података, формуле имају овај облик:

    Да бисте уклонили ненумеричке знакове:

    =SplitTextNumbers(A2, TRUE)

    Да бисте избрисали нумеричке знакове :

    =SplitTextNumbers(A2, FALSE)

    Савет. Да бисте избегли потенцијални проблем са водећим размацима, препоручујем да увек умотате формулу која уклања бројеве у функцију ТРИМ:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Специјална алатка за уклањање бројева или текста

    За оне који то раде не волим да непотребно компликујемо ствари, показаћу наш сопствени начин уклањања текста или бројева у Екцел-у.

    Под претпоставком да је наш Ултимате Суите додат на вашу Екцел траку, ово је оно што радите:

    1. На картици Аблебитс Дата , у групи Тект кликните на Уклони &гт; Уклони знакове .

  • У окну програмског додатка изаберите опсег извора, изаберите опцију Уклони скупове знакова и изаберите било који Текст знакови или Нумерички знакови у падајућој листи.
  • Притисните Уклони и уживајте у резултату :)
  • Савет. Ако резултати садрже неке водеће размаке, Трим Спацесалат ће их елиминисати за кратко време.

    Тако можете уклонити текстуалне или нумеричке знакове из стринга у Екцел-у. Захваљујем вам на читању и радујем се што ћу вас видети на нашем блогу следеће недеље!

    Доступна преузимања

    Уклоните текст или бројеве у Екцел-у – примери (.клсм датотека)

    Ултимате Суите - пробна верзија (.еке датотека)

    Мајкл Браун је посвећен технолошки ентузијаста са страшћу за поједностављење сложених процеса помоћу софтверских алата. Са више од деценије искуства у технолошкој индустрији, усавршио је своје вештине у Мицрософт Екцел-у и Оутлоок-у, као и у Гоогле табеле и документима. Мајклов блог посвећен је дељењу свог знања и стручности са другима, пружајући једноставне савете и упутства за побољшање продуктивности и ефикасности. Без обзира да ли сте искусан професионалац или почетник, Мајклов блог нуди вредне увиде и практичне савете како да на најбољи начин искористите ове основне софтверске алате.