Екцел ВБА Сплит функција - објашњено са примерима

Када радите са ВБА у Екцелу, можда ћете морати да поделите низ на различите делове на основу граничника.

На пример, ако имате адресу, можете користити функцију ВБА Сплит да бисте добили различите делове адресе који су одвојени зарезом (што би у овом случају било разграничење).

СПЛИТ је уграђена функција низа у програму Екцел ВБА коју можете користити за раздвајање текстуалног низа на основу граничника.

Екцел ВБА СПЛИТ функција - Синтакса

Поделите (израз, [разграничење], [ограничење], [упореди])
  • Израз: Ово је низ који желите да поделите на основу граничника. На пример, у случају примера адресе, цела адреса би била „израз“. У случају да се ради о низу нулте дужине (“”) СПЛИТ функција би вратила празан низ.
  • Раздвајач: Ово је опциони аргумент. Ово је граничник који се користи за раздвајање аргумента „израз“. У случају нашег примера адресе, зарез је граничник који се користи за поделу адресе на различите делове. Ако не наведете овај аргумент, размак се сматра подразумеваним граничником. У случају да дате низ нулте дужине („”), функција враћа цео низ „Екпрессион”.
  • Ограничење: Ово је опциони аргумент. Овде наводите укупан број поднизова које желите да вратите. На пример, ако желите да вратите само прве три подниз из аргумента „Екпрессион“, то би било 3. Ако не наведете овај аргумент, подразумевана вредност је -1, која враћа све поднизове.
  • Упоредити: Ово је опциони аргумент. Овде наводите тип поређења које желите да функција СПЛИТ изврши приликом процењивања поднизова. Доступне су следеће опције:
    • Када је Упореди 0: Ово је бинарно поређење. То значи да ако је ваш граничник текстуални низ (рецимо АБЦ), то ће разликовати велика и мала слова. „АБЦ“ не би било једнако са „абц“.
    • Када је Упореди 1: Ово је поређење текста. То значи да ако је ваш граничник текстуални низ (рецимо АБЦ), онда би се чак и ако имате „абц“ у низу „израз“ сматрао разделником.

Сада када смо покрили основе функције СПЛИТ, погледајмо неколико практичних примера.

Пример 1 - Поделите речи у реченици

Претпоставимо да имам текст - „Брза смеђа лисица прескаче лењег пса“.

Могу да користим функцију СПЛИТ да сваку реч ове реченице унесем као засебну ставку у низу.

Код испод би ово учинио:

Суб СплитВордс () Дим ТектСтрнг Ас Стринг Дим Ресулт () Ас Стринг ТектСтрнг = "Брза смеђа лисица прескаче лењивог пса" Резултат () = Сплит (ТектСтрнг) Енд Суб

Иако код не чини ништа корисно, помоћи ће вам да разумете шта функција Сплит у ВБА ради.

Функција Сплит дели текстуални низ и додељује сваку реч низу Ресулт.

Дакле, у овом случају:

  • Резултат (0) складишти вредност „Тхе“
  • Резултат (1) складишти вредност „Брзо“
  • Резултат (2) похрањује вриједност “Бровн” и тако даље.

У овом примеру смо навели само први аргумент - а то је текст који треба поделити. Пошто није наведен разделник, за подразумевани разделник узима се размак.

Важна напомена:

  1. ВБА СПЛИТ функција враћа низ који почиње од базе 0.
  2. Када је резултат функције СПЛИТ додељен низу, тај низ мора бити декларисан као Стринг тип података. Ако га декларишете као тип података Вариант, приказаће се грешка неусклађености типа). У горњем примеру, имајте на уму да сам Ресулт () декларисао као Стринг тип података.

Пример 2 - Пребројите број речи у реченици

Помоћу функције СПЛИТ можете добити укупан број речи у реченици. Трик овде је пребројати број елемената у низу који добијете када поделите текст.

Код испод приказује оквир за поруку са бројем речи:

Суб ВордЦоунт () Дим ТектСтрнг Ас Стринг Дим ВордЦоунт Ас Интегер Дим Ресулт () Ас Стринг ТектСтрнг = "Брза смеђа лисица прескаче лењег пса" Резултат = Сплит (ТектСтрнг) ВордЦоунт = УБоунд (Ресулт ()) + 1 МсгБок "Тхе Бројање речи је „& ВордЦоунт Енд Суб

У овом случају, функција УБоунд говори нам горњу границу низа (тј. Највећи број елемената које низ има). Пошто је основа низа 0, додаје се 1 да би се добио укупан број речи.

Сличан код можете користити за креирање прилагођене функције у ВБА која ће узети текст као унос и вратити број речи.

Доњи код ће створити ову функцију:

Функција ВордЦоунт (ЦеллРеф као опсег) Дим ТектСтрнг Ас Стринг Дим Ресулт () Ас Стринг Ресулт = Сплит (ВорксхеетФунцтион.Трим (ЦеллРеф.Тект), "") ВордЦоунт = УБоунд (Ресулт ()) + 1 Енд Фунцтион

Једном створена, можете користити функцију ВордЦоунт као и било коју другу редовну функцију.

Ова функција такође обрађује водеће, задње и двоструке размаке између речи. То је омогућено употребом функције ТРИМ у ВБА коду.

У случају да желите да сазнате више о томе како ова формула функционише за пребројавање броја речи у реченици или желите да сазнате о начину који не садржи ВБА формулу за добијање броја речи, погледајте овај водич.

Пример 3 - Употреба разделника осим размака

У претходна два примера користили смо само један аргумент у функцији СПЛИТ, а остали су подразумевани аргументи.

Када користите неки други граничник, морате то навести у формули СПЛИТ.

