Innehållsförteckning
När vi har ett stort dataset i vår Excel-arbetsbok är det ibland praktiskt att kunna slinga oss igenom rader för att få fram de specifika resultat som vi vill ha. VBA är den mest effektiva, snabbaste och säkraste metoden för att utföra alla operationer i Excel. I den här artikeln kommer vi att visa dig 11 olika metoder för att loop genom rader i en tabell i Excel med VBA-makro .
Ladda ner arbetsboken
Du kan ladda ner den kostnadsfria Excel-arbetsboken för övningar här.
Slinga genom rader i en tabell med VBA.xlsm11 metoder med VBA för att gå igenom rader i en tabell i Excel
I det här avsnittet får du lära dig hur du kan loop genom rader i en tabell med 11 olika metoder, t.ex. loop genom rader tills en tom cell, loop genom rader tills ett visst värde hittas, loop genom rader och färga en viss cell osv. med VBA makro i Excel.
Ovan är det exempel på ett dataset som den här artikeln kommer att följa för att beskriva metoderna.
1. Bädda in VBA för att gå igenom varje cell i varje rad i en tabell efter cellreferensnummer
Om du vill gå igenom varje cell i varje rad i en tabell i ditt Excel-arbetsblad och få fram cellreferensnummer som returvärde. följ sedan de steg som beskrivs nedan.
Steg:
- I början trycker du på Alt + F11 på tangentbordet eller gå till fliken Utvecklare -> Visual Basic för att öppna Redigerare för Visual Basic .
- I popup-kodfönstret klickar du sedan i menyraden på Infoga -> Modul .
- Då, kopiera följande kod och pasta den i kodfönstret.
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 kod är nu redo att köras.
- Tryck nu på F5 på tangentbordet eller välj i menyraden Kör -> Kör Sub/UserForm Du kan också bara klicka på liten Play-ikon i undermenyfältet för att köra makrot.
- Om du vill se och jämföra datasetet och resultatet visuellt kan du rädda koden och gå tillbaka till arbetsbladet av intresse.
- Därifrån kan du klicka på Makroer från Utvecklare fliken, Välj makronamnet, och klicka sedan på Kör .
Efter att koden har körts, titta på ovanstående gif för att se resultatet. Det kommer att finnas en pop-up MsgBox visar dig den cellreferensnummer för varje cell i varje rad från tabellen i ditt Excel-ark.
VBA-kodförklaring
LastRow = Range("B" & Rows.Count).End(xlUp).Row
För att få fram det sista radnumret i tabellen genom att söka i kolumn B.
Första raden = 4
Ställ in rad nummer 4, från vilken våra data börjar.
i = FirstRow
För att slinga från den första raden.
Första kolumnen = 2
Ställ in kolumn nummer 2, från vilken våra data börjar.
Gör tills i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column
Börja looping genom raderna för att få fram det sista kolumnnumret genom att utvärdera den aktuella raden fram till den sista raden.
Count = FirstColumn Do Tills Count> LastColumn
Inkrementell looping av kolumnen från den första raden till den sista raden.
MsgBox "För närvarande itererande cell " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop
Den här delen av koden arbetar med att bearbeta, öka efter varje iteration och visa resultatet av koden.
Läs mer: Hur man lägger till en ny rad automatiskt i en Excel-tabell
2. Implementera VBA för att gå igenom varje cell i varje rad efter värde
Om du vill loopar genom varje cell i varje rad i en tabell och kastar det värde som finns i cellerna som returvärde , hjälper det här avsnittet dig att ta reda på hur du kan göra det med VBA Excel.
Det kan du göra med hjälp av ListObject och med den DataBodyRange egenskap hos VBA Vi kommer att visa dig makrokoden med både objektet och egenskapen.
2.1. Med ListObject
Stegen för att loopar genom varje cell i varje rad i en tabell efter cellvärde med ListObject på VBA Excel finns nedan.
Steg:
- På samma sätt som tidigare, öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- I kodfönstret, kopiera följande kod och pasta den.
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
Din kod är nu redo att köras.
- Efter det, Kör makrot som vi visade dig i avsnittet ovan. Resultatet visas i gif:en nedan.
Det kommer att finnas en pop-up MsgBox visar dig den Det värde som varje cell i varje rad har. från tabellen i ditt Excel-ark.
VBA-kodförklaring
Dim iListRow As ListRow Dim iCol As Range
Definiera variablerna.
For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow
Den här koden börjar först med att gå igenom raderna i tabellen (" TblStudents " är vårt tabellnamn). Ange sedan kolumner för varje rad. Skicka sedan cellens värde till MsgBox. Gå sedan till nästa kolumn. När du har gått igenom alla kolumner i en rad, går du till nästa rad och fortsätter med iterationen fram till den sista raden.
2.2. Med egenskapen DataBodyRange
Om du vill vara mer specifik med de extraherade uppgifterna från tabellen kan du använda DataBodyRange egenskap hos ListObject . DataBodyRange kommer du att få ett resultat som innehåller intervallet från listan mellan rubrikraden och den infogade raden.
Stegen för hur du kan loopar genom varje cell i varje rad i en tabell efter cellvärde med DataBodyRange på VBA Excel finns nedan.
Steg:
- Som tidigare nämnts kan öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- Då, kopiera följande kod och pasta den i kodfönstret.
Sub LoopThroughRowsByRange() Dim iRange As Range For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub
Din kod är nu redo att köras.
- Senare, Kör makrot och titta på följande gif för att se resultatet.
Det kommer att finnas en pop-up MsgBox visar dig den Det värde som varje cell i varje rad har. från tabellen i ditt Excel-ark.
VBA-kodförklaring
Dim iRange som intervall
Definiera variabeln.
For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange
Den här koden börjar först med att gå igenom raderna i tabellen (" TblStdnt " är vårt tabellnamn) och returnerar ett intervall av värden exklusive tabellens huvudrad. Skicka sedan värdet av intervallet i MsgBox. Därefter går den till nästa rad för att extrahera intervallet och fortsätter iterationsprocessen tills den sista raden.
3. Tillämpa VBA-makro för att gå igenom rader genom att sammanfoga kolumner i Excel
Det här avsnittet visar hur man loopar genom rader i en tabell genom att sammanfoga kolumnerna med den första kolumnen från ditt dataset i Excel.
För vårt dataset kommer vi till exempel först att iterera genom John i cell B5 och 101 i cell C5 genom att sammanfoga dem och sedan iterera genom John i cell B5 och 89 i cell D5 genom att sammanfoga dem från rad 5 .
Låt oss visa dig hur du kan göra det med hjälp av VBA makro i Excel.
Steg:
- Till att börja med öppnar du Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- För det andra, i kodfönstret, kopiera följande kod och pasta den.
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 kod är nu redo att köras.
- För det tredje, Kör Makrot. Titta på gif:en nedan för att se resultatet.
Det kommer att finnas en pop-up MsgBox visar dig den det sammanlagda värdet av cellerna i den första och den andra kolumnen ( John i Cell B5 från Colum B och 101 i cell C5 från kolumn C ) och sedan det sammanlagda värdet av cellerna i den första och den tredje kolumnen ( John i Cell B5 från Colum B och 89 i cell D5 från kolumn D ) av rad nummer 5 från ditt dataset. Denna sammanlänkning fortsätter tills den når den sista raden i tabellen.
VBA-kodförklaring
Dim iRange As Range Dim iValue As String
Definiera variabeln.
Med ActiveSheet.ListObjects("TblConcatenate")
Därefter väljer koden tabellen från det aktiva bladet (" TblConcatenate " i vårt tabellnamn).
For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value
Därefter börjar iterering av varje rad med undantag för kolumnens rubrik. Om itereringsprocessen hittar en matchning i intervallet mellan kolumnrubriken och raderna sparas värdet i iValue variabel.
Else MsgBox "Utvärdering av " & iValue & ": " & iRange.Value End If Next iRange End With
Om ovanstående villkor inte uppfylls kastar koden värdet i MsgBox och avslutar villkoret. Därefter fortsätter koden med en loop i ett annat intervall och fortsätter att iterera fram till slutraden. När den når slutraden avslutar makrot kodexekveringen.
4. Bädda in ett makro för att gå igenom rader genom att sammanfoga alla kolumner i en tabell i Excel
I det här avsnittet lär vi oss hur man sammanfoga alla kolumner som varje rad innehåller. i datamängden med VBA makro i Excel.
Stegen för att utföra detta visas nedan.
Steg:
- För det första, öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- Då, kopiera följande kod och pasta den i kodfönstret.
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 I iObj.ListColumn iResult = iResult & " " &Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow End Sub
Din kod är nu redo att köras.
- Nästa, Kör makrokoden.
Som du kan se i gif:en ovan finns det en popup-fönsterbild. MsgBox visar dig den sammanlagt värde av alla kolumner som finns i varje rad. från tabellen i ditt Excel-arbetsblad.
VBA-kodförklaring
Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String
Definiera variablerna.
Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol")
Ange namnet på det ark som vi ska arbeta med (" Sammanfogning av AllCol " är arknamnet i arbetsboken).
Set iObj = iSheet.ListObjects("TblConcatenateAll")
Ange det tabellnamn som vi ska arbeta med (" TblConcatenateAll " är tabellens namn i vårt dataset).
För varje iRow i iObj.ListRows
Startar en iteration genom varje rad i tabellen.
För varje iCol i iObj.ListColumns
Startar en iteration genom varje kolumn i varje rad i tabellen.
iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow
Lagra resultatet genom att korsa värdena i varje kolumn i varje rad. Efter att ha skannat igenom alla kolumner i varje rad skickas resultatet till MsgBox. Sedan börjar du återigen med nästa rad och fortsätter att gå i slinga tills du når den sista raden i tabellen.
Läs mer: Sortera flera kolumner i en tabell med Excel VBA (2 metoder)
5. Stoppa iterationen om värdet hittas genom att gå igenom raderna i en tabell med VBA-makro
Anta att du vill loopar genom raderna i din tabell och stoppar loopningen när den hittar ett visst värde Det kan du göra med en enkel makrokod.
Låt oss lära oss hur man gör det VBA i Excel.
Steg:
- Till att börja med öppnar du Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- I kodfönstret, kopiera följande kod och pasta den.
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 kod är nu redo att köras.
- Senare, Kör makro.
- Den kommer att Starta slingan och stoppa den när den hittar det specifika värdet. (" Kant ") i intervallet och kastar resulterar i att MsgBox .
Som du kan se på bilden ovan finns det en pop-up MsgBox som visar dig den celladress, $B$10 där vi hittade det angivna värdet, " Kant " .
VBA-kodförklaring
Dim iData som intervall
Definiera variabeln.
For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData
Den här delen av koden är till för att gå igenom rader från 1 till 15. Om den hittar det specifika ordet " Kant " och skickar sedan resultatet vidare till den celladress som innehåller ordet. Det fortsätter så här tills det är färdigt att söka igenom alla data från rad 1 till 15 för att hitta ordet.
Läs mer: Hur du infogar eller tar bort rader och kolumner från Excel-tabellen
6. VBA för att gå igenom varje rad och färga ett visst värde i Excel
Vad händer om du inte vill kasta celladressen för det angivna värdet i MsgBox? Du kanske vill färga cellen som innehåller värdet du letar efter.
Låt oss lära oss hur man gör det med VBA makro.
Steg:
- På samma sätt som tidigare, öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- Då, kopiera följande kod och pasta den i kodfönstret.
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 kod är nu redo att köras.
- Efter det, Kör makro.
- Den kommer att starta slingan och stoppa den när den hittar det specifika värdet (" Kant ") i intervallet och färga cellen med den ColourIndex som du angav i koden.
Som du kan se på bilden ovan, C ell B10 där vi hittade det angivna värdet, " Kant " är färgad. efter att koden har utförts.
VBA-kodförklaring
Dim iData som intervall
Definiera variabeln.
For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData
Den här delen av koden är till för att gå igenom rader från 1 till 15. Om den hittar det specifika ordet " Kant "Det fortsätter så här tills den har gått igenom alla data från rad 1 till 15 för att söka efter ordet.
Läs mer: Hur man använder VLOOKUP tabellarket baserat på cellvärdet i Excel
Liknande läsningar
- Finns TABLE-funktionen i Excel?
- Hur du konverterar tabell till lista i Excel (3 snabba sätt)
- Konvertera intervall till tabell i Excel (5 enkla metoder)
- Använd formel i en Excel-tabell på ett effektivt sätt (med 4 exempel)
- Excel tabellnamn: Allt du behöver veta
7. Implementera VBA för att gå igenom varje rad och färga varje udda rad i Excel
I föregående avsnitt har vi lärt oss hur man färglägger en cell som har ett visst värde. I det här avsnittet kommer vi att lära oss hur man loopar genom varje rad i en tabell och färglägger varje udda rad med VBA makro i Excel.
Stegen för att genomföra processen beskrivs nedan.
Steg:
- Som tidigare nämnts kan öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- Då, kopiera följande kod och pasta den i kodfönstret.
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 kod är nu redo att köras.
- Nu, Kör makrot och titta på följande bild för att se resultatet.
Alla rader med udda nummer är färgade efter att ha gått igenom alla rader i tabellen i arbetsbladet.
VBA-kodförklaring
Dim iRow som lång
Definiera variabeln.
Med Range("B4").CurrentRegion
Definiera det område som vi ska arbeta med.
For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With
Den här delen av koden avser iterationen genom alla rader, med början från nästa rad till den aktuella raden, B4 Om modvärdet för divisionen av radnumren med 2 är lika med det återgivna radnumret som lagras i en heltalstyp, färgar denna kod alla rader som tas fram genom beräkningen med det färgindex som anges i koden. Den fortsätter att gå igenom alla rader tills den når slutet av intervallet.
8. Implementera VBA för att gå igenom rader och färga alla jämna rader i Excel
I föregående avsnitt har vi lärt oss hur man färglägger varje udda rad i en tabell. I det här avsnittet ska vi lära oss hur man loopar genom varje rad i en tabell och färglägger varje jämn rad med VBA-makro i Excel.
Stegen för att genomföra processen diskuteras nedan.
Steg:
- För det första, öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- Då, kopiera följande kod och pasta den i kodfönstret.
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 kod är nu redo att köras.
- Nästa, Kör makrot och titta på följande bild för att se resultatet.
Alla jämna rader är färgade efter att ha gått igenom alla rader i tabellen i arbetsbladet.
VBA-kodförklaring
Dim iRow som lång
Definiera variabeln.
Med Range("B4").CurrentRegion
Definiera det område som vi ska arbeta med.
For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With
Den här koden börjar iterera efter de tre raderna från den aktuella raden, B4 Den färglägger den först och ökar sedan radantalet med 2 och fortsätter att färglägga den tills den når den sista raden i datasetet.
9. Tillämpa makro för att söka igenom rader tills en tom cell i Excel
Om du vill att din kod ska fungera som den ska loopar genom alla rader i tabellen och stannar när den når en tom cell kan du utföra den uppgiften både med hjälp av FOR-slinga och Slinga till och med tills i Excel VBA .
9.1. Med FOR-slinga
Stegen till loopar genom rader i en tabell tills du hittar en tom cell med FOR Loop på VBA Excel finns nedan.
Steg:
- Till att börja med öppnar du Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- Efter det, kopiera följande kod och pasta den i kodfönstret.
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 kod är nu redo att köras.
- Då, Kör makrot och resultatet visas i gif:en nedan.
Efter att ha kört makrot, är det började gå igenom alla rader i tabellen och när den nådde den tom cell, Cell B8 , det stoppade iterationen .
VBA-kodförklaring
Dim x som heltal
Definiera variabeln.
Application.ScreenUpdating = False
Stäng av skärmuppdateringen.
NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count
Lagra alla rader från och med Cell B4 till och med den sista.
Range("B4").Select
Välj Cell B4 .
For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next
Den här koden börjar gå igenom alla rader och när den hittar en tom cell i en rad markerar den den och fortsätter att skanna raderna tills den når slutet.
Application.ScreenUpdating = True
Aktivera skärmuppdateringshändelsen.
9.2. Med en "Gör-och-tills"-slinga
Stegen till loop genom rader tills en tom cell med Do-Until-slinga på VBA anges nedan.
Steg:
- För det första, öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- Då, kopiera följande kod och pasta den i kodfönstret.
Sub DoUntilLoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
Din kod är nu redo att köras.
- Senare, Kör makrot. Resultatet visas i följande gif.
Efter att ha kört makrot startade det looping genom alla rader i tabellen och när den nådde den tom cell, Cell B8 , det stoppade iterationen .
VBA-kodförklaring
Range("B4").Select
Välj den cell som vi ska arbeta från.
Gör tills IsEmpty(ActiveCell)
Startar och fortsätter att gå i loop tills en tom cell hittas.
ActiveCell.Offset(1, 0).Select Loop
När en tom cell hittas i en rad markeras den och iterationen stoppas.
10. VBA-makro för att söka igenom rader tills flera tomma celler i Excel
I föregående avsnitt har du lärt dig hur du kan stoppa slingan när en tom cell hittas. Men vad händer om du inte vill stoppa iterationen förrän flera tomma celler hittas i stället för bara en.
Stegen för att loop genom rader tills flera tomma celler återfinns i en tabell med VBA Excel visas nedan.
Steg:
- För det första, öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- Då, kopiera följande kod och pasta den i kodfönstret.
Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) ActiveCell.Offset(2, 0).Select Loop End Sub
Din kod är nu redo att köras.
- Nu, Kör makrot och se följande gif som resultat.
Efter att ha kört makrot, är det inte stannade på den första tomma cellen, Cell B8. Den stannade när den hittade två på varandra följande tomma celler på Cell B16 .
VBA-kodförklaring
Range("B4").Select
Välj den cell som vi ska arbeta från.
Gör tills IsEmpty(ActiveCell) och IsEmpty(ActiveCell.Offset(1, 0))
Startar och fortsätter att gå i loop tills två tomma celler hittas.
ActiveCell.Offset(2, 0).Select Loop
När två på varandra följande tomma celler hittas väljer du den och stoppar iterationen.
11. Bädda in VBA för att gå igenom rader genom att sammanfoga alla kolumner tills de är tomma i Excel
Det här avsnittet visar hur du kan Slinga genom alla rader i en tabell och sammanfoga alla kolumner tills en tom cell hittas. hittas med VBA Excel.
Låt oss lära oss hur man gör det med VBA makro i Excel.
Steg:
- Till att börja med öppnar du Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- Då, kopiera följande kod och pasta den i kodfönstret.
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 kod är nu redo att köras.
- Senare, Kör makrot och se följande gif för resultatet.
Som du kan se i gif:en ovan finns det en popup-fönsterbild. MsgBox visar dig den sammanlagt värde av alla kolumner som finns i varje rad. från tabellen i ditt Excel-arbetsblad. Men det stannade när den nådde den tomma cellen .
VBA-kodförklaring
Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String
Definiera variablerna.
Set iSheet = Sheets("ConcatenatingAllColUntilBlank")
Ange namnet på det ark som vi ska arbeta med (" Samkörning av AllColUntilBlank " är arknamnet i arbetsboken).
iValue = Range("B4").CurrentRegion
Definiera det område som vi ska arbeta 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
Den här koden startar slingan med arrayen. Den fortsätter att slinga tills den returnerar det största subscriptet i arrayen och den nedre gränsen för den första dimensionen. Sedan går den in i iterationen för att extrahera den nedre gränsen för den andra dimensionen. Därefter passerar den alla extraherade värden i iResult variabeln genom att sammanfoga dem och kasta resultatet i MsgBox. Den fortsätter att göra detta tills den hittar en tom cell.
Slutsats
Sammanfattningsvis har den här artikeln visat dig 11 effektiva metoder för hur du kan loop genom rader i en tabell i Excel med VBA-makro Jag hoppas att den här artikeln har varit till stor nytta för dig. Du får gärna ställa frågor om ämnet.