VBA для циклического просмотра строк таблицы в Excel (11 методов)

  • Поделись Этим
Hugh West

Оглавление

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

Скачать рабочую тетрадь

Вы можете скачать бесплатную практическую рабочую тетрадь Excel отсюда.

Цикл по строкам таблицы с помощью VBA.xlsm

11 методов с помощью VBA для циклического просмотра строк таблицы в Excel

Следуя этому разделу, вы узнаете, как перебор строк таблицы с 11 различными методами, такими как цикл по строкам до пустой ячейки, цикл по строкам до определенного значения, цикл по строкам и окрашивание определенной ячейки и т.д. с VBA макрос в Excel.

Выше приведен пример набора данных, который будет использоваться в данной статье для описания методов.

1. Встраивание VBA для циклического просмотра каждой ячейки в каждой строке таблицы по номеру ссылки на ячейку

Если вы хотите просмотреть каждую ячейку в каждой строке таблицы в рабочем листе Excel и получите номер ссылки на ячейку в качестве возвращаемого значения Затем выполните описанные ниже действия.

Шаги:

  • В начале нажмите Alt + F11 на клавиатуре или перейдите на вкладку Разработчик -> Visual Basic открыть Редактор Visual Basic .

  • Далее, во всплывающем окне кода, в строке меню нажмите Вставка -> Модуль .

  • Тогда, копия следующий код и паста его в окно кода.
 Sub LoopThroughRowsByRef() LastRow = Range("B" & Rows.Count).End(xlUp).Row FirstRow = 4 i = FirstRow FirstColumn = 2 Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column Count = FirstColumn Do Until Count> LastColumn MsgBox "Currently iterating cell " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop End Sub 

Теперь ваш код готов к выполнению.

  • Теперь нажмите F5 на клавиатуре или в строке меню выберите Run -> Run Sub/UserForm Вы также можете просто нажать на маленький значок Play в строке подменю, чтобы запустить макрос.

  • Или для визуального наблюдения и сравнения набора данных и результата, вы можете сохранить код и вернуться к рабочему листу интерес.
  • Оттуда вы можете нажать Макросы из Разработчик вкладка, выберите имя макроса, а затем нажмите Запускайте .

После успешного выполнения кода, посмотрите на приведенный выше gif, чтобы увидеть результат. Там будет всплывающее окно MsgBox показывая вам номер ссылки на ячейку каждой ячейки из каждого ряда из таблицы в вашем листе Excel.

Объяснение кода VBA

 LastRow = Range("B" & Rows.Count).End(xlUp).Row 

Чтобы получить номер последней строки в таблице, выполните поиск по столбцу B.

 FirstRow = 4 

Установите строку номер 4, с которой начинаются наши данные.

 i = FirstRow 

Провязать петли с первого ряда.

 FirstColumn = 2 

Установите столбец номер 2, с которого начинаются наши данные.

 Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column 

Начните цикл по строкам для получения номера последнего столбца, оценивая текущую строку до последней строки.

 Count = FirstColumn Do Until Count> LastColumn 

Инкрементный цикл по столбцу с первой строки до последней строки.

 MsgBox "В настоящее время итерирование ячейки " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop 

Эта часть кода работает для обработки, инкремента после каждой итерации и отображения результата кода.

Читать далее: Как автоматически добавить новую строку в таблицу Excel

2. Применить VBA для циклического просмотра каждой ячейки в каждой строке по значению

Если вы хотите пройтись циклом по каждой ячейке в каждой строке таблицы и бросить значение, находящееся в ячейках, в качестве возвращаемого значения тогда этот раздел поможет вам понять, как это сделать с помощью VBA Excel.

Вы можете сделать это с помощью ListObject и с DataBodyRange свойство VBA Мы покажем вам код макроса с объектом и свойством.

2.1. С объектом ListObject

Шаги к просмотреть каждую ячейку в каждой строке таблицы по значению ячейки с помощью объекта ListObject в VBA Excel приведены ниже.

Шаги:

  • Так же, как и раньше, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Затем, в окне кода, копия следующий код и паста это.
 Sub LoopThroughRowsByList() Dim iListRow As ListRow Dim iCol As Range For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow End Sub 

Теперь ваш код готов к выполнению.

  • После этого, Запускайте макрос, как мы показывали в предыдущем разделе. Результат показан на рисунке ниже.

