ВБА Придружите се - Примери корак по корак Екцел ВБА функције придруживања

Преглед садржаја

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

Функција Екцел ВБА ЈОИН

Као што и само име сугерира, функција ВБА ЈОИН користи се за спајање низа поднизова са наведеним граничником. Ако не одредимо ниједан граничник, тада му је потребан 'размак' као подразумевани знак граничника. Ради исто као и функција Цонцатенате у програму Екцел, осим што морамо само једном навести знак разграничења, док у функцији Цонцатенате морамо сваки пут одредити знак раздвајача између сваке две жице.

Синтакса функције је

Као што видимо, функција узима два аргумента и враћа низ. Аргументи су:

  1. СоурцеАрраи : Морамо навести или дати референцу на низ поднизова који се спајају.
  2. Разграничник: Граничник се користи за одвајање сваког од поднизова приликом стварања резултујућег низа. Како је ово необавезни аргумент, ако га изоставимо, граничник је постављен као размак „“.

ВБА СПЛИТ функција је потпуно супротна од функције ВБА ЈОИН.

Примери ВБА функције придруживања

Испод су примери функције придруживања у програму Екцел ВБА.

ВБА придруживање - Пример # 1

Претпоставимо да желимо да се придружимо првом (Рамесх), средњем (Кумар) и презимену (Мисхра).

Кораци би били:

  • Прво, морамо отворити едитор висуал басиц. То можемо учинити кликом на команду „Висуал Басиц“ у групи „Цоде“ на картици „Девелопер“ екцел или можемо користити екцел тастер Алт + Ф11 .
  • Уметните модул десним кликом на „лист 1“ и одабиром команде „Инсерт“ из контекстуалног менија, а затим одаберите „Модуле“ за уметање.
  • Направите потпрограм под називом „ЈоинингНаме“.

Шифра:

Суб ЈоинингНаме () Крај Суб
  • Користите функцију ЈОИН на следећи начин

Шифра:

Суб ЈоинингНаме () Ранге ("Д2"). Валуе = Јоин (Арраи ("Рамесх", "Кумар", "Мисхра")) Енд Суб

Видимо да смо користили функцију АРРАИ за пружање СоурцеАрраи-а функцији ЈОИН и прескочили да одредимо знак за раздвајање, тако да би 'размак' био подразумевани знак. Обрађена вредност функције ЈОИН биће записана у ћелију Д2 када извршимо овај код помоћу тастера Ф5 или ручно.

ВБА придруживање - Пример # 2

Претпоставимо да желимо да креирамо разне екцел датотеке са називом ставке која садржи продају само за ту ставку.

  • Отворите Висуал Басиц Едитор помоћу пречице Алт + Ф11.
  • Кликните десним тастером миша на лист „Схеет1 ′ (Пример 2)“ да бисте отворили контекстуални мени и кликните на „Инсерт“ да бисте уметнули ВБА „модул“ у ВБА пројекат.
  • Дефинишите потпрограм под називом 'ЦреатеИтемСолдФилес'.

Шифра:

Суб ЦреатеИтемСолдФилес () Крај Суб
  • Морамо поставити референцу на „Мицрософт Сцриптинг Рунтиме“ библиотеку објеката помоћу менија Тоолс -> Референцес … јер ћемо користити неки код (објекте), који неће функционисати ако не укључимо ову библиотеку објеката.
  • Сада ћемо прогласити све променљиве.

Шифра:

Затамни ФСО као нови скрипт.ФилеСистемОбјецт

Горња ФСО променљива даје приступ ВБА ФилеСистемОбјецт. Након везивања можемо користити функције попут БуилдПатх, ЦопиФиле, ЦреатеТектФиле итд.

  • Следећа изјава креира објект ТектСтреам. Кроз ТектСтреам објекат можемо читати или додавати изворну датотеку.

Шифра:

Dim FSO As New Scripting.FileSystemObject Dim ts As Scripting.TextStream
  • We will declare more variables. ‘r’ is for holding rows in the range, ‘fs’ is for storing final joined string, ‘cols’ for storing numbers of columns in the range, ‘FolPath’ for storing the path of the folder so that we can save the files in the folder and ‘Items_Sold’ for storing various item names to create a file with these names.

Code:

Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String
  • To count the total number of columns in range, we will define the following statement.

Code:

cols = Range("A1").CurrentRegion.Columns.Count

This statement will first select the current region for cell A1 and then will count the total number of columns in the current region.

  • We will write the following statements for assigning the variable ‘FolPath’ a path using VBA ENVIRON function and Concatenation Operator.

Code:

FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath

The second statement will create the folder if the folder does not exist in the same location.

  • This code will assign the values of B column one by one to ‘Items_Sold’ We have used ‘OFFSET function’ to get the reference of cell in B column as the currently selected cell is in column A.

Code:

Items_Sold = r.Offset(0, 1).Value
  • The following bordered statement will open the files with names stored in ‘Items_Sold’ variable in one by one in appending mode (the new values will be appended at last).

Code:

Set ts = FSO.OpenTextFile(FolPath & " " & Items_Sold & ".xls", ForAppending, True)

We have used Concatenate operator with variables ‘FolPath’ and ‘Items_Sold’ and static values (“” and”.xls”) to create file names for excel files.

  • We need to keep in mind that VBA JOIN function takes an only one-dimensional array as SourceArray To convert the rows into a one-dimensional array, we need to use Application.Transpose method two times.

Code:

fs = Join(Application.Transpose(Application.Transpose(r.Resize(1, cols).Value)), vbTab)

We have used the Resize method of range object to resize the range to the width of a number of columns in the range.

As delimiter, we have used ‘vbTab’ keyword so that values would be filled in different cells.

  • As we have stored the processed value of JOIN function into ‘fs’ variable, we will write the fs’s values into new lines of VBA created excel files for every row in our original file from row number 2 to the last row (in our case it is 350th row).
  • Before ending the loop, we will close the file opened. The code would be as shown in the screenshot.

We have written the full code now.

Code:

Sub CreateItemSoldFiles() Dim FSO As New Scripting.FileSystemObject Dim ts As Scripting.TextStream Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String cols = Range("A1").CurrentRegion.Columns.Count FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath For Each r In Range("A2", Range("A1").End(xlDown)) Items_Sold = r.Offset(0, 1).Value Set ts = FSO.OpenTextFile(FolPath & " " & Items_Sold & ".xls", ForAppending, True) fs = Join(Application.Transpose(Application.Transpose(r.Resize(1, cols).Value)), vbTab) ts.WriteLine fs ts.Close Next r End Sub

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

У фасцикли се налази 7 јединствених датотека креираних са именима предмета и можемо сазнати детаље само о тој одређеној ставци у датотекама.

Лаптоп.клс

Ствари које треба запамтити о функцији ВБА ЈОИН

  • СоурцеАрраи мора бити једнодимензионални низ. Не можемо се позивати на појединачну ћелију, јер ће то створити вишеструке вишедимензионалне низове.
  • Ако као граничник наведемо низ нулте дужине („”), све ставке у низу спајају се без граничника.

Занимљиви Чланци...