Työkirjan Välilehtien Selaaminen
Pyyhkäise näyttääksesi valikon
Todellinen data ei sisällä merkintää siitä, mihin se päättyy. Kovakoodattu Range("A1:I5") lakkaa toimimasta heti, kun joku lisää kuudennen tilauksen — siksi sinun täytyy kysyä taulukolta, mihin sen data loppuu.
Viimeisen rivin etsiminen
Koko kurssin käytetyin koodirivi:
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Lue tämä oikealta vasemmalle: aloita sarakkeen A aivan alimmasta rivistä (ws.Rows.Count), hyppää ylöspäin (End(xlUp)) kunnes saavut ensimmäiseen täytettyyn soluun, ja palauta sen rivinumero. Toimii riippumatta siitä, kuinka monta tilausta on olemassa.
Viimeisen sarakkeen etsiminen
Toimii samalla tavalla, mutta vaakasuunnassa:
Dim lastCol As Long
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
UsedRange
Ilmoittaa laskentataulukon koko suorakulmaisen alueen, jossa on joskus ollut tietoja — kätevä nopeaan tarkistukseen, mutta käytä varoen: se muistaa solut, joissa on aiemmin ollut tietoja, vaikka niiden sisältö olisi poistettu, joten se voi yliarvioida todellisen tietojen alueen.
Debug.Print ws.UsedRange.Address ' e.g. $A$1:$I$6
Debug.Print ws.UsedRange.Rows.Count ' 6
CurrentRegion
Yleensä parempi työkalu: laajenee yksittäisestä solusta ympäröivään yhtenäiseen tietolohkoon, pysähtyen ensimmäiseen tyhjään riviin tai sarakkeeseen — vastaa täsmälleen siistiä taulukkoa kuten Orders:
Dim tableRange As Range
Set tableRange = ws.Range("A1").CurrentRegion
Debug.Print tableRange.Address ' $A$1:$I$6
Debug.Print tableRange.Rows.Count - 1 ' 5 — subtract 1 to exclude the header
Tehtävä
- Kirjoita
Sub, joka etsii viimeisen rivin käyttämälläEnd(xlUp)-menetelmää ja tulostaa sen Välitön-ikkunaan. - Samassa
Sub:ssa etsi viimeinen rivi toisella tavalla käyttämälläCurrentRegion.Rows.Countja tulosta sekin — varmista, että tulokset täsmäävät. - Lisää manuaalisesti kuudes tilaus riville 7 taulukossa, suorita makro uudelleen ja varmista, että molemmat menetelmät raportoivat nyt arvon 7 ilman koodimuutoksia:
1. Viimeisen rivin etsiminen End(xlUp)-komennolla
- Aloitus aivan sarakkeen A alimmasta solusta ja hyppy ylöspäin — sama toimintamalli kuin luvun 3 "Viimeisen rivin etsiminen" -osiossa.
Debug.Printtulostaa tuloksen Välitön-ikkunaan (Ctrl+G).
2. Toinen tapa CurrentRegion-ominaisuudella
CurrentRegionlaajenee yksittäisestä aloitussolusta (kokeileRange("A1")) koko yhtenäiseen alueeseen..Rows.Countkyseisellä alueella sisältää otsikkorivin — muista luvun huomio, että jos haluat vain datarivit, vähennä 1. Koska tässä tehtävässä vertaillaan vain kahta tapaa, tulosta ensin raakadata ja pohdi otsikon vaikutusta myöhemmin.
3. Kuudennen rivin lisääminen ja uudelleensuoritus
- Koodia ei tarvitse muuttaa lainkaan — kirjoita uusi tilaus suoraan riville 7 laskentataulukossa ja suorita sama
Subuudelleen.
Sub CompareLastRowMethods()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
Dim lastRowMethod1 As Long
lastRowMethod1 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Debug.Print "End(xlUp): " & lastRowMethod1
Dim lastRowMethod2 As Long
lastRowMethod2 = ws.Range("A1").CurrentRegion.Rows.Count
Debug.Print "CurrentRegion: " & lastRowMethod2
End Sub
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Työkirjan Välilehtien Selaaminen
Todellinen data ei sisällä merkintää siitä, mihin se päättyy. Kovakoodattu Range("A1:I5") lakkaa toimimasta heti, kun joku lisää kuudennen tilauksen — siksi sinun täytyy kysyä taulukolta, mihin sen data loppuu.
Viimeisen rivin etsiminen
Koko kurssin käytetyin koodirivi:
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Lue tämä oikealta vasemmalle: aloita sarakkeen A aivan alimmasta rivistä (ws.Rows.Count), hyppää ylöspäin (End(xlUp)) kunnes saavut ensimmäiseen täytettyyn soluun, ja palauta sen rivinumero. Toimii riippumatta siitä, kuinka monta tilausta on olemassa.
Viimeisen sarakkeen etsiminen
Toimii samalla tavalla, mutta vaakasuunnassa:
Dim lastCol As Long
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
UsedRange
Ilmoittaa laskentataulukon koko suorakulmaisen alueen, jossa on joskus ollut tietoja — kätevä nopeaan tarkistukseen, mutta käytä varoen: se muistaa solut, joissa on aiemmin ollut tietoja, vaikka niiden sisältö olisi poistettu, joten se voi yliarvioida todellisen tietojen alueen.
Debug.Print ws.UsedRange.Address ' e.g. $A$1:$I$6
Debug.Print ws.UsedRange.Rows.Count ' 6
CurrentRegion
Yleensä parempi työkalu: laajenee yksittäisestä solusta ympäröivään yhtenäiseen tietolohkoon, pysähtyen ensimmäiseen tyhjään riviin tai sarakkeeseen — vastaa täsmälleen siistiä taulukkoa kuten Orders:
Dim tableRange As Range
Set tableRange = ws.Range("A1").CurrentRegion
Debug.Print tableRange.Address ' $A$1:$I$6
Debug.Print tableRange.Rows.Count - 1 ' 5 — subtract 1 to exclude the header
Tehtävä
- Kirjoita
Sub, joka etsii viimeisen rivin käyttämälläEnd(xlUp)-menetelmää ja tulostaa sen Välitön-ikkunaan. - Samassa
Sub:ssa etsi viimeinen rivi toisella tavalla käyttämälläCurrentRegion.Rows.Countja tulosta sekin — varmista, että tulokset täsmäävät. - Lisää manuaalisesti kuudes tilaus riville 7 taulukossa, suorita makro uudelleen ja varmista, että molemmat menetelmät raportoivat nyt arvon 7 ilman koodimuutoksia:
1. Viimeisen rivin etsiminen End(xlUp)-komennolla
- Aloitus aivan sarakkeen A alimmasta solusta ja hyppy ylöspäin — sama toimintamalli kuin luvun 3 "Viimeisen rivin etsiminen" -osiossa.
Debug.Printtulostaa tuloksen Välitön-ikkunaan (Ctrl+G).
2. Toinen tapa CurrentRegion-ominaisuudella
CurrentRegionlaajenee yksittäisestä aloitussolusta (kokeileRange("A1")) koko yhtenäiseen alueeseen..Rows.Countkyseisellä alueella sisältää otsikkorivin — muista luvun huomio, että jos haluat vain datarivit, vähennä 1. Koska tässä tehtävässä vertaillaan vain kahta tapaa, tulosta ensin raakadata ja pohdi otsikon vaikutusta myöhemmin.
3. Kuudennen rivin lisääminen ja uudelleensuoritus
- Koodia ei tarvitse muuttaa lainkaan — kirjoita uusi tilaus suoraan riville 7 laskentataulukossa ja suorita sama
Subuudelleen.
Sub CompareLastRowMethods()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Orders")
Dim lastRowMethod1 As Long
lastRowMethod1 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Debug.Print "End(xlUp): " & lastRowMethod1
Dim lastRowMethod2 As Long
lastRowMethod2 = ws.Range("A1").CurrentRegion.Rows.Count
Debug.Print "CurrentRegion: " & lastRowMethod2
End Sub
Kiitos palautteestasi!