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