Будет организована выставка MsgBox показывая вам значение, переносимое каждой ячейкой из каждого ряда из таблицы в вашем листе Excel.

Объяснение кода VBA

 Dim iListRow As ListRow Dim iCol As Range 

Определите переменные.

 For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow 

Этот фрагмент кода сначала начинает перебирать строки в таблице (" TblStudents " - имя нашей таблицы). Затем вводит столбцы для каждой строки. После этого передает значение ячейки в MsgBox. Затем переходит к следующему столбцу. После завершения итерации по всем столбцам одной строки, переходит к следующей строке и продолжает процесс итерации до последней строки.

2.2. С помощью свойства DataBodyRange

Для уточнения данных, извлеченных из таблицы, вы можете использовать функцию DataBodyRange свойство ListObject . DataBodyRange свойство выбросит вам результат, содержащий диапазон из списка между строкой заголовка и строкой вставки.

Шаги о том, как вы можете пройдитесь по каждой ячейке в каждой строке таблицы по значению ячейки с помощью DataBodyRange в VBA Excel приведены ниже.

Шаги:

  • Как было показано ранее, открытые Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Тогда, копия следующий код и паста его в окно кода.
 Sub LoopThroughRowsByRange() Dim iRange As Range For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub 

Теперь ваш код готов к выполнению.

  • Позже, Запускайте макрос и посмотрите на следующий gif, чтобы увидеть вывод.

Будет организована выставка MsgBox показывая вам значение, переносимое каждой ячейкой из каждого ряда из таблицы в вашем листе Excel.

Объяснение кода VBA

 Dim iRange As Range 

Определите переменную.

 For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange 

Этот фрагмент кода сначала начинает перебирать строки в таблице (" TblStdnt " - имя нашей таблицы) и возвращает диапазон значений, исключая строку заголовка таблицы. Затем передает значение диапазона в MsgBox. Затем переходит к следующей строке для извлечения диапазона и продолжает итерационный процесс до последней строки.

3. Применение макроса VBA для итерации строк путем объединения столбцов в Excel

В этом разделе будет показано, как перебор строк таблицы путем конкатенации столбцов с первым столбцом из вашего набора данных в Excel.

Например, для нашего набора данных, сначала мы выполним итерацию через Джон в камере B5 и 101 в камере C5 путем их конкатенации, а затем выполнить итерацию через Джон в камере B5 и 89 в ячейке D5 путем конкатенации их из ряд 5 .

Позвольте нам показать вам, как это можно сделать с помощью VBA макрос в Excel.

Шаги:

  • Сначала откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Во-вторых, в окне кода, копия следующий код и паста это.
 Sub LoopThroughRowsByConcatenatingCol() Dim iRange As Range Dim iValue As String With ActiveSheet.ListObjects("TblConcatenate") For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With End Sub 

Теперь ваш код готов к выполнению.

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

Будет организована выставка MsgBox показывая вам объединенное значение ячеек из первого и второго столбцов ( Джон в ячейке B5 из колонки B и 101 в ячейке C5 из столбца C ), а затем объединенное значение ячеек из первого и третьего столбцов ( Джон в ячейке B5 из колонки B и 89 в ячейке D5 из столбца D ) из ряд № 5 из вашего набора данных. И эта операция конкатенации будет продолжаться до тех пор, пока не достигнет последней строки таблицы.

Объяснение кода VBA

 Dim iRange As Range Dim iValue As String 

Определите переменную.

 With ActiveSheet.ListObjects("TblConcatenate") 

Затем код выбирает таблицу из активного листа (" TblConcatenate " в названии нашей таблицы).

 For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value 

После этого начинается итерация каждой строки, исключая заголовок столбца. Если итерация находит совпадение в диапазоне между заголовком столбца и строками, то сохраняет значение в iValue переменная.

 Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With 

Если условие не выполняется, то код выбрасывает значение в MsgBox и завершает выполнение условия. После этого он переходит к циклу в другом диапазоне и продолжает итерацию до конечной строки. Как только он достигает конечной строки, макрос завершает выполнение кода.

4. Встраивание макроса для итерации строк путем конкатенации всех столбцов таблицы в Excel

В этом разделе мы узнаем, как объединить все столбцы, которые содержатся в каждой строке в наборе данных с VBA макрос в Excel.

Ниже приведены шаги для выполнения этого действия.

