Функция Excel VBA Join

Функция VBA JOIN используется для объединения массива подстрок с указанным разделителем. Так же, как само слово означает, что оно должно соединить две или более строки. Теперь вот несколько уловов с этим. Строки находятся в массиве, и он также использует разделитель в качестве функции сцепления. Но разделитель для функции конкатенации может быть разным для любых двух строк, потому что мы должны предоставить один разделитель между каждыми двумя строками, используя функцию конкатенации. Но в Join в VBA нам нужно указывать разделитель только один раз. Этот разделитель используется для каждой присоединяемой строки. Но этот параметр также необязателен. Так что же происходит, когда мы не предоставляем разделитель для функции? Когда мы не предоставляем разделитель для функции, он по умолчанию принимает «пробел» в качестве разделителя.

Синтаксис функции соединения в Excel VBA

Функция соединения имеет следующий синтаксис в Excel VBA:

Теперь давайте разберемся с аргументами функции VBA Join,

  • Source Array: Это массив или набор строк, которые мы хотим объединить.
  • Разделитель: это разделитель или символ, который мы используем для различения одной строки в другой. Разделитель может быть пробелом или запятой, точкой или любым символом с нашего компьютера.

Выходные данные, возвращаемые этой функцией, являются строкой.

Как использовать функцию Excel VBA Join?

Мы научимся использовать функцию соединения VBA с несколькими примерами в Excel.

Вы можете скачать этот VBA Присоединиться к шаблону Excel здесь - VBA Присоединиться к шаблону Excel

Excel VBA Join - Пример # 1

Во-первых, давайте начнем с основного примера. У нас есть путь к файлу, хранящемуся в разных ячейках нашего листа на листе 1. Нам нужен полный путь к этому местоположению в другой ячейке. Путь, который необходимо объединить, заключается в следующем,

Мы хотим путь в ячейке E2. Выполните следующие шаги, чтобы использовать функцию соединения в Excel VBA.

Шаг 1: Перейдите на вкладку разработчика и нажмите Visual Basic, чтобы иметь возможность войти в VB Editor.

Шаг 2: Нажмите на вкладку «Вставка» и вставьте модуль в проект VBA.

Шаг 3: Теперь давайте объявим нашу первую подпроцедуру следующим образом.

Код:

 Sub Example () End Sub 

Шаг 4: Поскольку у нас есть данные, мы можем просто использовать значение свойства range, чтобы присоединиться к пути следующим образом.

Код:

 Sub Example () Диапазон ("E2"). Значение = Конец Sub 

Шаг 5: Используйте функцию Join, чтобы объединить все строки вместе с разделителем как «\».

