Апошняе слова

Простая, на першы погляд, задача з невідавочным рашэннем: выняць апошняе слова з радка тэксту. Ну або, у агульным выпадку, апошні фрагмент, падзелены зададзеным знакам-падзельнікам (прабелам, коскай і г.д.). Іншымі словамі, неабходна рэалізаваць зваротны пошук (з канца ў пачатак) у радку дадзены сімвал, а затым выняць усе сімвалы справа ад яго.

Давайце паглядзім на некалькі традыцыйных спосабаў выбару: формулы, макрасы і праз Power Query.

Спосаб 1. Формулы

Каб лягчэй было зразумець сутнасць і механізм формулы, пачнем крыху здалёк. Па-першае, давайце павялічым колькасць прабелаў паміж словамі ў нашым зыходным тэксце, напрыклад, да 20 штук. Вы можаце зрабіць гэта з дапамогай функцыі замены. ЗАМЕННІК (ЗАМЕНА) і функцыя паўтарэння дадзенага сімвала N-разоў - паўторым (Паўтор):

Апошняе слова

Цяпер з дапамогай функцыі мы адразаем 20 сімвалаў з канца атрыманага тэксту ПРАВА (СПРАВА):

Апошняе слова

Становіцца цяплей, праўда? Засталося прыбраць лішнія прабелы з дапамогай функцыі TRIM (ТРЫМ) і праблема будзе вырашана:

Апошняе слова

У англійскай версіі наша формула будзе выглядаць так:

=АБСЯРЦІЦЬ(ПРАВА(ПАДСТАВІЦЬ(A1;» «;ПАВТОР(» «;20));20))

Спадзяюся, зразумела, што ў прынцыпе неабавязкова ўстаўляць роўна 20 прабелаў – падыдзе любая лічба, калі яна перавышае даўжыню самага доўгага слова ў зыходным тэксце.

А калі зыходны тэкст трэба падзяліць не прабелам, а іншым знакам-падзельнікам (напрыклад, коскай), то нашу формулу трэба будзе крыху падправіць:

Апошняе слова

Спосаб 2. Макрафункцыя

Задачу выдзялення апошняга слова або фрагмента з тэксту таксама можна вырашыць з дапамогай макрасаў, а менавіта, напісаўшы функцыю зваротнага пошуку ў Visual Basic, якая будзе рабіць тое, што нам трэба – шукаць зададзены падрадок у радку ў процілеглым кірунку – ад канец да пачатку.

Націсніце спалучэнне клавіш Alt+F11 альбо кнопка Візуальны Бейсик таб распрацоўшчык (Распрацоўшчык)каб адкрыць рэдактар ​​макрасаў. Затым дадайце новы модуль праз меню Устаўка – модуль і скапіруйце туды наступны код:

 Функцыя LastWord(txt As String, неабавязковы delim As String = " ", неабавязковы n As Integer = 1) As String arFragments = Split(txt, delim) LastWord = arFragments(UBound(arFragments) - n + 1) End Function  

Цяпер вы можаце захаваць кнігу (у фармаце з падтрымкай макрасаў!) і выкарыстоўваць створаную функцыю ў наступным сінтаксісе:

=Апошняе слова(txt; раздзяленне; n)

дзе

  • TXT – ячэйка з зыходным тэкстам
  • размежаваць — знак-падзельнік (па змаўчанні — прабел)
  • n – якое слова трэба выцягнуць з канца (па змаўчанні – першае з канца)

Апошняе слова

Пры любых зменах у зыходным тэксце ў будучыні наша функцыя макраса будзе пералічана на хаду, як любая стандартная функцыя аркуша Excel.

Спосаб 3. Power Query

Запыт на харчаванне гэта бясплатнае дапаўненне ад Microsoft для імпарту даных у Excel практычна з любой крыніцы і пераўтварэння загружаных даных у любую форму. Магутнасць і крутасць гэтай надбудовы настолькі вялікія, што Microsoft убудавала ўсе яе функцыі ў Excel 2016 па змаўчанні. Для Excel 2010-2013 Power Query можна спампаваць бясплатна адсюль.

Наша задача аддзялення апошняга слова або фрагмента праз зададзены раздзяляльнік з дапамогай Power Query вырашаецца вельмі проста.

Спачатку давайце ператворым нашу табліцу даных у разумную табліцу з дапамогай спалучэнняў клавіш. Ctrl+T або каманды Галоўная - фармат у выглядзе табліцы (Галоўная — фармат у табліцу):

Апошняе слова

Затым мы загружаем створаную «разумную табліцу» ў Power Query з дапамогай каманды З табліцы/дыяпазону (З табліцы/дыяпазону) таб Дата (калі ў вас Excel 2016) або на ўкладцы Запыт на харчаванне (калі ў вас Excel 2010-2013):

Апошняе слова

У якое адкрылася акне рэдактара запытаў на ўкладцы Пераўтварэнне (Ператварэнне) выбраць каманду Раздзяліць слупок – па падзельніку (Раздзяліць слупок — па падзельніку) а затым застаецца ўсталяваць сімвал падзельніка і выбраць опцыю Крайні правы падзельніквыразаць не ўсе словы, а толькі апошняе:

Апошняе слова

Пасля націску на кнопку OK апошняе слова будзе вылучана ў новы слупок. Непатрэбны першы слупок можна выдаліць, пстрыкнуўшы яго загаловак правай кнопкай мышы і выбраўшы Выдаленне (Выдаліць). Вы таксама можаце перайменаваць астатні слупок у загалоўку табліцы.

Вынікі можна загрузіць назад на ліст з дапамогай каманды Галоўная — Зачыніць і загрузіць — Зачыніць і загрузіць у… (Галоўная старонка — Зачыніць і загрузіць — Зачыніць і загрузіць у…):

Апошняе слова

І ў выніку атрымліваем:

Апошняе слова

Вось так – танна і весела, без формул і макрасаў, амаль не дакранаючыся клавіятуры 🙂

Калі зыходны спіс зменіцца ў будучыні, дастаткова будзе пстрыкнуць правай кнопкай мышы або скарыстацца спалучэннем клавіш Ctrl+Alt+F5 абнавіць наш запыт.


  • Падзяленне ліпкага тэксту на слупкі
  • Разбор і разбор тэксту з рэгулярнымі выразамі
  • Выманне першых слоў з тэксту з дапамогай функцыі SUBSTITUTE

Пакінуць каментар