Зміст
Коли ми маємо великий набір даних у нашій книзі Excel, іноді зручно, якщо ми можемо циклічно переглядати рядки, щоб витягти конкретні результати, які ми хочемо отримати. VBA це найефективніший, найшвидший і найбезпечніший спосіб виконати будь-яку операцію в Excel. У цій статті ми покажемо вам 11 різних способів, як циклічний перебір рядків таблиці в Excel за допомогою Макрос VBA .
Завантажити Робочий зошит
Ви можете завантажити безкоштовну практичну книгу Excel тут.
Циклічний перебір рядків таблиці за допомогою VBA.xlsm11 способів за допомогою 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 Сподіваюся, що ця стаття була для Вас корисною і не соромтеся задавати будь-які питання по темі.