Шаги:

  • Во-первых, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Тогда, копия следующий код и паста его в окно кода.
 Sub LoopThroughRowsByConcatenatingAllCol() Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol") Set iObj = iSheet.ListObjects("TblConcatenateAll") For Each iRow In iObj.ListRows For Each iCol In iObj.ListColumns iResult = iResult & " " &Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow End Sub 

Теперь ваш код готов к выполнению.

  • Следующий, Запускайте код макроса.

Как вы можете видеть из приведенного выше рисунка, есть всплывающее окно MsgBox показывая вам объединенное значение всех столбцов, находящихся в каждой строке из таблицы рабочего листа Excel.

Объяснение кода VBA

 Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String 

Определите переменные.

 Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol") 

Задайте имя листа, с которым мы будем работать (" ConcatenatingAllCol " - это имя листа в рабочей книге).

 Set iObj = iSheet.ListObjects("TblConcatenateAll") 

Определите имя таблицы, с которой мы будем работать (" TblConcatenateAll " - это имя таблицы в нашем наборе данных).

 For Each iRow In iObj.ListRows 

Начинает итерацию по каждой строке таблицы.

 For Each iCol In iObj.ListColumns 

Начинает итерацию по каждому столбцу каждой строки таблицы.

 iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow 

Сохраняет результат путем пересечения значений, которые несет каждый столбец каждой строки. После сканирования всех столбцов, находящихся в каждой строке, передает результат в MsgBox. Затем снова запускает цикл в следующей строке и продолжает цикл, пока не достигнет последней строки таблицы.

Читать далее: Как отсортировать несколько столбцов таблицы с помощью Excel VBA (2 метода)

5. Остановить итерацию, если найдено значение, перебирая строки таблицы с помощью макроса VBA

Предположим, вы хотите пройдитесь циклом по строкам вашей таблицы и остановите цикл, когда он найдет определенное значение Это можно сделать с помощью простого кода макроса.

Давайте узнаем, как это сделать VBA в Excel.

Шаги:

  • Сначала откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Затем, в окне кода, копия следующий код и паста это.
 Sub LoopThroughRowsForValue() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData End Sub 

Теперь ваш код готов к выполнению.

  • Позже, Запускайте макрос.
  • Это будет запустить цикл и остановить его, когда он найдет определенное значение (" Край ") в диапазоне и бросает результат MsgBox .

Как вы можете видеть на изображении выше, есть всплывающий MsgBox, показывающий вам адрес ячейки, $B$10 , где мы нашли указанное значение, " Край " .

Объяснение кода VBA

 Dim iData As Range 

Определите переменную.

 For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData 

Этот фрагмент кода предназначен для перебора строк с 1 по 15. Если он находит конкретное слово " Край ", затем передает результат с адресом ячейки, в которой находится слово. Так продолжается до тех пор, пока не закончится сканирование всех данных с 1 по 15 строку в поисках слова.

Подробнее: Как вставить или удалить строки и столбцы из таблицы Excel

6. VBA для циклического просмотра каждой строки и окрашивания определенного значения в Excel

Что если вы не хотите бросать адрес ячейки указанного значения в MsgBox? Вы можете захотеть раскрасьте ячейку, в которой находится значение вы ищете.

Давайте узнаем, как это сделать с помощью VBA макрос.

Шаги:

  • Так же, как и раньше, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Тогда, копия следующий код и паста его в окно кода.
 Sub LoopThroughRowsAndColor() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData End Sub 

Теперь ваш код готов к выполнению.

  • После этого, Запускайте макрос.
  • Это будет запустить цикл и остановить его, когда он найдет определенное значение (" Край ") в диапазоне и раскрасить ячейку с Индекс цвета который вы указали в коде.

Как вы можете видеть на изображении выше, C элл B10 , где мы нашли указанное значение, " Край " окрашивается после выполнения кода.

Объяснение кода VBA

 Dim iData As Range 

Определите переменную.

 For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData 

Этот фрагмент кода предназначен для перебора строк с 1 по 15. Если он находит конкретное слово " Край ", то он окрашивает ячейку, в которой находится слово. Он продолжает делать это, пока не закончит сканирование всех данных из строк с 1 по 15 в поисках слова.

Читать далее: Как использовать массив таблиц VLOOKUP на основе значения ячеек в Excel