У доњем коду, функција СПЛИТ враћа низ заснован на зарезу као граничник, а затим приказује поруку са сваком речју у посебном реду.

Суб ЦоммаСепаратор () Дим ТектСтрнг Ас Стринг Дим Ресулт () Ас Стринг Дим ДисплаиТект Ас Стринг ТектСтрнг = "Тхе, Куицк, Бровн, Фок, Јумп, Овер, Тхе, Лази, Дог" Ресулт = Сплит (ТектСтрнг, ",") За и = ЛБоунд (Ресулт ()) То УБоунд (Ресулт ()) ДисплаиТект = ДисплаиТект & Ресулт (и) & вбНевЛине Нект и МсгБок ДисплаиТект Енд Суб

У горњем коду сам користио петљу Фор Нект да прођем кроз сваки елемент низа „Ресулт“ и доделим је променљивој „ДисплаиТект“.

Пример 4 - Поделите адресу на три дела

Помоћу функције СПЛИТ можете одредити колико бројева подјела желите да добијете. На пример, ако ништа не наведем, свака инстанца граничника ће се користити за раздвајање низа.

Али ако наведем 3 као границу, тада ће се низ поделити само на три дела.

На пример, ако имам следећу адресу:

2703 Винифред Ваи, Индианаполис, Индиана, 46204

Могу да користим функцију Сплит у ВБА да ову адресу поделим на три дела.

Он дели прва два на основу граничника зареза, а преостали део постаје трећи елемент низа.

Код испод приказује адресу у три различита реда у оквиру за поруку:

Суб ЦоммаСепаратор () Дим ТектСтрнг Ас Стринг Дим Ресулт () Ас Стринг Дим ДисплаиТект Ас Стринг ТектСтрнг = "2703 Винифред Ваи, Индианаполис, Индиана, 46204" Ресулт = Сплит (ТектСтрнг, ",", 3) За и = ЛБоунд (Резултат ( )) У УБоунд (Ресулт ()) ДисплаиТект = ДисплаиТект & Ресулт (и) & вбНевЛине Нект и МсгБок ДисплаиТект Енд Суб

Једна од практичних употреба овога могла би бити када желите подијелити адресу у једном реду у формат приказан у оквиру за поруку. Затим можете креирати прилагођену функцију која враћа адресу подељену на три дела (са сваким делом у новом реду).

Следећи код би то урадио:

Функција ТхрееПартАддресс (целлРеф Ас Ранге) Дим ТектСтрнг Ас Стринг Дим Ресулт () Ас Стринг Дим ДисплаиТект Ас Стринг Ресулт = Сплит (целлРеф, ",", 3) Фор и = ЛБоунд (Ресулт ()) То УБоунд (Ресулт ()) ДисплаиТект = ДисплаиТект & Трим (Ресулт (и)) & вбНевЛине Нект и ТхрееПартАддресс = Мид (ДисплаиТект, 1, Лен (ДисплаиТект) - 1) Крајња функција

Када овај код имате у модулу, можете користити функцију (ТхрееПартАддресс) у радној свесци, као и било коју другу Екцел функцију.

Ова функција узима један аргумент - референцу ћелије која има адресу.

Имајте на уму да морате да се резултујућа адреса појави у три различита реда, морате да примените формат текста за прелом на ћелије (налази се на картици Почетна у групи Поравнање). Ако формат „Прелом текста“ није омогућен, видећете целу адресу у једном ретку.

Пример 5 - Добијте назив града са адресе

Помоћу функције Сплит у ВБА можете одредити који део резултујућег низа желите да користите.

На пример, претпоставимо да делим следећу адресу на основу зареза као граничника:

2703 Винифред Ваи, Индианаполис, Индиана, 46204

Резултујући низ би изгледао нешто као што је приказано испод:

{"2703 Винифред Ваи", "Индианаполис", "Индиана", "46204"}

Пошто је ово низ, могу изабрати да прикажем или вратим одређени део овог низа.

Испод је код за прилагођену функцију, где можете навести број и он ће вратити тај елемент из низа. На пример, ако желим назив државе, могу да наведем 3 (пошто је то трећи елемент у низу).

Функција РетурнНтхЕлемент (ЦеллРеф Ас Ранге, ЕлементНумбер Ас Интегер) Дим Ресулт () Ас Стринг Ресулт = Сплит (ЦеллРеф, ",") РетурнНтхЕлемент = Ресулт (ЕлементНумбер - 1) Крај Функција

Горња функција узима два аргумента, референцу ћелије која има адресу и број елемента који желите да вратите. Функција Сплит раздваја елементе адресе и додељује је променљивој Ресулт.

Затим враћа број елемента који сте навели као други аргумент. Имајте на уму да пошто је база 0, ЕлементНумбер-1 се користи за враћање исправног дела адресе.

Ова прилагођена формула најбоље одговара када имате доследан формат у свим адресама - тј. Град се увек помиње после две зарезе. Ако подаци нису доследни, нећете добити жељени резултат.

У случају да желите назив града, можете користити 2 као други аргумент. У случају да користите број који је већи од укупног броја елемената, вратио би се #ВАЛУЕ! грешка.

Можете додатно поједноставити код као што је приказано испод:

Функција РетурнНтхЕлемент (ЦеллРеф Ас Ранге, ЕлементНумбер Ас Интегер) РетурнНтхЕлемент = Сплит (ЦеллРеф, ",") (ЕлементНумбер - 1) Крај функција

У горњем коду, уместо да користи променљиву Ресулт, она враћа само наведени број елемента.

Дакле, ако имате Сплит ("Добро јутро") (0), вратио би се само први елемент, који је "Добро".

Слично, у горњем коду враћа само наведени број елемента.

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave