Функция TEXTSPLIT в Excel: разделяне на текстови низове по разделител

  • Споделя Това
Michael Brown

В урока е показано как да използвате чисто новата функция TEXTSPLIT за разделяне на низове в Excel 365 по всеки зададен от вас разделител.

Възможно е да има различни ситуации, в които да се наложи да разделите клетки в Excel. В предишните версии вече разполагахме с редица инструменти за изпълнение на задачата, като например Text to Columns (Текст към колони) и Fill Flash (Попълване на светкавица). Сега вече имаме и специална функция за тази цел - TEXTSPLIT, която може да раздели низ в няколко клетки в колони и/или редове въз основа на зададените от вас параметри.

    Функция TEXTSPLIT на Excel

    Функцията TEXTSPLIT в Excel разделя текстови низове по зададен разделител в колони и/или редове. Резултатът е динамичен масив, който автоматично се разлива в няколко клетки.

    Функцията приема до 6 аргумента, от които само първите два са задължителни.

    TEXTSPLIT(text, col_delimiter, [row_delimiter], [ignore_empty], [match_mode], [pad_with])

    текст (задължително) - текстът за разделяне. Може да бъде зададен като низ или препратка към клетка.

    col_delimiter (задължително) - символ(и), който(ито) указва(т) къде да се раздели текстът по колони. Ако е пропуснат, row_delimiter трябва да бъдат дефинирани.

    row_delimiter (по избор) - символ(и), който(ито) указва къде да се раздели текстът в редовете.

    ignore_empty (незадължително) - указва дали да се игнорират празните стойности или не:

    • FALSE (по подразбиране) - създава празни клетки за последователни разделители без стойност между тях.
    • TRUE - игнорира празни стойности, т.е. не създава празни клетки за два или повече последователни разделителя.

    match_mode (незадължително) - определя чувствителността към малки и големи букви за разделителя. По подразбиране е разрешено.

    • 0 (по подразбиране) - чувствителен към големи и малки букви
    • 1 - без значение на размера на буквите

    pad_with (незадължително) - стойност, която да се използва вместо липсващи стойности в двумерни масиви. По подразбиране е грешка #N/A.

    Например, за да разделите текстов низ в A2 на няколко клетки, като използвате запетая и интервал като разделител, формулата е:

    =TEXTSPLIT(A2, ", ")

    Наличие на TEXTSPLIT

    Функцията TEXTSPLIT е налична само в Excel за Microsoft 365 (Windows и Mac) и Excel за уеб.

    Съвети:

    • Във версиите на Excel, в които функцията TEXTSPLIT не е налична (различни от Excel 365), можете да използвате съветника за разделяне на клетките от текст в колони.
    • За да изпълните обратната задача, т.е. да обедините съдържанието на няколко клетки в една, като използвате определен разделител, трябва да използвате функцията TEXTJOIN.

    Основна формула TEXTSPLIT за разделяне на клетка в Excel

    Като начало нека видим как да използваме формулата TEXTSPLIT в нейната най-проста форма за разделяне на текстов низ по определен разделител.

    Разделяне на клетка хоризонтално по колони

    За да разделите съдържанието на дадена клетка на няколко колони, подайте препратка към клетката, съдържаща оригиналния низ за първата ( текст ) и разделителя, който маркира точката, в която трябва да се извърши разделянето за втория аргумент ( col_delimiter ).

    Например, за да разделите низа в A2 хоризонтално със запетая, формулата е:

    =TEXTSPLIT(A2, ",")

    За разделител се използва запетая, поставена в двойни кавички (",").

    В резултат на това всеки елемент, разделен със запетая, се поставя в отделна колона:

    Разделяне на клетка вертикално по редове

    За разделяне на текста на няколко реда третият аргумент ( row_delimiter ) е мястото, където се поставя разделителят. Вторият аргумент ( col_delimiter ) се пропуска в този случай.

    Например, за да разделите стойностите в A2 на различни редове, формулата е:

    =TEXTSPLIT(A2, ,",")

    Обърнете внимание, че и в двата случая формулата е въведена само в една клетка (C2). В съседните клетки върнатите стойности се разливат автоматично. Полученият масив (който се нарича диапазон на разливане) е подчертан със синя рамка, което показва, че всичко в него е изчислено от формулата в горната лява клетка.

    Разделяне на текст по подниз

    В много случаи стойностите в изходния низ са разделени с поредица от символи, като типичен пример за това са запетая и интервал. За да се справите с този сценарий, използвайте подниз за разделител.

    Например, за да разделите текста в A2 на няколко колони със запетая и интервал, използвайте символа ", " за col_delimiter .

    =TEXTSPLIT(A2, ", ")

    Формулата се пренася в B2 и след това се копира надолу в толкова клетки, колкото е необходимо.

    Разделяне на низ на колони и редове едновременно

    За да разделите текстов низ на редове и колони едновременно, дефинирайте двата разделителя във формулата TEXTSPLIT.

    Например, за да разделим текстовия низ в A2 на колони и редове, трябва да въведем:

    • Знакът за равенство ("=") за col_delimiter
    • Запетая и интервал (", ") за row_delimiter

    Пълната формула има следния вид:

    =TEXTSPLIT(A2, "=", ", ")

    Резултатът е двуизмерен масив, състоящ се от 2 колони и 3 реда:

    Разделяне на клетките с множество разделители

    За да се справите с множество или непоследователни разделители в изходния низ, използвайте константа на масив като {"x", "y", "z"} за аргумента за разделител.

    На скрийншота по-долу текстът в A2 е разделен както със запетаи (","), така и с точка и запетая (";") с и без интервали. За да разделите низа вертикално на редове по всички 4 варианта на разделителя, формулата е:

    =TEXTSPLIT(A2, , {",",", ",";",";"})

    Или можете да включите в масива само запетая (",") и точка (";") и след това да премахнете допълнителните интервали с помощта на функцията TRIM:

    =TRIM(TEXTSPLIT(A2, , {",",";"}))

    Разделяне на текст с игнориране на празни стойности

    Ако низът съдържа два или повече последователни разделителя без стойност между тях, можете да изберете дали да игнорирате тези празни стойности, или не. Това поведение се контролира от четвъртия ignore_empty който по подразбиране е FALSE.

    По подразбиране функцията TEXTSPLIT не пренебрегва празните стойности. Поведението по подразбиране работи добре за структурирани данни, както в примера по-долу.

    В тази примерна таблица липсват оценки в някои низове. Формулата TEXTSPLIT с ignore_empty Аргументът е пропуснат или е зададен на FALSE, като се справя перфектно с този случай, създавайки празна клетка за всяка празна стойност.

    =TEXTSPLIT(A2, ", ")

    Или

    =TEXTSPLIT(A2, ", ", FALSE)

    В резултат на това всички стойности се появяват в съответните колони.

    В случай че низовете ви съдържат хомогенни данни, може да е разумно да игнорирате празните стойности. ignore_empty на TRUE или 1.

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

    =TEXTSPLIT(A2, ", ", ,TRUE)

    В този случай липсващите стойности между последователните разделители се игнорират напълно:

    Разделяне на клетките с отчитане на големи и малки букви или без отчитане на големи и малки букви

    За да контролирате чувствителността на разделителя към малки и големи букви, използвайте петия аргумент, match_mode .

    По подразбиране, match_mode се задава на 0, което прави TEXTSPLIT отчитане на малки и големи букви .

    В този пример числата са разделени с малки букви "x" и големи букви "X".

    Формулата с чувствителност към малки и големи букви по подразбиране приема само малкия символ "x" като разделител:

    =TEXTSPLIT(A2, " x ")

    Обърнете внимание, че разделителят има интервал от двете страни на буквата " x ", за да се избегнат водещи и последващи интервали в резултатите.

    За да изключите чувствителността към големи и малки букви, подайте 1 за match_mode за да накарате формулата TEXTSPLIT да пренебрегне големината на буквите:

    =TEXTSPLIT(A2, " x ", , ,1)

    Сега всички низове се разделят правилно от двата разделителя:

    Поставяне на липсващи стойности в 2D масив

    Последният аргумент на функцията TEXTSPLIT, pad_with , идва на помощ в случай, че в изходния низ липсват една или повече стойности. Когато такъв низ е разделен на колони и редове, по подразбиране Excel връща грешки #N/A вместо липсващите стойности, за да не се наруши структурата на двумерен масив.

    В долния низ няма "=" ( col_delimiter ) след "Score". За да се запази целостта на получения масив, TEXTSPLIT извежда #N/A до "Score".

    За да направите резултата по-удобен за потребителя, можете да замените грешката #N/A с каквато искате стойност. Просто въведете желаната стойност в полето pad_with аргумент.

    В нашия случай това може да е тире ("-"):

    =TEXTSPLIT(A2, "=", ", ", , , ,"-")

    Или празен низ (""):

    =TEXTSPLIT(A2, "=", ", ", , ,"")

    След като научихте практическите приложения на всеки аргумент на функцията TEXTSPLIT, нека обсъдим няколко разширени примера, които могат да ви помогнат да се справите с нетривиални предизвикателства във вашите електронни таблици в Excel.

    Разделяне на дати на ден, месец и година

    За да разделите дадена дата на отделни единици, първо трябва да преобразувате датата в текст, тъй като функцията TEXTSPLIT работи с текстови низове, докато датите в Excel са числа.

    Най-лесният начин за преобразуване на числова стойност в текст е чрез функцията TEXT. Само не забравяйте да предоставите подходящ код за формат на датата.

    В нашия случай формулата е:

    =TEXT(A2, "m/d/yyyy")

    Следващата стъпка е да вложите горната функция в първия аргумент на TEXTSPLIT и да въведете съответния разделител за втория или третия аргумент, в зависимост от това дали разделяте по колони или редове. В този пример единиците за дата са разделени с наклонена черта, така че използваме "/" за col_delimiter аргумент:

    =TEXTSPLIT(TEXT(A2, "m/d/yyyy"), "/")

    Разделяне на клетки и премахване на определени символи

    Представете си следното: разделили сте дълъг низ на части, но полученият масив все още съдържа някои нежелани символи, като например скобите на снимката по-долу:

    =TEXTSPLIT(A2, " ", "; ")

    За да премахнете отварящите и затварящите скоби наведнъж, вложете две функции SUBSTITUTE една в друга (всяка от тях заменя една скоба с празен низ) и използвайте формулата TEXTSPLIT за текст аргумент на вътрешната SUBSTITUTE:

    =SUBSTITUTE(SUBSTITUTE(TEXTSPLIT(A2, " ", "; "), "(", ""), ")", "")

    Съвет. Ако крайният масив съдържа твърде много допълнителни символи, можете да ги изчистите, като използвате един от методите, описани в тази статия: Как да премахнем нежелани символи в Excel.

    Разделяне на низове с прескачане на определени стойности

    Да предположим, че искате да разделите следните низове в 4 колони: Първо име , Фамилия , Резултат , и Резултат . Проблемът е, че някои низове съдържат титлата "г-н" или "г-жа", поради което резултатите са грешни:

    Решението не е очевидно, но е съвсем просто :)

    В допълнение към съществуващите разделители, които са интервал (" ") и запетая и интервал (", "), включвате низовете "Mr. " и "Ms. " в col_delimiter масив, така че функцията да използва самите заглавия за разделяне на текста. За да игнорирате празните стойности, задайте ignore_empty на TRUE.

    =TEXTSPLIT(A2, {" ",", ", "Г-н ", "Г-жа"}, ,TRUE)

    Сега резултатите са абсолютно перфектни!

    Алтернативи на TEXTSPLIT

    Във версии на Excel, в които функцията TEXTSPLIT не се поддържа, можете да разделите низове, като използвате различни комбинации на функцията SEARCH / FIND с LEFT, RIGHT и MID. По-специално:

    • Търсене без разлика на големи и малки букви или Търсене с разлика на големи и малки букви определя позицията на разделителя в низ, а
    • Функциите LEFT (ляво), RIGHT (дясно) и MID (средно) извличат подниз преди, след или между два случая на разделителя.

    В нашия случай, за да разделим стойностите, разделени от запетая и интервал , формулите са следните.

    За да извлечете името:

    =ЛЕВО(A2, SEARCH(",", A2, 1) -1)

    За да изтеглите резултата:

    =MID(A2, SEARCH(",", A2) + 2, SEARCH(",", A2, SEARCH(",",A2)+1) - SEARCH(",", A2) - 2)

    За да получите резултата:

    =RIGHT(A2, LEN(A2) - SEARCH(",", A2, SEARCH(",", A2) + 1)-1)

    За подробно обяснение на логиката на формулите вижте Как да разделяме низове по символ или маска.

    Имайте предвид, че за разлика от функцията TEXTSPLIT за динамични масиви, тези формули следват традиционния подход с една формула и една клетка. Въвеждате формулата в първата клетка и след това я плъзгате надолу по колоната, за да я копирате в следващите клетки.

    Резултатите са показани на снимката на екрана по-долу:

    Това е начинът за разделяне на клетките в Excel 365 с помощта на TEXTSPLIT или алтернативни решения в по-ранни версии. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!

    Практическа работна тетрадка за изтегляне

    Функция TEXTSPLIT за разделяне на низове - примери за формули (.xlsx файл)

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.