Похожие чтения

  • Существует ли функция TABLE в Excel?
  • Как преобразовать таблицу в список в Excel (3 быстрых способа)
  • Преобразование диапазона в таблицу в Excel (5 простых методов)
  • Эффективное использование формул в таблице Excel (с 4 примерами)
  • Имя таблицы Excel: все, что нужно знать

7. Внедрение VBA для циклического просмотра каждой строки и раскрашивания каждой нечетной строки в Excel

Из предыдущего раздела мы узнали, как раскрасить ячейку, содержащую определенное значение. В этом разделе мы узнаем, как пройдитесь по каждой строке таблицы и раскрасьте каждую нечетную строку с VBA макрос в Excel.

Шаги по выполнению процесса описаны ниже.

Шаги:

  • Как было показано ранее, открытые Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Тогда, копия следующий код и паста его в окно кода.
 Sub LoopThroughRowsAndColorOddRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With End Sub 

Теперь ваш код готов к выполнению.

  • Сейчас, Запускайте макрос и посмотрите на следующее изображение, чтобы увидеть результат.

Все нечетные ряды окрашены после перебора всех строк, находящихся в таблице рабочего листа.

Объяснение кода VBA

 Dim iRow As Long 

Определите переменную.

 With Range("B4").CurrentRegion 

Определите диапазон, с которым мы будем работать.

 For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With 

Эта часть кода относится к итерации по всем строкам, начиная со следующей строки текущего ряда, B4 Если мода деления номеров строк на 2 равна возвращаемому номеру строки, хранящемуся в целочисленном типе, то этот код окрашивает все строки, извлеченные в результате вычисления, цветовым индексом, указанным в коде. Он продолжает двигаться по всем строкам, пока не достигнет конца диапазона.

8. Применение VBA для перебора строк и раскрашивания каждой четной строки в Excel

В предыдущем разделе мы узнали, как раскрасить все нечетные строки таблицы. В этом разделе мы узнаем, как пройдитесь по каждой строке таблицы и раскрасьте каждую четную строку с помощью макроса VBA в Excel.

Ниже рассматриваются шаги по выполнению этого процесса.

Шаги:

  • Во-первых, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Тогда, копия следующий код и паста его в окно кода.
 Sub LoopThroughRowsAndColorEvenRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With End Sub 

Теперь ваш код готов к выполнению.

  • Следующий, Запускайте макрос и посмотрите на следующее изображение, чтобы увидеть результат.

Все четные строки окрашиваются после перебора всех строк, находящихся в таблице рабочего листа.

Объяснение кода VBA

 Dim iRow As Long 

Определите переменную.

 With Range("B4").CurrentRegion 

Определите диапазон, с которым мы будем работать.

 For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With 

Этот фрагмент кода начинает итерацию после трех строк, начиная с текущей строки, B4 Он сначала раскрашивает его, затем увеличивает количество строк на 2 и продолжает раскрашивать его, пока не достигнет последней строки набора данных.

9. Применение макроса для итерации строк до пустой ячейки в Excel

Если вы хотите, чтобы ваш код работал так, как он будет работать пройтись циклом по всем строкам таблицы и остановиться, когда он достигнет пустой ячейки тогда этот раздел для вас. Вы можете выполнить это задание как с помощью FOR Loop и Петля "Сделай до конца в Excel VBA .

9.1. С циклом FOR

Шаги к пройдитесь по строкам таблицы до пустой ячейки с помощью FOR Loop в VBA Excel приведены ниже.

Шаги:

  • Сначала откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • После этого, копия следующий код и паста его в окно кода.
 Sub ForLoopThroughRowsUntilBlank() Dim x As Integer Application.ScreenUpdating = False NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count Range("B4").Select For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next Application.ScreenUpdating = True End Sub 

Теперь ваш код готов к выполнению.

  • Тогда, Запускайте макрос, и результат показан на рисунке ниже.

После запуска макроса он начал перебирать все строки в таблице, и как только она достигла пустая ячейка, ячейка B8 , это остановил итерацию .

Объяснение кода VBA

 Dim x As Integer 

Определите переменную.

 Application.ScreenUpdating = False 

Отключите событие обновления экрана.

 NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count 

Храните все строки, начиная с Ячейка B4 до последнего.

 Range("B4").Select 

Выберите Ячейка B4 .

 For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next 

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

 Application.ScreenUpdating = True 

Включите событие обновления экрана.

9.2. С циклом Do-Until Loop

Шаги к цикл по строкам до пустой ячейки с помощью цикла Do-Until в VBA приведены ниже.

