Съдържание
Следващата част от операциите ни с текст в електронни таблици е посветена на извличането. Открийте начини за извличане на различни данни - текст, символи, числа, URL адреси, имейл адреси, дата и час и т.н. - от различни позиции в няколко клетки на Google Sheets едновременно.
Формули на Google Sheets за извличане на текст и числа от низове
Докато някои комбинации добавят текст & числа и премахват различни символи, някои от тях също така извличат текст, числа, отделни символи и т.н.
Извличане на данни по позиция: първи/последен/среден N знака
Най-лесните функции, с които трябва да се справите, когато искате да извадите данни от клетките на Google Sheets, са LEFT, RIGHT и MID. Те извличат всички данни по позиция.
Извличане на данни от началото на клетките в Google Sheets
Можете лесно да изтеглите първите N символа с помощта на функцията LEFT:
LEFT(низ,[брой_на_символите])- низ е текстът, от който искате да извлечете данни.
- number_of_characters е броят на символите, които трябва да се извадят, като се започне отляво.
Ето най-простият пример: нека премахнем кодовете на държавите от телефонните номера:
Както виждате, кодовете на държавите заемат 6 символа в началото на клетките, така че формулата, която ви е необходима, е:
=LEFT(A2,6)
Съвет: ArrayFormula ще даде възможност да се получат 6 символа от целия диапазон наведнъж:
=ArrayFormula(LEFT(A2:A7,6))
Извличане на данни от края на клетките в Google Sheets
За да извадите последните N символа от клетките, използвайте функцията RIGHT:
RIGHT(низ,[брой_знаци])- низ все още е текстът (или препратка към клетка), от който се извличат данни.
- number_of_characters е също така броят на символите, които ще бъдат взети от дясната страна.
Нека получим имената на държавите от същите телефонни номера:
Те изискват само 2 символа и точно това споменавам във формулата:
=ПРАВО(A2,2)
Съвет: ArrayFormula също така ще ви помогне да извлечете данни от края на всички клетки на Google Sheets наведнъж:
=ArrayFormula(RIGHT(A2:A7,2))
Извличане на данни от средата на клетките в Google Sheets
Ако има функции за извличане на данни от началото и края на клетките, трябва да има и функция за извличане на данни от средата. И да - има такава.
Нарича се MID:
MID(string, starting_at, extract_length)- низ - текста, от който искате да премахнете средната част.
- starting_at - позицията на символа, от който искате да започнете да получавате данните.
- extract_length - броя на символите, които трябва да изтеглите.
Като пример за същите телефонни номера, нека намерим самите телефонни номера без техните кодове на държави и съкращения на държави:
Тъй като кодовете на държавите завършват с 6-ия знак, а 7-ият е тире, ще изтегля числата, започвайки от 8-ия знак. И ще получа общо 8 цифри:
=MID(A2,8,8)
Съвет. Промяната на една клетка в целия диапазон и обвиването ѝ в ArrayFormula ще ви предостави резултата за всяка клетка наведнъж:
=ArrayFormula(MID(A2:A7,8,8))
Извличане на текст/числа от низове
Понякога извличането на текст по позиция (както е показано по-горе) не е възможно. Необходимите низове могат да се намират във всяка част от клетките и да се състоят от различен брой символи, което налага да създавате различни формули за всяка клетка.
Но Google Sheets нямаше да бъде Google Sheets, ако не разполагаше с други функции, които помагат за извличане на текст от низове.
Нека разгледаме няколко възможни начина, които електронните таблици предлагат.
Извличане на данни преди определен текст - LEFT+SEARCH
Когато искате да извлечете данни, които предхождат определен текст, използвайте LEFT + SEARCH:
- LEFT се използва за връщане на определен брой символи от началото на клетките (от лявата им страна).
- ТЪРСЕНЕ НА търси определени символи/нишки и определя тяхната позиция.
Комбинирайте ги - и LEFT ще върне броя на символите, предложени от SEARCH.
Ето един пример: как се извличат текстови кодове преди всяко "ea"?
Това е формулата, която ще ви помогне в подобни случаи:
=LEFT(A2,SEARCH("ea",A2)-1)
Ето какво се случва във формулата:
- SEARCH("ea",A2) търси 'ea' в A2 и връща позицията, от която започва 'ea' за всяка клетка - 10.
- Така че на 10-та позиция се намира 'e'. Но тъй като искам всичко точно преди 'ea', трябва да извадя 1 от тази позиция. В противен случай ще бъде върнато и 'e'. Така че накрая получавам 9.
- LEFT преглежда A2 и получава първите 9 символа.
Извличане на данни след текста
Съществуват и средства за получаване на всичко след определен текстов низ. Но този път RIGHT няма да помогне. Вместо това идва ред на REGEXREPLACE.
Съвет: REGEXREPLACE използва регулярни изрази. Ако не сте готови да работите с тях, има много по-лесно решение, описано по-долу. REGEXREPLACE(text, regular_expression, replacement)
- текст е низ или клетка, в която искате да направите промени.
- regular_expression е комбинацията от знаци, която обозначава търсената част от текста.
- замяна е всичко, което искате да получите вместо този текст
И така, как да го използвате, за да извлечете данни след определен текст - "ea" в моя пример?
Лесно - по тази формула:
=REGEXREPLACE(A2,"(.*)ea(.*)","$2")
Нека обясня как точно работи тази формула:
- A2 е клетката, от която извличам данните.
- "(.*)ea(.*)" е моят регулярен израз (или можете да го наречете маска). Търся 'ea' и поставям всички останали символи в скоби. Има 2 групи символи - всичко преди 'ea' е първата група (.*), а всичко след 'ea' е втората (.*). Цялата маска се поставя в двойни кавички.
- "$2" е това, което искам да получа - втората група (откъдето идва и нейният номер 2) от предишния аргумент.
Съвет. Всички символи, използвани в регулярните изрази, са събрани на тази специална страница.
Извличане на числа от клетките на Google Sheets
Какво да направите, ако искате да извлечете само числа, когато тяхната позиция и всичко, което е преди и след тях, нямат значение?
Маските (известни още като регулярни изрази) също ще помогнат. Всъщност ще използвам същата функция REGEXREPLACE и ще променя регулярния израз:
=REGEXREPLACE(A2,"[^[:цифри:]]", "")
- A2 е клетката, от която искам да получа тези числа.
- "[^[:цифри:]]" е регулярен израз, който приема всичко освен цифрите. Символът ^caret прави изключение за цифрите.
- "" замества всичко, с изключение на числовите знаци, с "нищо". Или, с други думи, премахва ги изцяло, оставяйки само числа в клетките. Или извлича числата :)
Извличане на текст, като се игнорират числата и други символи
По подобен начин можете да извадите само буквени данни от клетките на Google Sheets. Свиването на регулярния израз, който означава текст, се нарича съответно - alpha:
=REGEXREPLACE(A2,"[^[:alpha:]]", "")
Тази формула отнема всичко освен буквите (A-Z, a-z) и буквално го заменя с "нищо". Или, казано по друг начин, отнема само буквите.
Начини за извличане на данни от клетките на Google Sheets без формули
Ако търсите лесен начин за извличане на различни видове данни без формули, сте попаднали на правилното място. Нашата добавка Power Tools разполага с подходящите инструменти за тази задача.
Извличане на различни типове данни с помощта на допълненията на Power Tools
Първият инструмент, с който бих искал да се запознаете, се нарича Extract. Той прави точно това, което сте търсили в тази статия - извлича различни видове данни от клетките на Google Sheets.
Удобни за потребителя настройки
Всички случаи, които разгледах по-горе, не могат да бъдат решени само с добавката. Инструментът е удобен за използване така че всичко, което трябва да направите, е да изберете диапазона, който искате да обработите, и да поставите отметка в необходимите квадратчета. Няма формули, няма регулярни изрази.
Спомняте ли си втората точка от тази статия с REGEXREPLACE и регулярните изрази? Ето колко е просто за добавката:
Допълнителни опции
Както можете да видите, има някои допълнителни опции (само квадратчета за отметка), които можете да бързо включване/изключване за да получите най-точния резултат:
- Получаване на низовете само на необходимия корпус на текста.
- Изтеглете всички случаи от всяка клетка и ги поставете в една клетка или в отделни колони.
- Вмъкнете нова колона с резултата вдясно от изходните данни.
- Изчистване на извлечения текст от изходните данни.
Извличане на различни типове данни
Power Tools не само извлича данни преди/след/между определени текстови низове и първите/последните N символа, но също така извлича следното:
- Числа заедно с техните десетични дроби, като се запазват разделителите между десетичните дроби и хилядите:
Извличане на произволен низ от данни отвсякъде
Има и възможност да създадете свой собствен модел и да го използвате за извличане. Извлечение от маска и неговите заместващи символи - * и ? - върши работа:
- Например можете да изведете всичко между скобите, като използвате следната маска: (*)
- Или вземете тези SKU, които имат само 5 числа в идентификаторите си: SKU?????
- Или, както показвам на снимката по-долу, изтеглете всичко след всяко "ea" във всяка клетка: ea*
Извличане на дата и час от времеви маркери
Като бонус има по-малък инструмент за извличане на дата и час от времеви маркери - той се нарича Split Date & Time.
Въпреки че е създадена първо за разделяне на времеви маркери, тя е напълно способна да получи една от желаните единици поотделно:
Просто изберете едно от квадратчетата за отметка в зависимост от това какво искате да извлечете - дата или час - от времевите маркери в Google Sheets и натиснете Сплит . Необходимата единица ще бъде копирана в нова колона (или ще замени първоначалните данни, ако изберете и последното квадратче):
Този инструмент също е част от добавката Power Tools, така че след като го инсталирате, за да получите каквито и да било данни от клетките на Google Sheets, той ви е напълно достъпен. Ако не, моля, оставете коментар и ние ще ви помогнем :)