Cuprins
Atunci când avem un set de date mare în registrul de lucru Excel, uneori este convenabil dacă putem face o buclă prin rânduri pentru a extrage rezultatele specifice pe care dorim să le obținem. Implementarea VBA este cea mai eficientă, mai rapidă și mai sigură metodă de a executa orice operație în Excel. În acest articol, vă vom prezenta 11 metode diferite de a executa orice operație în Excel. bucla prin rândurile unui tabel în Excel, cu ajutorul funcției Macro VBA .
Descărcați caietul de lucru
Puteți descărca gratuit caietul de lucru Excel de practică de aici.
Bucla prin rândurile din tabel cu VBA.xlsm11 Metode cu VBA pentru a face bucla prin rândurile din tabel în Excel
În urma acestei secțiuni, veți învăța cum să bucla prin rândurile unui tabel cu 11 metode diferite, cum ar fi buclă prin rânduri până la o celulă goală, buclă prin rânduri până când se găsește o anumită valoare, buclă prin rânduri și colorarea unei anumite celule etc. cu VBA macro în Excel.
Mai sus este un exemplu de set de date pe care acest articol îl va urma pentru a descrie metodele.
1. Încorporați VBA pentru a trece în buclă prin fiecare celulă din fiecare rând al unui tabel după numărul de referință al celulei
Dacă doriți să bucla prin fiecare celulă din fiecare rând al unui tabel în foaia de calcul Excel și obțineți valoarea numărul de referință al celulei ca valoare de returnare , apoi urmați pașii discutați mai jos.
Pași:
- La început, apăsați Alt + F11 de pe tastatură sau mergeți la fila Dezvoltator -> Visual Basic pentru a deschide Editor Visual Basic .
- Apoi, în fereastra de cod pop-up, din bara de meniu, faceți clic pe Inserare -> Modul .
- Apoi, copie următorul cod și pastă în fereastra de cod.
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
Codul dumneavoastră este acum gata de a fi executat.
- Acum, apăsați F5 de pe tastatură sau, din bara de meniu, selectați Run -> Run Sub/UserForm Puteți, de asemenea, să faceți clic pe pictograma mică de redare din bara de submeni pentru a rula macrocomenzul.
- Sau pentru a vedea și compara vizual setul de date și rezultatul, puteți salvați codul și reveniți la foaia de lucru de interes.
- De acolo, puteți face clic pe Macros de la Dezvoltator tab, selectați numele macroului, și apoi faceți clic pe Rulați .
După executarea cu succes a codului, priviți imaginea de mai sus pentru a vedea rezultatul. Va apărea o fereastră pop-up MsgBox arătându-vă numărul de referință al fiecărei celule din fiecare rând din tabelul din foaia Excel.
Explicația codului VBA
LastRow = Range("B" & Rows.Count).End(xlUp).Row
Pentru a obține numărul ultimului rând din tabel prin căutarea în coloana B.
FirstRow = 4
Setați rândul numărul 4, de unde încep datele noastre.
i = FirstRow
Pentru a face o buclă din primul rând.
FirstColumn = 2
Setați coloana numărul 2, de unde încep datele noastre.
Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column
Începe să parcurgă rândurile pentru a obține ultimul număr de coloană prin evaluarea rândului curent până la ultimul rând.
Count = FirstColumn Do Until Count> LastColumn
Creștere în buclă a coloanei de la primul rând până la ultimul rând.
MsgBox "Currently iterating cell " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop
Această bucată de cod are rolul de a procesa, de a incrementa după fiecare iterație și de a afișa rezultatul codului.
Citește mai mult: Cum să adăugați automat un rând nou într-un tabel Excel
2. Implementați VBA pentru a trece în buclă prin fiecare celulă din fiecare rând în funcție de valoare
Dacă doriți să trece în buclă prin fiecare celulă din fiecare rând al unui tabel și aruncă valoarea care se află în celule ca valoare de retur , atunci această secțiune vă va ajuta să vă dați seama cum să faceți acest lucru cu VBA Excel.
Puteți face acest lucru cu ajutorul funcției ListObject și cu DataBodyRange proprietate a VBA Vă vom arăta codul macro atât cu obiectul, cât și cu proprietatea.
2.1. Cu ListObject
Pașii pentru bucla prin fiecare celulă din fiecare rând al unui tabel, în funcție de valoarea celulei, cu ajutorul ListObject în VBA Excel sunt prezentate mai jos.
Pași:
- În același mod ca și înainte, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, în fereastra de cod, copie următorul cod și pastă it.
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
Codul dumneavoastră este acum gata de a fi executat.
- După aceea, Rulați macro, așa cum v-am arătat în secțiunea de mai sus. Rezultatul este prezentat în imaginea de mai jos.
Va fi un pop-up MsgBox arătându-vă valoarea purtată de fiecare celulă din fiecare rând din tabelul din foaia Excel.
Explicația codului VBA
Dim iListRow As ListRow Dim iCol As Range
Definiți variabilele.
For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow
Această bucată de cod începe mai întâi să parcurgă în buclă rândurile din tabel (" TblStudents " este numele tabelului nostru). Apoi introduceți coloanele pentru fiecare rând. După aceea, treceți valoarea celulei în MsgBox. Apoi treceți la următoarea coloană. După ce a terminat iterația prin toate coloanele unui rând, trece la rândul următor și continuă procesul de iterație până la ultimul rând.
2.2. Cu proprietatea DataBodyRange
Pentru a fi mai specific cu datele extrase din tabel, puteți utiliza funcția DataBodyRange proprietate a ListObject . DataBodyRange vă va arunca rezultatul care conține intervalul din listă dintre rândul de antet și rândul de inserție.
Pașii pe care îi puteți face să parcurgeți în buclă fiecare celulă din fiecare rând al unui tabel în funcție de valoarea celulei cu ajutorul DataBodyRange în VBA Excel sunt prezentate mai jos.
Pași:
- După cum s-a arătat anterior, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, copie următorul cod și pastă în fereastra de cod.
Sub LoopThroughRowsByRange() Dim iRange As Range For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub
Codul dumneavoastră este acum gata de a fi executat.
- Mai târziu, Rulați macro și priviți următorul gif pentru a vedea rezultatul.
Va fi un pop-up MsgBox arătându-vă valoarea purtată de fiecare celulă din fiecare rând din tabelul din foaia Excel.
Explicația codului VBA
Dim iRange ca interval
Definiți variabila.
For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange
Această bucată de cod începe mai întâi să parcurgă în buclă rândurile din tabel (" TblStdnt " este numele tabelului nostru) și returnează un interval de valori, cu excepția rândului de antet al tabelului. Apoi trece valoarea intervalului în MsgBox. Apoi trece la rândul următor pentru a extrage intervalul și continuă procesul de iterație până la ultimul rând.
3. Aplicați macro VBA pentru a itera prin rânduri prin concatenarea coloanelor în Excel
Această secțiune va arăta cum să bucla prin rândurile dintr-un tabel prin concatenarea coloanelor cu prima coloană din setul de date în Excel.
De exemplu, pentru setul nostru de date, mai întâi, vom itera prin John în celula B5 și 101 în celula C5 prin concatenarea lor și apoi iterați prin John în celula B5 și 89 în celula D5 prin concatenarea lor din rândul 5 .
Permiteți-ne să vă arătăm cum puteți face acest lucru cu VBA macro în Excel.
Pași:
- La început, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- În al doilea rând, în fereastra de cod, copie următorul cod și pastă it.
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 With End Sub
Codul dumneavoastră este acum gata de a fi executat.
- În al treilea rând, Rulați Priviți imaginea gif de mai jos pentru a vedea rezultatul.
Va fi un pop-up MsgBox arătându-vă valoarea concatenată a celulelor din prima și a doua coloană ( John în celula B5 din coloana B și 101 în celula C5 din coloana C ) și apoi valoarea concatenată a celulelor din prima și a treia coloană ( John în celula B5 din coloana B și 89 în celula D5 din coloana D ) de rândul numărul 5 din setul de date. Și această operațiune de concatenare va continua până când va ajunge la ultimul rând din tabel.
Explicația codului VBA
Dim iRange ca interval Dim iValue ca șir de caractere
Definiți variabila.
Cu ActiveSheet.ListObjects("TblConcatenate")
Apoi, codul selectează tabelul din foaia activă (" TblConcatenate " în numele tabelului nostru).
For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value
După aceea, începe iterația fiecărui rând, excluzând antetul coloanei. Dacă iterația găsește o potrivire în intervalul dintre antetul coloanei și rânduri, atunci stochează valoarea în fișierul iValue variabilă.
Else MsgBox "Evaluating " & iValue & "; ": " & iRange.Value End If Next iRange End With
Dacă condiția de mai sus nu este îndeplinită, atunci codul aruncă valoarea în MsgBox și încheie condiția. După aceea, trece la bucla într-un alt interval și continuă iterația până la rândul final. Odată ce ajunge la rândul final, macroul încheie execuția codului.
4. Macro încorporat pentru a itera prin rânduri prin concatenarea tuturor coloanelor dintr-un tabel în Excel
În această secțiune, vom învăța cum să concatenarea tuturor coloanelor pe care le conține fiecare rând în setul de date cu VBA macro în Excel.
Pașii de execuție sunt prezentați mai jos.
Pași:
- În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, copie următorul cod și pastă în fereastra de cod.
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
Codul dumneavoastră este acum gata de a fi executat.
- Următorul, Rulați codul macro.
După cum puteți vedea din gif-ul de mai sus este că există un pop-up MsgBox arătându-vă valoarea concatenată a tuturor coloanelor care se află în fiecare rând din tabelul din foaia de calcul Excel.
Explicația codului 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
Definiți variabilele.
Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol")
Setați numele foii cu care vom lucra (" ConcatenareaAllCol " este numele foii din registrul de lucru).
Set iObj = iSheet.ListObjects("TblConcatenateAll")
Definiți numele tabelului cu care vom lucra (" TblConcatenateAll " este numele tabelului din setul nostru de date).
Pentru fiecare iRow din iObj.ListRows
Începe iterația prin fiecare rând al tabelului.
For Each iCol In iObj.ListColumns
Începe iterația prin fiecare coloană a fiecărui rând din tabel.
iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol Next iCol MsgBox iResult iResult iResult = "" Next iRow
Stochează rezultatul prin intersectarea valorilor pe care le poartă fiecare coloană din fiecare rând. După ce a scanat toate coloanele care rezidă în fiecare rând, a trecut rezultatul în MsgBox. Apoi începe din nou bucla în rândul următor și continuă bucla până când ajunge la ultimul rând al tabelului.
Citește mai mult: Cum să sortați mai multe coloane ale unui tabel cu Excel VBA (2 metode)
5. Opriți iterația dacă se găsește o valoare prin parcurgerea în buclă a rândurilor unui tabel cu macro VBA
Să presupunem că doriți să buclați prin rândurile din tabelul dvs. și opriți bucla atunci când găsiți o anumită valoare Puteți face acest lucru doar cu un simplu cod macro.
Să învățăm cum să facem asta VBA în Excel.
Pași:
- La început, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, în fereastra de cod, copie următorul cod și pastă it.
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
Codul dumneavoastră este acum gata de a fi executat.
- Mai târziu, Rulați macro.
- Acesta va pornește bucla și o oprește când găsește valoarea specifică (" Marginea ") în interval și aruncă rezultă în MsgBox .
După cum puteți vedea în imaginea de mai sus, există o fereastră pop-up MsgBox care vă arată adresa celulei, $B$10 , unde am găsit valoarea specificată, " Marginea " .
Explicația codului VBA
Dim iData ca interval
Definiți variabila.
For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData
Această bucată de cod este aici pentru a parcurge rândurile de la 1 la 15. Dacă găsește cuvântul specific " Marginea ", apoi transmite rezultatul cu adresa celulei care conține cuvântul. Continuă să facă acest lucru până când termină de scanat toate datele din rândurile 1-15 în căutarea cuvântului.
Citiți mai mult: Cum să inserați sau să ștergeți rânduri și coloane din tabelul Excel
6. VBA pentru a trece în buclă prin fiecare rând și a colora o anumită valoare în Excel
Ce se întâmplă dacă nu doriți să aruncați adresa de celulă a valorii specificate în MsgBox? S-ar putea să doriți să colorează celula care poartă valoarea pe care îl căutați.
Să învățăm cum să facem asta cu VBA macro.
Pași:
- În același mod ca și înainte, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, copie următorul cod și pastă în fereastra de cod.
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
Codul dumneavoastră este acum gata de a fi executat.
- După aceea, Rulați macro.
- Acesta va pornește bucla și o oprește atunci când găsește valoarea specifică (" Marginea ") în intervalul și colorează celula cu ColourIndex pe care l-ați furnizat în cod.
După cum puteți vedea în imaginea de mai sus, C ell B10 , unde am găsit valoarea specificată, " Marginea " este colorată după executarea codului.
Explicația codului VBA
Dim iData ca interval
Definiți variabila.
For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData
Această bucată de cod este aici pentru a parcurge rândurile de la 1 la 15. Dacă găsește cuvântul specific " Marginea "Continuă să facă acest lucru până când termină de scanat toate datele de la rândurile 1 la 15 în căutarea cuvântului.
Citește mai mult: Cum se utilizează VLOOKUP Array tabel bazat pe valoarea celulei în Excel
Lecturi similare
- Funcția TABLE există în Excel?
- Cum să convertiți tabelul în listă în Excel (3 moduri rapide)
- Conversia intervalului în tabel în Excel (5 metode ușoare)
- Utilizați formula într-un tabel Excel în mod eficient (cu 4 exemple)
- Numele tabelului Excel: Tot ce trebuie să știți
7. Implementați VBA pentru a trece în buclă prin fiecare rând și a colora fiecare rând impar în Excel
Din secțiunea anterioară, am învățat cum să colorăm o celulă care poartă o anumită valoare. În această secțiune, vom învăța cum să bucla prin fiecare rând al unui tabel și colorează fiecare rând impar cu VBA macro în Excel.
Etapele de execuție a procesului sunt descrise mai jos.
Pași:
- După cum s-a arătat anterior, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, copie următorul cod și pastă în fereastra de cod.
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 With End Sub
Codul dumneavoastră este acum gata de a fi executat.
- Acum, Rulați macro și priviți imaginea următoare pentru a vedea rezultatul.
Toate rândurile cu numere impare sunt colorate după parcurgerea în buclă a tuturor rândurilor din tabelul foii de calcul.
Explicația codului VBA
Dim iRow ca Long
Definiți variabila.
Cu Range("B4").CurrentRegion
Definiți intervalul cu care vom lucra.
For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With
Această parte a codului se referă la iterația prin toate rândurile, începând de la următorul rând al rândului curent, B4 În cazul în care modul de împărțire a numerelor de rânduri la 2 este egal cu numărul de rânduri returnat stocat într-un tip întreg, atunci acest cod colorează toate rândurile extrase prin calcul cu indicele de culoare furnizat în cod. Continuă să se deplaseze prin toate rândurile până când ajunge la sfârșitul intervalului.
8. Implementați VBA pentru a face o buclă prin rânduri și a colora fiecare rând par în Excel
În secțiunea anterioară, am învățat cum să colorăm fiecare rând impar al unui tabel. În această secțiune, vom învăța cum să bucla prin fiecare rând al unui tabel și colorează fiecare rând par cu macro VBA în Excel.
Etapele de executare a procesului sunt discutate mai jos.
Pași:
- În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, copie următorul cod și pastă în fereastra de cod.
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
Codul dumneavoastră este acum gata de a fi executat.
- Următorul, Rulați macro și priviți imaginea următoare pentru a vedea rezultatul.
Toate rândurile cu număr par sunt colorate după parcurgerea în buclă a tuturor rândurilor din tabelul foii de calcul.
Explicația codului VBA
Dim iRow ca Long
Definiți variabila.
Cu Range("B4").CurrentRegion
Definiți intervalul cu care vom lucra.
For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With
Această bucată de cod începe iterația după cele trei rânduri de la rândul curent, B4 Îl colorează mai întâi, apoi mărește numărul de rânduri cu 2 și continuă să îl coloreze până când ajunge la ultimul rând din setul de date.
9. Aplicați un macro pentru a itera prin rânduri până la o celulă goală în Excel
Dacă doriți ca codul dvs. să funcționeze așa cum va fi bucla prin toate rândurile din tabel și se oprește când ajunge la o celulă goală , atunci această secțiune este pentru dvs. Puteți executa această sarcină atât cu ajutorul funcției Bucla FOR și Buclă până când în Excel VBA .
9.1. Cu bucla FOR
Pași către bucla prin rândurile dintr-un tabel până la o celulă goală cu FOR Loop în VBA Excel sunt prezentate mai jos.
Pași:
- La început, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- După aceea, copie următorul cod și pastă în fereastra de cod.
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
Codul dumneavoastră este acum gata de a fi executat.
- Apoi, Rulați macro și rezultatul este prezentat în imaginea de mai jos.
După ce se execută macroul, acesta a început să parcurgă în buclă toate rândurile în tabel și odată ce a ajuns la celula goală, celula B8 , it a oprit iterația .
Explicația codului VBA
Dim x ca număr întreg
Definiți variabila.
Application.ScreenUpdating = False
Dezactivați evenimentul de actualizare a ecranului.
NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count
Stochează toate rândurile începând de la Celula B4 până la ultimul.
Range("B4").Select
Selectați Celula B4 .
For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next
Această bucată de cod începe să parcurgă în buclă toate rândurile. Când găsește o celulă goală într-un rând, o selectează și continuă să scaneze rândurile până când ajunge la sfârșit.
Application.ScreenUpdating = True
Activați evenimentul de actualizare a ecranului.
9.2. Cu bucla Do-Until
Pași către buclă prin rânduri până la o celulă goală cu bucla Do-Until în VBA sunt prezentate mai jos.
Pași:
- În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, copie următorul cod și pastă în fereastra de cod.
Sub DoUntilLoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
Codul dumneavoastră este acum gata de a fi executat.
- Mai târziu, Rulați Rezultatul este prezentat în următorul gif.
După ce a rulat macroul, a început bucla prin toate rândurile în tabel și odată ce a ajuns la celula goală, celula B8 , it a oprit iterația .
Explicația codului VBA
Range("B4").Select
Selectați celula din care vom lucra.
Do Until IsEmpty(ActiveCell)
Pornește și continuă bucla până când se găsește o celulă goală.
ActiveCell.Offset(1, 0).Select Loop
Atunci când se găsește o celulă goală într-un rând, selectați-o și opriți iterația.
10. Macro VBA pentru a itera prin rânduri până la mai multe celule goale în Excel
În secțiunea anterioară, ați învățat cum să opriți bucla atunci când se găsește o celulă goală. Dar ce se întâmplă dacă nu doriți să opriți iterația până când se găsesc mai multe celule goale în loc de una singură.
Pașii pentru buclă prin rânduri până la mai multe celule goale se găsesc într-un tabel cu VBA Excel sunt prezentate mai jos.
Pași:
- În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, copie următorul cod și pastă în fereastra de cod.
Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) ActiveCell.Offset(2, 0).Select Loop End Sub
Codul dumneavoastră este acum gata de a fi executat.
- Acum, Rulați macro și vedeți următorul gif pentru ieșire.
După ce se execută macroul, acesta nu s-a oprit la prima celulă goală, celula B8 S-a oprit când a găsit două celule goale consecutive pe celula B16 .
Explicația codului VBA
Range("B4").Select
Selectați celula din care vom lucra.
Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0))
Pornește și continuă bucla până când se găsesc două celule goale consecutive.
ActiveCell.Offset(2, 0).Select Loop
Atunci când se găsesc două celule goale consecutive, se selectează și se oprește iterația.
11. Încorporați VBA pentru a face buclă prin rânduri prin concatenarea tuturor coloanelor până la gol în Excel
Această secțiune vă va arăta cum să bucla prin toate rândurile dintr-un tabel și concatenarea tuturor coloanelor până la o celulă goală se găsește cu VBA Excel.
Să învățăm cum să facem asta cu VBA macro în Excel.
Pași:
- La început, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- Apoi, copie următorul cod și pastă în fereastra de cod.
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
Codul dumneavoastră este acum gata de a fi executat.
- Mai târziu, Rulați macro și vedeți următorul gif pentru rezultat.
După cum puteți vedea din gif-ul de mai sus este că există un pop-up MsgBox arătându-vă valoarea concatenată a tuturor coloanelor care se află în fiecare rând din tabelul din foaia de lucru Excel. Dar este s-a oprit odată ce a ajuns la celula goală .
Explicația codului VBA
Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String
Definiți variabilele.
Set iSheet = Sheets("ConcatenatingAllColUntilBlank")
Setați numele foii cu care vom lucra (" ConcatenareaAllColUntilBlank " este numele foii din registrul de lucru).
iValue = Range("B4").CurrentRegion
Definiți intervalul cu care vom lucra.
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
Această bucată de cod începe bucla cu array-ul. Continuă să bucleze până când returnează cel mai mare subscript al array-ului și limita inferioară a primei dimensiuni. Apoi, intră în iterația de extragere a limitei inferioare a celei de-a doua dimensiuni. După aceea, trece toate valorile extrase în fișierul iResult prin concatenarea lor și aruncând rezultatul în MsgBox. Continuă să facă acest lucru până când găsește o celulă goală.
Concluzie
În concluzie, acest articol v-a arătat 11 metode eficiente pentru a vă bucla prin rândurile unui tabel în Excel, cu ajutorul funcției Macro VBA . sper că acest articol v-a fost de mare folos. Nu ezitați să îmi adresați orice întrebare legată de acest subiect.