Содржина
Сакате да ракувате со празни места на најефикасен начин? Користете редовни изрази за да ги отстраните сите празни места во ќелијата, да замените повеќе празни места со еден знак, да ги скратите празнините само помеѓу броевите и повеќе.
Кои и да внесувате податоци што ги користите, тешко дека ќе наидете на база на податоци без празни места. Во повеќето случаи, празно место е добро - го користите за визуелно одвојување на различни информации за полесно да се согледаат. Меѓутоа, во некои ситуации, може да стане зло - дополнителните празни места може да ви ги нарушат формулите и да ги направат вашите работни листови речиси неуправливи.
Зошто да користите регуларен израз за да ги намалите празнините во Excel?
Пред да се впуштиме во употребата на редовни изрази за отстранување празни места во работните листови на Excel, би сакал да се осврнам на прашањето што ми паѓа на ум на прво место - зошто ни се потребни регекси кога Excel веќе го има TRIM функција?
За да ја разбереме разликата, ајде да видиме што се смета за празно место во секој случај:
- Вградената функција TRIM може само да го откине празничниот знак што има вредност 32 во 7-битниот ASCII систем.
- Регуларните изрази можат да идентификуваат неколку различни форми на празно место како што се просторот ( ), tab (\t), carriage return (\r) и ново линија (\n). Дополнително, постои и знакот за празно место (\s) што одговара на сите овие типови и е исклучително корисен за чистење на сиров влезподатоци.
Знаејќи што точно се случува зад сцената, многу е полесно да се најде решение, нели?
Како да овозможите редовни изрази во Excel
Добро познат факт е дека Excel надвор од кутијата не поддржува регуларни изрази. За да ги овозможите, треба да креирате сопствена VBA функција. За среќа, веќе имаме еден, наречен RegExpReplace . Чекај, зошто да се „замени“ додека зборуваме за отстранување? На јазикот на Excel, „отстрани“ е само уште еден збор за „замени со празна низа“ :)
За да ја додадете функцијата во вашиот Excel, само копирајте го нејзиниот код од оваа страница, залепете го во уредникот VBA , и зачувајте ја вашата датотека како работна книга со овозможена макро (.xlsm).
Еве ја синтаксата на функцијата за вашата референца:
RegExpReplace(текст, шема, замена, [instance_num] , [match_case])Првите три аргументи се потребни, последните два се опционални.
Каде:
- Текст - оригиналната низа до барај внатре.
- Шама - регекс за пребарување.
- Замена - текстот со кој треба да се замени. За отстранување празни простори , би го поставиле овој аргумент на:
- празна низа ("") за да ги скратите апсолутно сите празни места
- space лик (" ") за замена на повеќе празни места со еден знак празно место
- Instance_num (незадолжително) - бројот на примерокот. Во повеќето случаи, ќе го испуштите за да ги замените сите примероци(стандардно).
- Match_case (незадолжително) - Булова вредност што покажува дали да се совпаѓа со (TRUE) или да се игнорира (FALSE) текстуална буква. За празно место, тоа е ирелевантно и затоа е испуштено.
За повеќе информации, погледнете ја функцијата RegExpReplace.
Како да се отстрани празно место со regex - примери
Со Функцијата RegExpReplace е додадена во вашата работна книга, ајде да се справиме со различни сценарија едно по едно.
Отстранете ги сите празни места користејќи regex
За да ги отстраните сите празни места во низата, едноставно пребарувате за кој било знак на празно место, вклучително и празно место, јазиче, враќање за превоз и довод на линија и заменете ги со празна низа ("").
Шема : \s+
Замена : ""
Претпоставувајќи дека изворната низа е во A5, формулата во B5 е:
=RegExpReplace(A5, "\s+", "")
За полесно управување со вашите обрасци , можете да го внесете регексот во предефинирана ќелија и да го снабдите со формулата користејќи апсолутна референца како $A$2, така што адресата на ќелијата ќе остане непроменета кога ја копирате формулата во колоната.
=RegExpReplace(A5, $A$2, "")
Отстранете повеќе од една празнина
За да отстраните дополнителен простор (т.е. повеќе од n едно последователно празно место), користете го истиот regex \s+, но пронајдените совпаѓања заменете ги со еден знак за празно место.
Шема : \s+
Замена : " "
=RegExpReplace(A5, "\s+", " ")
Ве молиме обрнете внимание дека оваа формула задржува еден знак празно место не само помеѓупод базата на податоци, да претпоставиме дека сакате да ги отсечете сите водечки/задоцнети простори и сите празни места освен еден, задржувајќи ги повеќе линии непроменети. За да ја исполните задачата, ќе ви требаат две различни функции RegExpReplace.
Првата функција заменува повеќе празни места со еден знак празно место.
=RegExpReplace(A5, " +", " ")
Другата ги отстранува празнините од почетокот и крајот на линијата:
=RegExpReplace(A5, "^ +| +$", "")
Само вгнездувајте ги двете функции една во друга:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")
И ќе добиете совршен резултат:
Regex за замена на повеќе празни места со еден знак
Во случај да сакате да ги отстраните сите празни места од низа и да ја замените секоја група последователни празни места со специфичен знак, ова е она што треба да го направите:
Прво, користете го овој регекс за да ги скратите празнините на водечките и задоцнетите:
=RegExpReplace(A8, "^[\s]+|[\s]+$", "")
Потоа, сервирајте ја горната функција до аргументот text на друг RegExpReplace што заменува едно или повеќе последователни празни места со знакот што го наведовте, на пр. цртичка:
Шема : \s+
Замена : -
Претпоставувајќи дека изворната низа е во A8, формулата ја има оваа форма:
=RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")
Или можете да ги внесете шаблоните и замените во посебни ќелии како што е прикажано на сликата од екранот:
Regex да се отстранат празните линии
Еве едно прашање што корисниците кои имаат повеќе линии во една ќелија често го поставуваат: „Има многу празни линии во моите ќелии. Дали има некој начин да се добиеослободете се од нив освен да поминете низ секоја ќелија и да ја избришете секоја линија рачно?" Одговорот: Лесно е!
Да се совпаднат празните линии што немаат ниту еден знак од почетокот ^ на тековната линија до следната линија \n, регексот е:
Шема : ^\n
Ако вашите визуелно празни линии содржат празни места или јазичиња, користете го овој редовен израз:
Шема : ^[\t ]*\n
Само заменете го регексот со празна низа користејќи ја оваа формула и сите празни линии ќе исчезнат одеднаш!
=RegExpReplace(A5, $A$2, "")
Отстранување празни места со RegEx Tools
Горенаведените примери покажаа само мал дел од прекрасните можности обезбедени од регексите. За жал, не сите карактеристиките на класичните редовни изрази се достапни во VBA.
За среќа, алатките RegEx вклучени во нашиот Ultimate Suite се ослободени од овие ограничувања бидејќи се обработуваат од моторот .NET RegEx на Microsoft. Ова ви овозможува да конструирате пософистицирани обрасци кои не се поддржани од VBA RegExp. Belo w ќе најдете пример за таков правилен израз.
Regex за отстранување на просторот помеѓу броевите
Во алфанумеричка низа, да претпоставиме дека сакате да ги отстраните празнините само помеѓу броевите, па низа како на пр. „A 1 2 B“ станува „A 12 B“.
За да се совпадне празно место помеѓу кои било две цифри, можете да ги користите следниве погледи наоколу:
Шема : (?<=\d)\s+(?=\d)
За да креирате формула базирана нана горенаведените регекси, еве два лесни чекори за извршување:
- На картичката Ablebits Data , во групата Text , кликнете Regex Алатки .
- На окното Regex Tools , изберете ги изворните податоци, внесете го вашиот регекс, изберете Отстрани опција и притиснете Отстрани .
За да ги добиете резултатите како формули, а не како вредности, не заборавајте да ставите штиклирање во полето за избор Вметни како формула .
За кратко време, ќе ја видите функцијата AblebitsRegexRemove вметната во нова колона десно од оригиналните податоци.
Алтернативно, можете да го внесете регексот во некоја ќелија , да речеме A5, и вметнете ја формулата директно во ќелија користејќи го полето за дијалог Вметни функција , каде што AblebitsRegexRemove е категоризирана под AblebitsUDFs .
Бидејќи оваа функција е специјално дизајнирана за отстранување низи, бара само два аргументи - влезната низа и регекс:
=AblebitsRegexRemove(A5, $A$2)
Така се отстрануваат празни места во Excel користејќи регуларни изрази. Ви благодарам што прочитавте и со нетрпение очекувам да се видиме на нашиот блог следната недела!
Достапни преземања
Отстранете ја празнината со regex - примери (датотека .xlsm)
Ultimate Suite - пробна верзија (датотека .exe)
зборови, но и на почетокот и на крајот на низа, што не е добро. За да се ослободите од водечките и задоцнети празни места, вгнездувајте ја горната формула во друга функција RegExpReplace што ги отстранува празнините од почетокот и крајот: =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")
Regex до отстранете го празното место водечко и задоцнето
За да пребарувате празно место на почетокот или крајот на линијата, користете ги котвите за почеток ^ и крајот на $.
Водечки празно место:
Шема : ^[\s]+
Заостанува празно место:
Шема : [\s ]+$
Водечки и заостанува празно место:
Шема : ^[\s]+