VBA för att gå igenom rader i en tabell i Excel (11 metoder)

  • Dela Detta
Hugh West

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.xlsm

11 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 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 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 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 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.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.