Шаги:

  • Во-первых, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Тогда, копия следующий код и паста его в окно кода.
 Sub DoUntilLoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub 

Теперь ваш код готов к выполнению.

  • Позже, Запускайте Результат показан на следующем рисунке.

После запуска макроса началось перебирая все строки в таблице, и как только она достигла пустая ячейка, ячейка B8 это остановил итерацию .

Объяснение кода VBA

 Range("B4").Select 

Выберите ячейку, с которой мы будем работать.

 Do Until IsEmpty(ActiveCell) 

Запускает и продолжает цикл до тех пор, пока не будет найдена пустая ячейка.

 ActiveCell.Offset(1, 0).Select Loop 

Если в строке найдена пустая ячейка, выделите ее и остановите итерацию.

10. Макрос VBA для итерации строк до появления нескольких пустых ячеек в Excel

В предыдущем разделе вы узнали, как остановить цикл, когда найдена пустая ячейка. Но что если вы не хотите останавливать итерацию, пока не будет найдено несколько пустых ячеек, а не одна.

Шаги к пройдитесь по строкам, пока не останется несколько пустых ячеек находятся в таблице с VBA Excel приведены ниже.

Шаги:

  • Во-первых, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Тогда, копия следующий код и паста его в окно кода.
 Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) ActiveCell.Offset(2, 0).Select Loop End Sub 

Теперь ваш код готов к выполнению.

  • Сейчас, Запускайте макрос и посмотрите следующий gif для вывода.

После запуска макроса он не остановился на первой пустой ячейке, ячейка B8 Он остановился, когда нашел две последовательные пустые клетки на клетке B16 .

Объяснение кода VBA

 Range("B4").Select 

Выберите ячейку, с которой мы будем работать.

 Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) 

Запускает и продолжает цикл до тех пор, пока не будут найдены две последовательные пустые ячейки.

 ActiveCell.Offset(2, 0).Select Loop 

Если найдены две последовательные пустые ячейки, выберите ее и остановите итерацию.

11. Встраивание VBA для перебора строк путем конкатенации всех столбцов до пустого места в Excel

В этом разделе вы узнаете, как пройдитесь по всем строкам таблицы и объедините все столбцы, пока не останется пустая ячейка найден с VBA Excel.

Давайте узнаем, как это сделать с помощью VBA макрос в Excel.

Шаги:

  • Сначала откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • Тогда, копия следующий код и паста его в окно кода.
 Sub ConcatenatingAllColUntilBlank() Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String Set iSheet = Sheets("ConcatenatingAllColUntilBlank") iValue = Range("B4").CurrentRegion For i = 2 To UBound(iValue, 1) iResult = "" For J = 1 To UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " " & iValue(i, J)) Next J MsgBox iResult Next i End Sub 

Теперь ваш код готов к выполнению.

  • Позже, Запускайте макрос и посмотрите результат на следующем рисунке.

Как вы можете видеть из приведенного выше рисунка, есть всплывающее окно MsgBox показывая вам объединенное значение всех столбцов, находящихся в каждой строке из таблицы вашего рабочего листа Excel. Но это останавливается, как только достигает пустой ячейки .

Объяснение кода VBA

 Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String 

Определите переменные.

 Set iSheet = Sheets("ConcatenatingAllColUntilBlank") 

Задайте имя листа, с которым мы будем работать (" ConcatenatingAllColUntilBlank " - это имя листа в рабочей книге).

 iValue = Range("B4").CurrentRegion 

Определите диапазон, с которым мы будем работать.

 For i = 2 To UBound(iValue, 1) iResult = "" For J = 1 To UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " " & iValue(i, J)) Next J MsgBox iResult Next i 

Этот фрагмент кода начинает цикл с массива. Он продолжает цикл, пока не вернет наибольший подскрипт массива и нижнюю границу первой размерности. Затем он входит в итерацию извлечения нижней границы второй размерности. После этого он передает все извлеченные значения в файл iResult переменную, конкатенируя их и бросая результат в MsgBox. Он продолжает делать это, пока не найдет пустую ячейку.

Заключение

В заключение хочу сказать, что эта статья показала вам 11 эффективных методов, как перебор строк таблицы в Excel с помощью макрос VBA Я надеюсь, что эта статья была очень полезна для вас. Не стесняйтесь задавать любые вопросы по теме.

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.