ВБА Придружите се | Примери корак по корак Екцел ВБА функције придруживања
Слично ономе што у радном листу имамо као функцију Цонцатенате и наредбу & која се користи за спајање два или више низова заједно, у ВБА за то користимо наредбу Јоин, у Јоин ин ВБА узимамо извор података у низу и слично спајању користимо граничник да им се придружимо.
Функција Екцел ВБА ЈОИН
Као што само име говори, ВБА ЈОИН функција користи се за спајање низа поднизова са наведеним граничником. Ако не наведемо ниједан граничник, тада је потребан „размак“ као подразумевани знак граничника. Ради исто као и функција Цонцатенате у програму Екцел, осим што морамо само једном навести знак разграничења, док у функцији Цонцатенате морамо сваки пут одредити знак раздвајача између сваке две жице.
Синтакса функције је
Као што видимо, функција узима два аргумента и враћа низ. Аргументи су:
- СоурцеАрраи: Морамо навести или дати референцу на низ поднизова који се спајају.
- Делимитер: Граничник се користи за одвајање сваког од поднизова приликом стварања резултујућег низа. Како је ово необавезни аргумент, ако га изоставимо, граничник је постављен као размак „“.
ВБА СПЛИТ функција је потпуно супротна од функције ВБА ЈОИН.
Примери ВБА функције придруживања
Испод су примери функције придруживања у програму Екцел ВБА.
Овај ВБА образац функције придруживања Екцел можете преузети овде - ВБА образац функције придруживања Екцел предлошкуВБА придруживање - Пример # 1
Претпоставимо да желимо да се придружимо првом (Рамесх), средњем (Кумар) и презимену (Мисхра).
Кораци би били:
- Прво, морамо отворити едитор висуал басиц. То можемо учинити кликом на команду „Висуал Басиц“ у групи „Код“ на картици „Девелопер“ екцел или можемо користити Екцел пречицу Алт + Ф11.
- Уметните модул десним кликом на „лист 1“ и одабиром команде „Инсерт“ из контекстуалног менија, а затим одаберите „Модуле“ за уметање.
- Направите потпрограм под називом „ПридруживањеНаме“.
Шифра:
Суб ЈоинингНаме () Крај Суб
- Користите функцију ЈОИН на следећи начин
Шифра:
Суб ЈоинингНаме () Ранге ("Д2"). Валуе = Јоин (Арраи ("Рамесх", "Кумар", "Мисхра")) Енд Суб
Видимо да смо користили функцију АРРАИ за пружање СоурцеАрраи-а функцији ЈОИН и прескочили да одредимо знак за раздвајање како би ‘размак’ био подразумевани знак. Обрађена вредност функције ЈОИН биће записана у ћелију Д2 када извршимо овај код помоћу тастера Ф5 или ручно.
ВБА придруживање - Пример # 2
Претпоставимо да желимо да креирамо разне екцел датотеке са називом ставке која садржи продају само за ту ставку.
- Отворите Висуал Басиц Едитор помоћу пречице Алт + Ф11.
- Кликните десним тастером миша на лист „Схеет1 ′ (Пример 2)“ да бисте отворили контекстуални мени и кликните на „Инсерт“ да бисте у ВБА пројекат уметнули ВБА „модул“.
- Дефинишите потпрограм под називом „ЦреатеИтемСолдФилес“.
Шифра:
Суб ЦреатеИтемСолдФилес () Крај Суб
- Морамо да поставимо референцу на „Мицрософт Сцриптинг Рунтиме“ библиотеку објеката помоћу менија Тоолс -> Референцес ... јер ћемо користити неки код (објекте), који неће функционисати ако не укључимо ову библиотеку објеката.
- Сада ћемо прогласити све променљиве.
Шифра:
Затамни ФСО као нови скрипт.ФилеСистемОбјецт
Горња ФСО променљива даје приступ ВБА ФилеСистемОбјецт. Након везивања можемо користити функције попут БуилдПатх, ЦопиФиле, ЦреатеТектФиле итд.
- Следећа изјава креира објект ТектСтреам. Кроз ТектСтреам објекат можемо читати или додавати изворну датотеку.
Шифра:
Дим ФСО Ас Нев Сцриптинг.ФилеСистемОбјецт Дим тс Ас Сцриптинг.ТектСтреам
- Прогласићемо више променљивих. 'р' је за држање редова у опсегу, 'фс' је за чување коначног спојеног низа, 'цолс' за чување бројева колона у опсегу, 'ФолПатх' за чување путање фасцикле како бисмо могли да сачувамо датотеке у фасцикли и 'Итемс_Солд' за чување различитих имена предмета да бисте креирали датотеку са тим именима.
Шифра:
Дим р Ас Ранге Дим фс Ас Стринг Дим цолс Ас Интегер Дим ФолПатх Ас Стринг Дим Итемс_Солд Ас Стринг
- Да бисмо пребројали укупан број колона у опсегу, дефинисаћемо следећу изјаву.
Шифра:
цолс = опсег ("А1"). ЦуррентРегион.Цолумнс.Цоунт
Ова изјава ће прво одабрати тренутни регион за ћелију А1, а затим ће избројати укупан број колона у тренутном региону.
- Написаћемо следеће изјаве за додељивање променљивој „ФолПатх“ путање помоћу функције ВБА ЕНВИРОН и Цонцатенатион Оператор.
Шифра:
ФолПатх = Енвирон ("УсерПрофиле") & "\ Десктоп \ Итемс_Солд" Ако није ФСО.ФолдерЕкистс (ФолПатх), онда ФСО.ЦреатеФолдер ФолПатх
Друга изјава ће створити директоријум ако директоријум не постоји на истој локацији.
- Овај код ће доделити вредности Б колоне једну по једну на „Итемс_Солд“ Користили смо „ОФФСЕТ фунцтион“ да бисмо добили референцу ћелије у Б колони, јер је тренутно изабрана ћелија у колони А.
Шифра:
Предмети_продати = р.Оффсет (0, 1) .Вредност
- Следећи обрубљени израз отвориће датотеке са именима ускладиштеним у променљивој ‘Итемс_Солд’ једну по једну у режиму додавања (нове вредности ће бити додате напокон).
Шифра:
Постави тс = ФСО.ОпенТектФиле (ФолПатх & "\" & Итемс_Солд & ".клс", ФорАппендинг, Труе)
Користили смо оператер Цонцатенате са променљивим „ФолПатх“ и „Итемс_Солд“ и статичким вредностима („\“ и „.клс“) да бисмо креирали имена датотека за екцел датотеке.
- Морамо имати на уму да функција ВБА ЈОИН узима само једнодимензионални низ као СоурцеАрраи Да бисмо претворили редове у једнодимензионални низ, морамо два пута да користимо методу Апплицатион.Транспосе.
Шифра:
фс = Придружи се (Апплицатион.Транспосе (Апплицатион.Транспосе (р.Ресизе (1, цолс) .Валуе)), вбТаб)
Користили смо методу Ресизе за опсег објекта за величину опсега на ширину броја колона у опсегу.
Као граничник, користили смо кључну реч „вбТаб“ како би се вредности попуњавале у различитим ћелијама.
- Како смо обрађену вредност функције ЈОИН ускладиштили у променљиву 'фс', записаћемо фс вредности у нове редове ВБА креираних екцел датотека за сваки ред у нашој оригиналној датотеци од реда број 2 до последњег реда (у нашем случају то је је 350. ред).
- Пре него што завршимо петљу, затворићемо отворену датотеку. Код би био као што је приказано на снимку екрана.
Сад смо написали пуни код.
Шифра:
Под ЦреатеИтемСолдФилес () Затамни ФСО као ново скриптирање.ФилеСистемОбјецт Дим тс Ас Сцриптинг.ТектСтреам Дим р Ас Ранге Дим фс Ас Стринг Дим цолс Ас Интегер Дим ФолПатх Ас Стринг Дим Итемс_Солд Ас Стринг цолс = Ранге ("А1"). ЦуррентРегион.Цолумнс. Броји ФолПатх = Енвиронмент ("УсерПрофиле") & "\ Десктоп \ Итемс_Солд" Ако није ФСО.ФолдерЕкистс (ФолПатх), онда ФСО.ЦреатеФолдер ФолПатх за сваки р у опсегу ("А2", опсег ("А1"). Крај (клДовн) ) Итемс_Солд = р.Оффсет (0, 1). Сет вредности тс = ФСО.ОпенТектФиле (ФолПатх & "\" & Итемс_Солд & ".клс", ФорАппендинг, Труе) фс = Јоин (Апплицатион.Транспосе (Апплицатион.Транспосе (р) .Ресизе (1, цолс) .Валуе)), вбТаб) тс.ВритеЛине фс тс.Цлосе Нект р Енд Суб
Сада да извршимо код, притисните Ф5, тада можемо да видимо да је помоћу ВБА кода на радној површини створена фасцикла под називом ‘Итемс_Солд’.
У фасцикли постоји 7 јединствених датотека креираних са именима предмета и можемо сазнати детаље само о тој одређеној ставци у датотекама.
Лаптоп.клс
Ствари које треба запамтити о функцији ВБА ЈОИН
- Тхе СоурцеАрраи мора бити једнодимензионални низ. Не можемо се позивати на појединачну ћелију, јер ће то створити вишеструке вишедимензионалне низове.
- Ако као граничник наведемо низ нулте дужине („”), све ставке у низу спајају се без граничника.