Satura rādītājs
Ja mūsu Excel darbgrāmatā ir liela datu kopa, dažreiz ir ērti, ja mēs varam izmantot cilpu, lai izvilktu konkrētus rezultātus, kurus vēlamies iegūt. VBA ir visefektīvākā, ātrākā un drošākā metode, lai veiktu jebkuru operāciju programmā Excel. Šajā rakstā mēs parādīsim 11 dažādas metodes, kā veikt jebkuru operāciju programmā Excel. cilpa caur tabulas rindām programmā Excel ar VBA makro .
Lejupielādēt darbgrāmatu
No šejienes varat lejupielādēt bezmaksas praktisko Excel darba burtnīcu.
Cilpa caur tabulas rindām ar VBA.xlsm11 metodes ar VBA, lai Excel programmā Excel veidotu cilpas caur tabulas rindām
Šajā sadaļā uzzināsiet, kā cilpa caur tabulas rindām ar 11 dažādām metodēm, piemēram, cilpa caur rindām līdz tukšai šūnai, cilpa caur rindām, līdz tiek atrasta konkrēta vērtība, cilpa caur rindām un konkrētas šūnas iekrāsošana u. c. ar VBA makro programmā Excel.
Iepriekš ir sniegts datu kopas piemērs, kas tiks izmantots šajā rakstā, lai aprakstītu metodes.
1. VBA iestrādāšana, lai pēc šūnas atsauces numura cilpveidā izietu cilpu caur katru šūnas rindu katrā tabulas rindā
Ja vēlaties cilpa caur katru šūnu katrā tabulas rindā. savā Excel darblapā un iegūstiet šūnas atsauces numurs kā atgriešanas vērtība pēc tam izpildiet tālāk aprakstītās darbības.
Soļi:
- Sākumā nospiediet Alt + F11 uz tastatūras vai atveriet cilni Izstrādātājs -> Visual Basic lai atvērtu Visual Basic redaktors .
- Pēc tam uznirstošajā koda logā izvēlnes joslā noklikšķiniet uz Ievietot -> Modulis .
- Tad, kopēt šādu kodu un ielīmēt to ievadiet koda logā.
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
Tagad jūsu kods ir gatavs darbam.
- Tagad nospiediet F5 uz tastatūras vai izvēlnes joslā izvēlieties Run -> Run Sub/UserForm Varat arī vienkārši noklikšķināt uz maza ikona Atskaņot apakšizvēlnes joslā, lai palaistu makro.
- Vai arī, lai vizuāli aplūkotu un salīdzinātu datu kopu un rezultātu, varat. saglabāt kodu un atgriezties darblapā interesē.
- No turienes varat noklikšķināt uz Makroprocesori no Izstrādātājs cilne, atlasiet makroreaktora nosaukumu, un pēc tam noklikšķiniet uz Palaist .
Pēc veiksmīgas koda izpildes apskatiet iepriekš redzamo gif attēlu, lai redzētu rezultātu. Parādīsies uznirstošais logs. MsgBox parādot jums katras rindas šūnas atsauces numurs no tabulas Excel lapā.
VBA koda skaidrojums
LastRow = Range("B" & amp; Rows.Count).End(xlUp).Row
Lai iegūtu pēdējās rindas numuru tabulā, meklējot B slejā.
FirstRow = 4
Iestatiet 4. rindu, no kuras sākas mūsu dati.
i = FirstRow
Cilpa no pirmās rindas.
FirstColumn = 2
Iestatiet 2. sleju, no kuras sākas mūsu dati.
Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column
Sākt cilpu caur rindām, lai iegūtu pēdējās kolonnas numuru, izvērtējot pašreizējo rindu līdz pēdējai rindai.
Count = FirstColumn Do Until Count> LastColumn
Palielina kolonnas cilpu no pirmās rindas līdz pēdējai rindai.
MsgBox "Pašlaik atkārtojas šūna " & amp; Chr(Count + 64) & amp; i Count = Count + 1 Loop i = i + 1 Loop
Šī koda daļa apstrādā, pēc katras iterācijas palielina un parāda koda rezultātu.
Lasīt vairāk: Kā automātiski pievienot jaunu rindu Excel tabulā
2. Ieviest VBA, lai veiktu cilpu caur katru šūnas šūnu katrā rindā pēc vērtības
Ja vēlaties cilpa caur katru šūnu katrā tabulas rindā un kā atgriešanas vērtību izmet šūnās esošo vērtību. , tad šajā sadaļā tiks sniegta informācija par to, kā to izdarīt, izmantojot VBA Excel.
To var izdarīt, izmantojot ListObject un ar DataBodyRange īpašums VBA . Mēs parādīsim makro kodu gan ar objektu, gan īpašību.
2.1. Ar ListObject
Pasākumi, lai ar ListObject cilpas palīdzību iziet cauri katrai tabulas rindai pēc šūnas vērtības. vietnē VBA Tālāk ir sniegta Excel.
Soļi:
- Tāpat kā iepriekš, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Pēc tam koda logā, kopēt šādu kodu un ielīmēt to.
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
Tagad jūsu kods ir gatavs darbam.
- Pēc tam, Palaist makro, kā parādījām iepriekšējā sadaļā. Rezultāts ir redzams zemāk redzamajā gif attēlā.
Būs pop-up MsgBox parādot jums katras rindas katras šūnas vērtība no tabulas Excel lapā.
VBA koda skaidrojums
Dim iListRow As ListRow Dim iCol As Range
Definējiet mainīgos lielumus.
For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow
Šī koda daļa vispirms sāk cilpas izveidi, lai pārlūkotu tabulas rindas (" TblStudents " ir mūsu tabulas nosaukums). Pēc tam ieraksta kolonnas katrai rindai. Pēc tam nodod šūnas vērtību MsgBox. Pēc tam pāriet uz nākamo kolonnu. Kad ir pabeigta visu vienas rindas kolonnu iterēšana, tad tā pāriet uz nākamo rindu un turpina iterācijas procesu līdz pēdējai rindai.
2.2. Ar īpašību DataBodyRange
Lai precīzāk apstrādātu no tabulas iegūtos datus, varat izmantot funkciju DataBodyRange īpašums ListObject . DataBodyRange īpašība parādīs rezultātu, kas satur diapazonu no saraksta starp galvenes rindu un ievietošanas rindu.
Darbības, kā jūs varat cilpa caur katru tabulas rindas šūnu pēc šūnas vērtības, izmantojot DataBodyRange vietnē VBA Tālāk ir sniegta Excel.
Soļi:
- Kā parādīts iepriekš, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Tad, kopēt šādu kodu un ielīmēt ievadiet to koda logā.
Sub LoopThroughRowsByRange() Dim iRange As Range For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub
Tagad jūsu kods ir gatavs darbam.
- Vēlāk, Palaist makro un apskatiet šādu gif attēlu, lai redzētu izvades rezultātu.
Būs pop-up MsgBox parādot jums katras rindas katras šūnas vērtība no tabulas Excel lapā.
VBA koda skaidrojums
Dim iRange As Range
Definējiet mainīgo lielumu.
For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange
Šī koda daļa vispirms sāk cilpas izveidi, lai pārlūkotu tabulas rindas (" TblStdnt " ir mūsu tabulas nosaukums) un atgriež vērtību diapazonu, izņemot tabulas galvenes rindu. Pēc tam MsgBox nodod diapazona vērtību. Tad tas dodas uz nākamo rindu, lai iegūtu diapazonu, un turpina iterācijas procesu līdz pēdējai rindai.
3. Piemērojiet VBA makrokontroli, lai veiktu iterāciju pa rindām, savietojot kolonnas programmā Excel
Šajā sadaļā tiks parādīts, kā cilpa caur tabulas rindām, savienojot kolonnas ar pirmo kolonnu. no jūsu datu kopas programmā Excel.
Piemēram, attiecībā uz mūsu datu kopu vispirms mēs iterēsim caur Džons šūnā B5 un 101 šūnā C5 savienojot tos un pēc tam iterējot caur Džons šūnā B5 un 89 šūnā D5 savienojot tos no 5 rinda .
Ļaujiet mums parādīt, kā to var izdarīt ar VBA makro programmā Excel.
Soļi:
- Sākumā atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Otrkārt, koda logā, kopēt šādu kodu un ielīmēt to.
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
Tagad jūsu kods ir gatavs darbam.
- Treškārt, Palaist Lai redzētu rezultātu, aplūkojiet zemāk redzamo gif attēlu.
Būs pop-up MsgBox parādot jums pirmās un otrās kolonnas šūnu konkatenētā vērtība. ( Džons B5 šūnā no Colum B un 101 šūnā C5 no C slejas ) un pēc tam pirmās un trešās kolonnas šūnu konkatenētā vērtība. ( Džons B5 šūnā no Colum B un 89 šūnā D5 no D slejas ) no 5. rinda no jūsu datu kopas. Un šī savienošanas darbība turpināsies, līdz tiks sasniegta pēdējā tabulas rinda.
VBA koda skaidrojums
Dim iRange As Range Dim iValue As String
Definējiet mainīgo lielumu.
Ar ActiveSheet.ListObjects("TblConcatenate")
Pēc tam kods izvēlas tabulu no aktīvās lapas (" TblConcatenate " mūsu tabulas nosaukumā).
For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value
Pēc tam sāk iterēt katru rindu, izņemot kolonnas galveni. Ja iterācijas laikā tiek atrasta atbilstība diapazonā starp kolonnas galveni un rindām, tad vērtība tiek saglabāta datubāzē. iValue mainīgs.
Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With
Ja iepriekš minētais nosacījums netiek izpildīts, tad kods izmet vērtību MsgBox logā un pabeidz nosacījuma izpildi. Pēc tam tas pāriet uz cilpas veidošanu citā diapazonā un turpina iterāciju līdz beigu rindai. Kad tiek sasniegta beigu rinda, makrokontrole beidz koda izpildi.
4. Ietveriet makrokontroles programmu, lai veiktu rindu atkārtošanu, apvienojot visas Excel tabulas kolonnas
Šajā sadaļā mēs uzzināsim, kā savieno visas kolonnas, kas atrodas katrā rindā. datu kopā ar VBA makro programmā Excel.
Turpmāk ir parādīti soļi, kā to veikt.
Soļi:
- Pirmkārt, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Tad, kopēt šādu kodu un ielīmēt to ievadiet koda logā.
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
Tagad jūsu kods ir gatavs darbam.
- Nākamais, Palaist makro kodu.
Kā redzat no iepriekš redzamā gifa, ir tas, ka ir uznirstošais logs. MsgBox parādot jums visu sleju, kas atrodas katrā rindā, summētā vērtība. no Excel darblapas tabulas.
VBA koda skaidrojums
Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String
Definējiet mainīgos lielumus.
Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol")
Iestatiet lapas nosaukumu, ar kuru mēs strādāsim (" ConcatenatingAllCol " ir darbgrāmatas lapas nosaukums).
Set iObj = iSheet.ListObjects("TblConcatenateAll")
Definējiet tabulas nosaukumu, ar kuru mēs strādāsim (" TblConcatenateAll " ir tabulas nosaukums mūsu datu kopā).
Par katru iRow In iObj.ListRows
Sākas iterācija pa katru tabulas rindu.
Par katru iCol In iObj.ListColumns
Sākas iterācija pa katru tabulas rindas kolonnu.
iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult iResult = "" Next iRow
Saglabājiet rezultātu, krustojot vērtības, ko nes katra rindas sleja. Pēc visu katrā rindā esošo sleju skenēšanas tas izvada rezultātu MsgBox. Pēc tam atkal sāk cilpas veidošanu nākamajā rindā un turpina cilpas veidošanu, līdz sasniedz tabulas pēdējo rindu.
Lasīt vairāk: Kā šķirot vairākas tabulas kolonnas, izmantojot Excel VBA (2 metodes)
5. Iterācijas apstāšanās, ja vērtība atrasta, ar VBA makroekrānu cilpojot pa tabulas rindām
Pieņemsim, ka vēlaties cilpa caur tabulas rindām un apstāties, kad tiek atrasta konkrēta vērtība. . To var izdarīt, izmantojot vienkāršu makrokodu.
Uzzināsim, kā to izdarīt VBA programmā Excel.
Soļi:
- Sākumā atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Pēc tam koda logā, kopēt šādu kodu un ielīmēt to.
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
Tagad jūsu kods ir gatavs darbam.
- Vēlāk, Palaist makro.
- Tas sākt cilpu un apturēt to, kad tā atrod noteiktu vērtību. (" Edge ") diapazonā un izmet rezultātā MsgBox .
Kā redzams attēlā iepriekš, tiek parādīts uznirstošais logs MsgBox, kurā parādīts šūnas adrese, $B$10 , kur mēs atradām norādīto vērtību, " Edge " .
VBA koda skaidrojums
Dim iData As Range
Definējiet mainīgo lielumu.
For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & amp; iData.Address End If Next iData
Šī koda daļa ir paredzēta, lai veiktu cilpu caur rindām no 1 līdz 15. Ja tā atrod konkrētu vārdu " Edge ", tad tas nodod rezultātu kopā ar šūnas adresi, kurā atrodas vārds. Tā turpina to darīt, līdz beidz skenēt visus datus no 1. līdz 15. rindai, meklējot vārdu.
Lasīt vairāk: Kā ievietot vai dzēst rindas un kolonnas no Excel tabulas
6. VBA, lai Excel programmā Excel veidotu cilpu katrā rindā un iekrāsotu konkrētu vērtību
Ko darīt, ja jūs nevēlaties, lai MsgBox izmet norādītās vērtības šūnas adresi? Iespējams, jūs vēlēsieties nokrāso šūnas, kurās ir vērtība jūs meklējat.
Uzzināsim, kā to izdarīt ar VBA makro.
Soļi:
- Tāpat kā iepriekš, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Tad, kopēt šādu kodu un ielīmēt to ievadiet koda logā.
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
Tagad jūsu kods ir gatavs darbam.
- Pēc tam, Palaist makro.
- Tas sākt cilpu un apturēt to, kad tiek atrasta konkrētā vērtība (" Edge ") diapazonā un izkrāsot šūnas ar ColourIndex kas norādīti kodā.
Kā redzams attēlā iepriekš, C ell B10 , kur mēs atradām norādīto vērtību, " Edge " ir iekrāsots pēc koda izpildes.
VBA koda skaidrojums
Dim iData As Range
Definējiet mainīgo lielumu.
For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData
Šī koda daļa ir paredzēta, lai veiktu cilpu caur rindām no 1 līdz 15. Ja tā atrod konkrētu vārdu " Edge ", tad tā iekrāso šūnu, kurā atrodas vārds. Tā turpina to darīt, līdz beidz skenēt visus datus no 1. līdz 15. rindai, meklējot vārdu.
Lasīt vairāk: Kā lietot VLOOKUP tabulas masīvu, pamatojoties uz šūnas vērtību programmā Excel
Līdzīgi lasījumi
- Vai programmā Excel eksistē TABLE funkcija?
- Kā konvertēt tabulu sarakstā programmā Excel (3 ātri veidi)
- Diapazona konvertēšana uz tabulu programmā Excel (5 vienkāršas metodes)
- Efektīva formulas izmantošana Excel tabulā (ar 4 piemēriem)
- Excel tabulas nosaukums: viss, kas jums jāzina
7. Ieviest VBA, lai programmā Excel veidotu cilpu katrā rindā un iekrāsotu katru nepāra rindu
Iepriekšējā sadaļā mēs uzzinājām, kā iekrāsot šūnu, kurā ir noteikta vērtība. Šajā sadaļā mēs uzzināsim, kā cilpa caur katru tabulas rindu un iekrāso katru nepāra rindu. ar VBA makro programmā Excel.
Tālāk ir aprakstīti procesa izpildes soļi.
Soļi:
- Kā parādīts iepriekš, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Tad, kopēt šādu kodu un ielīmēt to ievadiet koda logā.
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
Tagad jūsu kods ir gatavs darbam.
- Tagad, Palaist makro un apskatiet tālāk redzamo attēlu, lai redzētu izvades rezultātu.
Visi nepāra skaitļa rindas ir iekrāsotas. pēc tam, kad ir veikta cilpas iziešana pa visām darblapas tabulas rindām.
VBA koda skaidrojums
Dim iRow As Long
Definējiet mainīgo lielumu.
Ar Range("B4").CurrentRegion
Definējiet diapazonu, ar kuru mēs strādāsim.
For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With
Šī koda daļa attiecas uz iterāciju pa visām rindām, sākot no kārtējās rindas nākamās rindas, B4 Ja rindu numuru dalīšanas ar 2 mod ir vienāds ar atdoto rindu numuru, kas saglabāts veselā skaitļa tipā, tad šis kods iekrāso visas rindas, kas iegūtas ar aprēķinu, izmantojot kodā norādīto krāsu indeksu. Tas turpina pārvietoties pa visām rindām, līdz sasniedz diapazona beigas.
8. Ieviest VBA, lai programmā Excel veidotu cilpu caur rindām un iekrāsotu katru pāra rindu
Iepriekšējā sadaļā mēs uzzinājām, kā iekrāsot katru nepāra rindu tabulā. Šajā sadaļā mēs uzzināsim, kā cilpa caur katru tabulas rindu un iekrāso katru pāra rindu. ar VBA makro programmā Excel.
Tālāk ir aprakstīti procesa izpildes soļi.
Soļi:
- Pirmkārt, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Tad, kopēt šādu kodu un ielīmēt to ievadiet koda logā.
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
Tagad jūsu kods ir gatavs darbam.
- Nākamais, Palaist makro un apskatiet tālāk redzamo attēlu, lai redzētu rezultātu.
Visi pāra skaitļa rindas ir iekrāsotas. pēc tam, kad ir veikta cilpas iziešana pa visām darblapas tabulas rindām.
VBA koda skaidrojums
Dim iRow As Long
Definējiet mainīgo lielumu.
Ar Range("B4").CurrentRegion
Definējiet diapazonu, ar kuru mēs strādāsim.
For iRow = 3 To .Rows.Count 2. solis .Rows(iRow).Interior.ColorIndex = 8 Nākamais End With
Šī koda daļa sāk iterāciju pēc trim rindām no pašreizējās rindas, B4 Vispirms to iekrāso, pēc tam palielina rindu skaitu par 2 un turpina to krāsot, līdz sasniedz datu kopas pēdējo rindu.
9. Piemērojiet makrokontroli, lai veiktu iterāciju pa rindām līdz tukšai šūnai programmā Excel
Ja vēlaties, lai jūsu kods darbotos tā, kā tas darbosies cilpa caur visām tabulas rindām un apstāties, kad tiek sasniegta tukša šūna. , tad šī sadaļa ir domāta tieši jums. Šo uzdevumu var izpildīt gan ar FOR cilpa un Do-līdz cilpa programmā Excel VBA .
9.1. Ar FOR cilpu
Soļi, lai cilpa caur tabulas rindām, līdz tiek atrasta tukša šūna ar FOR Loop vietnē VBA Tālāk ir sniegta Excel.
Soļi:
- Sākumā atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Pēc tam, kopēt šādu kodu un ielīmēt to ievadiet koda logā.
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
Tagad jūsu kods ir gatavs darbam.
- Tad, Palaist makro, un rezultāts ir parādīts zemāk redzamajā gif attēlā.
Pēc makra palaišanas sāka cilpu caur visām rindām tabulā, un, tiklīdz tas sasniedzis tukša šūna, šūna B8 , tas apturēja iterāciju .
VBA koda skaidrojums
Dim x kā vesels skaitlis
Definējiet mainīgo lielumu.
Application.ScreenUpdating = False
Izslēdziet ekrāna atjaunināšanas notikumu.
NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count
Saglabāt visas rindas, sākot no Šūna B4 līdz pēdējam.
Range("B4").Select
Atlasiet Šūna B4 .
For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next
Šī koda daļa sāk cilpu caur visām rindām. Kad tā rindā atrod tukšu šūnu, tā to atlasa un turpina skenēt rindas, līdz sasniedz galu.
Application.ScreenUpdating = True
Ieslēdziet ekrāna atjaunināšanas notikumu.
9.2. Ar Do-Until cilpu
Soļi, lai cilpa caur rindām līdz tukšai šūnai ar Do-Until cilpu vietnē VBA ir norādītas turpmāk.
Soļi:
- Pirmkārt, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Tad, kopēt šādu kodu un ielīmēt to ievadiet koda logā.
Sub DoUntilLoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
Tagad jūsu kods ir gatavs darbam.
- Vēlāk, Palaist Rezultāts ir parādīts šajā gif attēlā.
Pēc makra palaišanas sākās visu rindu cilpu veikšana tabulā, un, tiklīdz tas sasniedzis tukša šūna, šūna B8 , tas apturēja iterāciju .
VBA koda skaidrojums
Range("B4").Select
Atlasiet šūnas, no kurām mēs strādāsim.
Vai, kamēr nav tukšs(ActiveCell)
Sākas un turpina cilpas darbību, līdz tiek atrasta tukša šūna.
ActiveCell.Offset(1, 0).Select cilpa
Kad rindā tiek atrasta tukša šūna, atlasiet to un pārtrauciet iterāciju.
10. VBA makroekrāns, lai veiktu iterāciju pa rindām, līdz Excel ir vairākas tukšas šūnas
Iepriekšējā nodaļā uzzinājāt, kā apstādināt cilpu, kad tiek atrasta tukša šūna. Bet ko darīt, ja nevēlaties apstādināt iterāciju, līdz tiek atrastas vairākas tukšas šūnas, nevis tikai viena.
Pasākumi, lai cilpa caur rindām, līdz vairākas tukšas šūnas ir atrodami tabulā ar VBA Excel ir parādīti turpmāk.
Soļi:
- Pirmkārt, atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Tad, kopēt šādu kodu un ielīmēt to ievadiet koda logā.
Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) ActiveCell.Offset(2, 0).Select Loop End Sub
Tagad jūsu kods ir gatavs darbam.
- Tagad, Palaist makro un skatiet šādu gif izvades rezultātu.
Pēc makra palaišanas neapstājās pie pirmās tukšās šūnas, šūnas B8. . Tā apstājās, kad atrada divas secīgas tukšas šūnas šūnā B16 .
VBA koda skaidrojums
Range("B4").Select
Atlasiet šūnas, no kurām mēs strādāsim.
Vai, kamēr nav IsEmpty(ActiveCell) Un IsEmpty(ActiveCell.Offset(1, 0))
Sākas un turpina cilpas darbību, līdz tiek atrastas divas secīgas tukšas šūnas.
ActiveCell.Offset(2, 0).Select cilpa
Kad tiek atrastas divas secīgas tukšas šūnas, atlasiet to un pārtrauciet iterāciju.
11. Programmā Excel iestrādājiet VBA, lai veidotu cilpu caur rindām, apvienojot visas kolonnas, līdz tās ir tukšas
Šajā sadaļā tiks parādīts, kā cilpa caur visām tabulas rindām un savieno visas kolonnas līdz tukšai šūnai. tiek atrasts ar VBA Excel.
Uzzināsim, kā to izdarīt ar VBA makro programmā Excel.
Soļi:
- Sākumā atveriet Visual Basic redaktors no Izstrādātājs cilne un Ievietot a Modulis koda logā.
- Tad, kopēt šādu kodu un ielīmēt to ievadiet koda logā.
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
Tagad jūsu kods ir gatavs darbam.
- Vēlāk, Palaist makro un skatiet šādu gif attēlu, lai redzētu rezultātu.
Kā redzat no iepriekš redzamā gifa, ir tas, ka ir uznirstošais logs. MsgBox parādot jums visu sleju, kas atrodas katrā rindā, summētā vērtība. no Excel darblapas tabulas. Bet tas apstājās, tiklīdz tā sasniedza tukšo šūnu .
VBA koda skaidrojums
Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String
Definējiet mainīgos lielumus.
Set iLoksne = Lapas("ConcatenatingAllColUntilBlank")
Iestatiet lapas nosaukumu, ar kuru mēs strādāsim (" ConcatenatingAllColUntilBlank " ir darbgrāmatas lapas nosaukums).
iValue = Range("B4").CurrentRegion
Definējiet diapazonu, ar kuru mēs strādāsim.
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
Šī koda daļa sāk cilpu ar masīvu. Tā turpina cilpas darbību, līdz tiek atgriezts lielākais masīva apakšindekss un pirmās dimensijas apakšējā robeža. Pēc tam tā sāk otrās dimensijas apakšējās robežas iegūšanas iterāciju. Pēc tam tā visas iegūtās vērtības nodod masīvā iRezultāts Tas turpina to darīt, līdz tiek atrasta tukša šūna. Tas turpina to darīt, līdz tiek atrasta tukša šūna.
Secinājums
Nobeigumā šajā rakstā tika parādītas 11 efektīvas metodes, kā cilpa caur tabulas rindām programmā Excel ar VBA makro . es ceru, ka šis raksts jums ir bijis ļoti noderīgs. Jūs varat uzdot jebkādus jautājumus par šo tēmu.