Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Työkirjan Välilehtien Selaaminen | Työskentely Excel-tietojen Kanssa
Excel VBA Liiketoiminnan Automaatioon

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.

Kuva 3.2

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ä

  1. Kirjoita Sub, joka etsii viimeisen rivin käyttämällä End(xlUp)-menetelmää ja tulostaa sen Välitön-ikkunaan.
  2. Samassa Sub:ssa etsi viimeinen rivi toisella tavalla käyttämällä CurrentRegion.Rows.Count ja tulosta sekin — varmista, että tulokset täsmäävät.
  3. Lisää manuaalisesti kuudes tilaus riville 7 taulukossa, suorita makro uudelleen ja varmista, että molemmat menetelmät raportoivat nyt arvon 7 ilman koodimuutoksia:
Vihje
expand arrow

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.Print tulostaa tuloksen Välitön-ikkunaan (Ctrl+G).

2. Toinen tapa CurrentRegion-ominaisuudella

  • CurrentRegion laajenee yksittäisestä aloitussolusta (kokeile Range("A1")) koko yhtenäiseen alueeseen.
  • .Rows.Count kyseisellä 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 Sub uudelleen.
Ratkaisu
expand arrow
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
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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.

Kuva 3.2

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ä

  1. Kirjoita Sub, joka etsii viimeisen rivin käyttämällä End(xlUp)-menetelmää ja tulostaa sen Välitön-ikkunaan.
  2. Samassa Sub:ssa etsi viimeinen rivi toisella tavalla käyttämällä CurrentRegion.Rows.Count ja tulosta sekin — varmista, että tulokset täsmäävät.
  3. Lisää manuaalisesti kuudes tilaus riville 7 taulukossa, suorita makro uudelleen ja varmista, että molemmat menetelmät raportoivat nyt arvon 7 ilman koodimuutoksia:
Vihje
expand arrow

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.Print tulostaa tuloksen Välitön-ikkunaan (Ctrl+G).

2. Toinen tapa CurrentRegion-ominaisuudella

  • CurrentRegion laajenee yksittäisestä aloitussolusta (kokeile Range("A1")) koko yhtenäiseen alueeseen.
  • .Rows.Count kyseisellä 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 Sub uudelleen.
Ratkaisu
expand arrow
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
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 2
some-alt