Код:

 Sub Example () Range ("E2"). Value = Join (Массив (Range ("A2"). Value, Range ("B2"). Value, Range ("C2"). Value, Range ("D2") .Value), "\") End Sub 

Шаг 6: Запустите приведенный выше код, нажав клавишу F5 или нажав кнопку Play run, и мы получим наш результат в ячейке E2, как показано ниже.

Мы можем видеть, что все четыре строки объединены общим разделителем, который является «\».

Excel VBA Join - Пример № 2

Давайте продолжим с практическим примером. На одном листе у меня есть имя ученика, его отметки, а также пропуск или провал. Мы хотим создать отдельную папку с файлами, в которых будет указано, прошел или нет студент или получил оценку. Для этого мы заимствуем некоторые концепции FSO (объекты файловой системы), используя функцию соединения. Ну, данные выглядят так, как показано ниже.

Выполните следующие шаги, чтобы использовать функцию соединения в Excel VBA.

Шаг 1: В том же модуле давайте запустим еще одну подпроцедуру следующим образом.

Код:

 Sub Example2 () End Sub 

Шаг 2: Объявите две переменные как FSO и текстовый поток, который является методом FSO следующим образом.

Код:

 Dim FSO As New Scripting.FileSystemObject Dim St As Scripting.TextStream 

Шаг 3: Теперь давайте объявим еще несколько переменных: одну - как диапазон для хранения строк, а другую - как целое число для столбцов, а другую - как String для хранения значения объединенной строки и пути к папке и одну для создания имен файлов.

Код:

 Dim rw как диапазон Dim res как строка Dim col как целое число Dim FolPath как строка Dim результат как строка 

Шаг 4: Поскольку у нас есть данные на листе 2, давайте сначала активируем лист 2.

Код:

 Worksheets ( "Лист2"). Activate 

Шаг 5: Теперь давайте посчитаем количество столбцов в данных следующим образом:

Код:

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

Шаг 6: Теперь давайте назначим путь к Folpath с помощью информационной функции ENVIRON следующим образом.

Код:

 FolPath = Environ ("UserProfile") & "\ Desktop \ Result" 

Шаг 7: Теперь давайте проверим, существует ли папка или нет, а затем создадим ее, используя метод FSO следующим образом.

Код:

 Если не FSO.FolderExists (FolPath), то FSO.CreateFolder FolPath 

Шаг 8: Теперь давайте добавим имена, сохраненные с помощью функции смещения, следующим образом.

Код:

 Для каждого диапазона rw In («A2», Range («A1»). End (xlDown)) Result = rw.Offset (0, 1) .Value 

Это откроет файлы с именами одновременно в режиме добавления, где последними будут добавлены новые значения. Мы использовали приведенный выше код, чтобы значение результата присваивалось один за другим.

Шаг 9: Теперь, поскольку функция Join использует одномерный массив, мы будем использовать функцию application.transpose вместе с функцией join, чтобы преобразовать ее в одномерный массив следующим образом.

Код:

 Установите St = FSO.OpenTextFile (FolPath & "\" & Result & ".xls", ForAppending, True) res = Join (Application.Transpose (Application.Transpose (rw.Resize (1, col) .Value)), vbTab ) St.WriteLine res 

Почему мы использовали application.transpose? Поскольку в общем случае массив (1-D) должен быть горизонтальным, что означает, что в одной строке много столбцов. Теперь, поскольку у нас в столбце B есть вертикальный диапазон, который является результатом, мы использовали эту функцию транспонирования, чтобы преобразовать ее в одномерный массив. Мы использовали VbTab в качестве разделителя, чтобы значения были в следующих ячейках.

Шаг 10: Перед завершением цикла for закройте файл, а затем завершите цикл for следующим образом.

Общий код выглядит так, как показано ниже.

Код:

 Sub Example2 () Dim FSO As New Scripting.FileSystemObject Dim St As Scripting.TextStream Dim rw Как диапазон Dim res Как строка Dim col Как целое число Dim FolPath Как строка Dim Результат как строка строк ("Sheet2"). Активировать col = Range (" A1 "). CurrentRegion.Columns.Count FolPath = Environ (" UserProfile ") &" \ Desktop \ Result ", если не FSO.FolderExists (FolPath), то FSO.CreateFolder FolPath для каждой строки в диапазоне (" A2 ", Range (" A1 "). End (xlDown)) Result = rw.Offset (0, 1) .Value Set St = FSO.OpenTextFile (FolPath &" \ "& Result &" .xls ", ForAppending, True) res = Join (приложение .Transpose (Application.Transpose (rw.Resize (1, col) .Value)), vbTab) St.WriteLine res St.Закрыть следующий rw End Sub 

Шаг 11: Теперь давайте запустим приведенный выше код, нажав клавишу F5, и мы увидим на нашем рабочем столе, что была создана папка с именем Result, как показано ниже.

Шаг 12: Откройте папку, у нас будет три файла: Pass, Fail и Grace.

Если мы откроем какой-либо из файлов, скажем, что мы открываем файл Fail, мы можем увидеть данные об учениках, которые потерпели неудачу.

То, что нужно запомнить

  • Он используется для объединения строкового массива с общим разделителем.
  • Выходные данные, возвращаемые этой функцией, являются String.
  • Это противоположно функции Split в VBA.
  • Если мы не предоставляем разделитель для этой функции, он по умолчанию принимает «пробел» в качестве разделителя.
  • Массив в аргументе должен быть одномерным массивом. Если нет, мы можем использовать обычные методы application.transpose, как описано в Примере 2.

Рекомендуемые статьи

Это руководство по функции присоединения VBA. Здесь мы обсудим, как использовать функцию соединения в Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

  1. Функция даты Excel
  2. Конкатенация строк в Excel
  3. Приложения VBA Union
  4. Конкатенация столбцов Excel

Категория: