Indholdsfortegnelse
Når vi har et stort datasæt i vores Excel-arbejdsbog, er det nogle gange praktisk, hvis vi kan løbe gennem rækker for at udtrække de specifikke resultater, som vi ønsker at få. Implementering af VBA er den mest effektive, hurtigste og sikreste metode til at udføre enhver operation i Excel. I denne artikel viser vi dig 11 forskellige metoder til at løkke gennem rækker i en tabel i Excel med VBA-makro .
Download arbejdsbog
Du kan downloade den gratis Excel-arbejdsbog til øvelser her.
Sløjfe gennem rækker i en tabel med VBA.xlsm11 metoder med VBA til at gennemløbe rækker i tabellen i Excel
I dette afsnit lærer du, hvordan du kan løkke gennem rækker i en tabel med 11 forskellige metoder, f.eks. sløjfe gennem rækker indtil en tom celle, sløjfe gennem rækker indtil en bestemt værdi er fundet, sløjfe gennem rækker og farve en bestemt celle osv. med VBA makro i Excel.
Ovenstående er det eksempeldatasæt, som denne artikel vil følge for at beskrive metoderne.
1. Embed VBA til at gennemløbe hver celle i hver række i en tabel efter cellereferencenummer
Hvis du ønsker at løkke gennem hver celle i hver række i en tabel i dit Excel-regneark og få den cellereferencenummer som returværdi , skal du følge nedenstående trin.
Trin:
- I begyndelsen skal du trykke på Alt + F11 på dit tastatur eller gå til fanen Udvikler -> Visual Basic for at åbne Visual Basic-editor .
- Klik derefter i pop-up kodevinduet på menulinjen på Indsæt -> Modul .
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
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
Din kode er nu klar til at køre.
- Tryk nu på F5 på dit tastatur eller på menulinjen vælge Kør -> Kør Sub/UserForm Du kan også bare klikke på lille Play-ikon i undermenulinjen for at køre makroen.
- Eller for at se og sammenligne datasættet og resultatet visuelt kan du redde koden og gå tilbage til regnearket af interesse.
- Derfra kan du klikke på Makroer fra den Udvikler fanebladet, vælg Makronavnet, og klik derefter på Kør .
Når koden er blevet eksekveret, skal du se resultatet i ovenstående gif. Der vil være en pop-up MsgBox viser dig den cellereferencenummer for hver celle i hver række fra tabellen i dit Excel-ark.
Forklaring af VBA-kode
LastRow = Range("B" & Rows.Count).End(xlUp).Row
For at få det sidste rækkenummer i tabellen ved at søge i kolonne B.
FørsteRække = 4
Indstil række nummer 4, hvorfra vores data starter.
i = FirstRow
For at løkke fra den første række.
FørsteSpalte = 2
Indstil kolonne 2, hvorfra vores data starter.
Do Indtil i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column
Start sløjfen gennem rækker for at få det sidste kolonnetal ved at evaluere den aktuelle række indtil den sidste række.
Count = FirstColumn Do Indtil Count> LastColumn
Inkrementering af kolonnen fra den første række til den sidste række.
MsgBox "I øjeblikket itererende celle " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop
Dette stykke kode arbejder med at behandle, øge antallet efter hver iteration og vise resultatet af koden.
Læs mere: Sådan tilføjes en ny række automatisk i en Excel-tabelle
2. Implementer VBA til at gennemløbe hver celle i hver række efter værdi
Hvis du ønsker at gennemløbe hver celle i hver række i en tabel og kaste den værdi, der findes i cellerne, som returværdi , så vil dette afsnit hjælpe dig med at finde ud af, hvordan du kan gøre det med VBA Excel.
Det kan du gøre med ListObject og med den DataBodyRange egenskab af VBA Vi vil vise dig makrokoden med både objektet og egenskaben.
2.1. Med ListObject
Trinene til gennemløbe hver celle i hver række i en tabel efter celleværdi med ListObjektet på VBA Excel er angivet nedenfor.
Trin:
- På samme måde som før, åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter i kodevinduet, kopi følgende kode og indsætte det.
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 iCol Next iListRow End Sub
Din kode er nu klar til at køre.
- Derefter, Kør makroen, som vi viste dig i ovenstående afsnit. Resultatet er vist i gif'en nedenfor.
Der vil være en pop-up MsgBox viser dig den den værdi, som hver celle fra hver række har fra tabellen i dit Excel-ark.
Forklaring af VBA-kode
Dim iListRow As ListRow Dim iCol As Range
Definer variablerne.
For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iCol Next iListRow
Dette stykke kode begynder først at gennemløbe rækker i tabellen (" TblStudents " er vores tabelnavn). Derefter indtastes kolonner for hver række. Derefter overføres værdien af cellen i MsgBox. Derefter går den til den næste kolonne. Når den er færdig med at iterere gennem alle kolonner i en række, går den til den næste række og fortsætter iterationsprocessen indtil den sidste række.
2.2. Med egenskaben DataBodyRange
Hvis du vil være mere specifik med de udtrukne data fra tabellen, kan du bruge DataBodyRange egenskab af ListObject . DataBodyRange egenskaben giver dig resultatet, der indeholder intervallet fra listen mellem overskriftsrækken og indsætningsrækken.
Trinene for, hvordan du kan gennemløbe hver celle i hver række i en tabel efter celleværdi med DataBodyRange på VBA Excel er angivet nedenfor.
Trin:
- Som tidligere vist kan åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
Sub LoopThroughRowsByRange() Dim iRange As Range For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub
Din kode er nu klar til at køre.
- Senere, Kør makroen og se følgende gif for at se resultatet.
Der vil være en pop-up MsgBox viser dig den den værdi, som hver celle fra hver række har fra tabellen i dit Excel-ark.
Forklaring af VBA-kode
Dim iRange As Range
Definer variablen.
For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange
Dette stykke kode begynder først at gennemløbe rækker i tabellen (" TblStdnt " er vores tabelnavn) og returnerer et interval af værdier undtagen tabellens overskriftsrække. Derefter overføres værdien af intervallet i MsgBox. Derefter går den til den næste række for at udtrække intervallet og fortsætter iterationsprocessen indtil den sidste række.
3. Anvend VBA-makro til at gennemløbe rækker ved at sammenkæde kolonner i Excel
Dette afsnit viser, hvordan man løkke gennem rækker i en tabel ved at sammenkæde kolonnerne med den første kolonne fra dit datasæt i Excel.
For vores datasæt vil vi f.eks. først iterere gennem John i celle B5 og 101 i celle C5 ved at sammenkæde dem og derefter gennemløbe John i celle B5 og 89 i celle D5 ved at sammenkæde dem fra række 5 .
Lad os vise dig, hvordan du kan gøre det med VBA makro i Excel.
Trin:
- I første omgang skal du åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- For det andet, i kodevinduet, kopi følgende kode og indsætte det.
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
Din kode er nu klar til at køre.
- For det tredje, Kør makroen. Se nedenstående gif for at se resultatet.
Der vil være en pop-up MsgBox viser dig den den sammenkædede værdi af cellerne fra den første og den anden kolonne ( John i celle B5 fra kolonne B og 101 i celle C5 fra kolonne C ) og derefter den sammenkædede værdi af cellerne i den første og den tredje kolonne ( John i celle B5 fra kolonne B og 89 i celle D5 fra kolonne D ) af række nummer 5 fra dit datasæt. Og denne sammenkædning fortsætter, indtil den når den sidste række i tabellen.
Forklaring af VBA-kode
Dim iRange As Range Dim iValue As String
Definer variablen.
Med ActiveSheet.ListObjects("TblConcatenate")
Derefter vælger koden tabellen fra det aktive ark (" TblConcatenate " i vores tabelnavn).
For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value
Derefter begynder iterationen at gentage hver række undtagen kolonnehovedet. Hvis iterationen finder et match i intervallet mellem kolonnehovedet og rækkerne, gemmes værdien i iValue variabel.
Else MsgBox "Evaluering af " & iValue & " & " & iRange.Value End If Next iRange End With
Hvis ovenstående betingelse ikke opfyldes, kaster koden værdien i MsgBox og afslutter betingelsen. Derefter går den videre til en anden løkke i et andet område og fortsætter med at iterere indtil den sidste række. Når den når den sidste række, afslutter makroen udførelsen af koden.
4. Embed Macro til at gennemløbe rækker ved at sammenkæde alle kolonner i en tabel i Excel
I dette afsnit lærer vi, hvordan man sammenkæde alle de kolonner, som hver række indeholder i datasættet med VBA makro i Excel.
Trinene for at udføre dette er vist nedenfor.
Trin:
- For det første skal du åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
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).Range).Value Next iCol MsgBox iResult iResult iResult = "" Next iRow End Sub
Din kode er nu klar til at køre.
- Næste, Kør makrokoden.
Som du kan se på ovenstående gif, er der en pop-up MsgBox viser dig den sammenkædet værdi af alle kolonnerne i hver række fra tabellen i dit Excel-regneark.
Forklaring af VBA-kode
Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String
Definer variablerne.
Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol")
Indstil det arknavn, som vi skal arbejde med (" Sammenkædning af AllCol " er arknavnet i arbejdsmappen).
Set iObj = iSheet.ListObjects("TblConcatenateAll")
Definer det tabelnavn, som vi skal arbejde med (" TblConcatenateAll " er navnet på tabellen i vores datasæt).
For Each iRow In iObj.ListRows
Starter en iteration gennem hver række i tabellen.
For Each iCol In iObj.ListColumns
Starter en iteration gennem hver kolonne i hver række i tabellen.
iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Range).Value Next iCol MsgBox iResult iResult iResult = "" Next iRow
Gem resultatet ved at krydse værdierne i hver kolonne i hver række. Efter at have scannet alle kolonnerne i hver række, sendes resultatet videre i MsgBox. Derefter begynder den igen at løkke i den næste række og fortsætter løkken, indtil den når den sidste række i tabellen.
Læs mere: Sådan sorteres flere kolonner i en tabel med Excel VBA (2 metoder)
5. Stop Iteration hvis værdi fundet ved at gennemløbe rækker i en tabel med VBA-makro
Antag, at du ønsker at løkke gennem rækkerne i din tabel og stoppe løkken, når den finder en bestemt værdi Det kan du gøre med en simpel makrokode.
Lad os lære, hvordan man gør det VBA i Excel.
Trin:
- I første omgang skal du åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter i kodevinduet, kopi følgende kode og indsætte det.
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
Din kode er nu klar til at køre.
- Senere, Kør makroen.
- Det vil starte løkken og stoppe den, når den finder den specifikke værdi (" Kant ") i området og kaster resulterer i den MsgBox .
Som du kan se på billedet ovenfor, er der en pop-up MsgBox, der viser dig den celleadresse, $B$10 , hvor vi har fundet den angivne værdi, " Kant " .
Forklaring af VBA-kode
Dim iData As Range
Definer variablen.
For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData
Dette stykke kode er her til at gennemløbe rækker fra 1 til 15. Hvis den finder det specifikke ord " Kant ", og derefter overfører den resultatet med den celleadresse, der indeholder ordet. Den fortsætter med at gøre dette, indtil den er færdig med at scanne alle dataene fra række 1 til 15 for at finde ordet.
Læs mere: Sådan indsætter eller sletter du rækker og kolonner fra Excel-tabellen
6. VBA til at gennemløbe hver række og farve en bestemt værdi i Excel
Hvad hvis du ikke ønsker at kaste celleadressen for den angivne værdi i MsgBox'en? Du vil måske farve den celle, der indeholder værdien du leder efter.
Lad os lære, hvordan man gør det med VBA makro.
Trin:
- På samme måde som før, åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
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
Din kode er nu klar til at køre.
- Derefter, Kør makroen.
- Det vil starte løkken og stoppe den, når den finder den specifikke værdi (" Kant ") i området og farve cellen med den ColourIndex som du har angivet i koden.
Som du kan se på billedet ovenfor, C ell B10 , hvor vi har fundet den angivne værdi, " Kant " er farvet efter udførelsen af koden.
Forklaring af VBA-kode
Dim iData As Range
Definer variablen.
For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData
Dette stykke kode er her til at gennemløbe rækker fra 1 til 15. Hvis den finder det specifikke ord " Kant "Den fortsætter med at gøre dette, indtil den er færdig med at scanne alle dataene fra række 1 til 15 for at finde ordet.
Læs mere: Sådan bruges VLOOKUP Table Array baseret på celleværdi i Excel
Lignende læsninger
- Eksisterer TABLE-funktionen i Excel?
- Sådan konverteres tabel til liste i Excel (3 hurtige måder)
- Konverter område til tabel i Excel (5 nemme metoder)
- Effektivt brug af formler i en Excel-tabelle (med 4 eksempler)
- Excel-tabellenavn: Alt, hvad du behøver at vide
7. Implementer VBA til at gennemløbe hver række og farve hver ulige række i Excel
I det foregående afsnit har vi lært at farve en celle, der har en bestemt værdi. I dette afsnit lærer vi, hvordan vi kan løkke gennem hver række i en tabel og farve hver ulige række med VBA makro i Excel.
Trinene til udførelse af processen er beskrevet nedenfor.
Trin:
- Som tidligere vist kan åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
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
Din kode er nu klar til at køre.
- Nu, Kør makroen, og se følgende billede for at se resultatet.
Alle de rækker med ulige numre er farvet efter at have gennemløbet alle de rækker, der findes i regnearkets tabel.
Forklaring af VBA-kode
Dim iRow As Long
Definer variablen.
Med Range("B4").CurrentRegion
Definer det område, som vi vil arbejde med.
For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With
Denne del af koden henviser til iterationen gennem alle rækker, startende fra den næste række i den aktuelle række, B4 Hvis modværdien af divisionen af rækketallene med 2 er lig med det returnerede rækketal, der er gemt i en heltalstype, farver denne kode alle de rækker, der er udtrukket ved beregningen, med det farveindeks, der er angivet i koden. Den fortsætter med at bevæge sig gennem alle rækker, indtil den når enden af området.
8. Implementer VBA til at gennemløbe rækker og farve alle lige rækker i Excel
I det foregående afsnit har vi lært at farve alle ulige rækker i en tabel. I dette afsnit vil vi lære, hvordan man løkke gennem hver række i en tabel og farve hver lige række med VBA-makro i Excel.
Trinene til gennemførelse af processen er beskrevet nedenfor.
Trin:
- For det første skal du åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
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
Din kode er nu klar til at køre.
- Næste, Kør makroen, og se på følgende billede for at se resultatet.
Alle de lige rækker er farvet efter at have gennemløbet alle de rækker, der findes i regnearkets tabel.
Forklaring af VBA-kode
Dim iRow As Long
Definer variablen.
Med Range("B4").CurrentRegion
Definer det område, som vi vil arbejde med.
For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With
Dette stykke kode begynder at iterere efter de tre rækker fra den aktuelle række, B4 Den farvelægger den først og øger derefter rækkeantallet med 2 og fortsætter med at farvelægge den, indtil den når den sidste række i datasættet.
9. Anvend makro til at gennemløbe rækker indtil tom celle i Excel
Hvis du ønsker, at din kode skal fungere som den vil løkke gennem alle tabellens rækker og stoppe, når den når en tom celle , så er dette afsnit for dig. Du kan udføre denne opgave både med FOR Loop og Sløjfe til og med i Excel VBA .
9.1. Med FOR Loop
Trin til løkke gennem rækker i en tabel, indtil der er en tom celle med FOR Loop på VBA Excel er angivet nedenfor.
Trin:
- I første omgang skal du åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
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
Din kode er nu klar til at køre.
- Derefter, Kør makroen, og resultatet er vist i gif'en nedenfor.
Efter at have kørt makroen, vil den begyndte at løbe gennem alle rækker i tabellen, og når den nåede den tom celle, celle B8 , det stoppede iterationen .
Forklaring af VBA-kode
Dim x As Integer
Definer variablen.
Application.ScreenUpdating = False
Slå skærmopdateringsbegivenheden fra.
NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count
Gem alle rækker fra og med Celle B4 indtil den sidste.
Range("B4").Select
Vælg Celle B4 .
For x = 1 Til NumRows ActiveCell.Offset(1, 0).Select Next
Dette stykke kode begynder at løbe gennem alle rækker. Når den finder en tom celle i en række, vælges den og fortsætter med at scanne rækken, indtil den når til slutningen.
Application.ScreenUpdating = True
Slå skærmaktualiseringshændelsen til.
9.2. Med Do-Until Loop
Trin til sløjfe gennem rækker indtil en tom celle med Do-Until-sløjfen på VBA er angivet nedenfor.
Trin:
- For det første skal du åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
Sub DoUntilLoopThoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
Din kode er nu klar til at køre.
- Senere, Kør makroen. Resultatet er vist i følgende gif.
Efter at have kørt makroen, startede den løkke gennem alle rækker i tabellen, og når den nåede den tom celle, celle B8 , det stoppede iterationen .
Forklaring af VBA-kode
Range("B4").Select
Vælg den celle, som vi skal arbejde fra.
Gør Indtil IsEmpty(ActiveCell)
Starter og fortsætter looping, indtil der findes en tom celle.
ActiveCell.Offset(1, 0).Select Loop
Når der findes en tom celle i en række, vælges den, og iterationen stoppes.
10. VBA-makro til at gennemløbe rækker indtil flere tomme celler i Excel
I det foregående afsnit har du lært at stoppe løkken, når der findes en tom celle. Men hvad nu hvis du ikke ønsker at stoppe iterationen, før der findes flere tomme celler i stedet for kun én.
Trinene til sløjfe gennem rækker, indtil der er flere tomme celler findes i en tabel med VBA Excel er vist nedenfor.
Trin:
- For det første skal du åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0))) ActiveCell.Offset(2, 0).Select Loop End Sub
Din kode er nu klar til at køre.
- Nu, Kør makroen og se følgende gif for output.
Efter at have kørt makroen, vil den stoppede ikke på den første tomme celle, celle B8 . den stoppede, da den fandt to på hinanden følgende tomme celler på celle B16 .
Forklaring af VBA-kode
Range("B4").Select
Vælg den celle, som vi skal arbejde fra.
Do Indtil IsEmpty(ActiveCell) og IsEmpty(ActiveCell.Offset(1, 0))
Starter og fortsætter looping, indtil der findes to tomme celler i træk.
ActiveCell.Offset(2, 0).Select Loop
Når der findes to tomme celler i træk, vælges den og iterationen stoppes.
11. Embed VBA til at gennemløbe rækker ved at sammenkæde alle kolonner indtil de er tomme i Excel
Dette afsnit viser dig, hvordan du kan løkke gennem alle rækker i en tabel og sammenkæde alle kolonnerne, indtil der er en tom celle findes med VBA Excel.
Lad os lære, hvordan man gør det med VBA makro i Excel.
Trin:
- I første omgang skal du åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Derefter, kopi følgende kode og indsætte det i kodevinduet.
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
Din kode er nu klar til at køre.
- Senere, Kør makroen, og se følgende gif for at se resultatet.
Som du kan se på ovenstående gif, er der en pop-up MsgBox viser dig den den sammenkædede værdi af alle kolonner i hver række fra tabellen i dit Excel-regneark. Men det stoppede, når den nåede den tomme celle .
Forklaring af VBA-kode
Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String
Definer variablerne.
Set iSheet = Sheets("ConcatenatingAllColUntilBlank")
Indstil det arknavn, som vi skal arbejde med (" Sammenkædning af AllColUnUntilBlank " er arknavnet i arbejdsmappen).
iValue = Range("B4").CurrentRegion
Definer det område, som vi vil arbejde med.
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
Dette stykke kode starter løkken med arrayet. Den fortsætter med at løkke, indtil den returnerer det største subscript i arrayet og den nedre grænse for den første dimension. Derefter går den ind i iterationen for at udtrække den nedre grænse for den anden dimension. Derefter overfører den alle de udtrukne værdier i iResult variablen ved at sammenkæde dem og sende resultatet i MsgBox'en. Den fortsætter med at gøre det, indtil den finder en tom celle.
Konklusion
Afslutningsvis har denne artikel vist dig 11 effektive metoder til, hvordan du kan løkke gennem rækker i en tabel i Excel med VBA-makro Jeg håber, at denne artikel har været til stor gavn for dig, og du er velkommen til at stille spørgsmål om emnet.