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 "Поточна комірка, в якій виконується цикл" & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop End Sub 

Ваш код тепер готовий до запуску.

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

  • Або ж наочно побачити і порівняти набір даних і результат, ви можете заощаджувати кодекс і повернутися до робочого аркуша що представляє інтерес.
  • Звідти ви можете натиснути Макроси від Розробник рахунок, виберіть назву макросу, а потім натисніть Біжи .

Після успішного виконання коду подивіться на наведений вище 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 "Current iterating cell " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop 

Цей фрагмент коду працює на обробку, інкремент після кожної ітерації та виведення результату роботи коду.

Читати далі: Як автоматично додати новий рядок в таблицю Excel

2. реалізувати VBA для циклічного обходу кожної комірки в кожному рядку за значенням

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

Ви можете зробити це за допомогою 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 

Ваш код тепер готовий до запуску.

  • Після цього, Біжи макрос, як ми показували вам у попередньому розділі. Результат показаний на gif-файлі нижче.

З'явиться спливаюче вікно 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 Як Діапазон 

Визначити змінну.

 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 "Оцінка " & iValue & ": " & iRange.Value End If Next iRange End With End Sub 

Ваш код тепер готовий до запуску.

  • По-третє, Біжи Подивіться на gif-файл нижче, щоб побачити результат.

З'явиться спливаюче вікно MsgBox показуючи вам об'єднане значення комірок з першого та другого стовпчика ( Іван у комірці B5 з колонки B і 101 у комірці С5 з колонки С ), а потім об'єднане значення комірок з першого та третього стовпчика ( Іван у комірці B5 з колонки B і 89 у комірці D5 з колонки D ) від ряд № 5 І ця операція конкатенації буде продовжуватись до тих пір, поки не дійде до останнього рядка таблиці.

Пояснення коду VBA

 Dim iRange As Range Dim iValue As String 

Визначити змінну.

 З допомогою ActiveSheet.ListObjects("TblConcatenate") 

Потім код вибирає таблицю з активного аркуша (" TblConcatenate " в назві нашої таблиці).

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

Після цього починає ітерацію кожного рядка, виключаючи заголовок стовпця. Якщо ітерація знаходить збіг в діапазоні між заголовком стовпця і рядками, то вона зберігає значення в iValue змінна.

 Else MsgBox "Оцінюючи " & 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 

Ваш код тепер готовий до запуску.

  • Наступний, Біжи макрокод.

Як видно з наведеної вище gif-файлу є те, що є спливаюче вікно 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 " - назва таблиці в нашому наборі даних).

 Для Кожного iRow In iObj.ListRows 

Починає ітерацію по кожному рядку таблиці.

 For Each iCol In iObj.ListColumns 

Починає ітерацію по кожному стовпчику кожного рядка таблиці.

 iRult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iRult iRult = "" 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 = "Край" Then MsgBox "Край знаходиться за адресою " & 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 = "Край" Then MsgBox "Край знаходиться за адресою " & 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 

Ваш код тепер готовий до запуску.

  • Після цього, Біжи макрос.
  • Це буде запустити цикл і зупинити його при знаходженні конкретного значення (" Край ") в діапазоні та розфарбувати клітинку з ColourIndex які ви вказали в кодексі.

Як ви можете бачити на зображенні вище, 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

Схожі читання

  • Чи існує функція ТАБЛИЦЯ в 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 та Цикл Do-Until в Excel VBA .

9.1. з циклом FOR

Кроки до циклічно перебирати рядки таблиці до тих пір, поки не буде порожньої комірки з допомогою циклу FOR в 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 

Ваш код тепер готовий до запуску.

  • Тоді, Біжи Макрос і результат наведено у gif-файлі нижче.

Після запуску макросу, він почала петляти по всім рядам в таблиці, і як тільки вона досягла порожня комірка, комірка 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 в VBA наведені нижче.

Сходинки:

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

Ваш код тепер готовий до запуску.

  • До зустрічі, Біжи Результат наведено у наступному gif-файлі.

Після запуску макросу запустився петлі через всі ряди в таблиці, і як тільки вона досягла порожня комірка, комірка 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 Ексель.

Давайте дізнаємося, як це зробити за допомогою 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 = "", iResult(i, J), iResult & " " & iValue(i, J)) Next J MsgBox iResult Next i End Sub 

Ваш код тепер готовий до запуску.

  • До зустрічі, Біжи макрос і побачите результат у наступному gif-файлі.

Як видно з наведеної вище gif-файлу є те, що є спливаюче вікно 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 та онлайн-навчання, щоб допомогти окремим особам і компаніям повністю розкрити свій потенціал.