środa, 9 lipca 2008

Ostatnia pełna i pierwsza pusta komórka

Regions
lastCell = Application.WorksheetFunction.CountA(Range("B:B"))

można też:
CurrentRegion.Rows.Count
'lub
CurrentRegion.Cols.Count
'lub
CurrentRegion.Count

Liczba zaznaczonych obszarów:
Selection.Areas.Count

Wielkość obszaru
wielkość jakiegoś obszaru to:
myregion.count

Wielkość tą możemy przyrównać do:

Cells.Count 'liczba komórek na arkuszu (region to cały arkusz)
Cells.Rows.Count 'liczba wierszy (kolumna)
Cells.Columns.Count 'liczba kolumn (wiersz)

Zobacz też: ostatnia niepusta komórka arkusza

11 komentarzy:

  1. Witam!! Nalezaloby zaznaczyc ze dotyczy to sytuacjji gdy w kolumnie, zaznaczeniu nie ma komorek pustych .. w tym wypadku zwrocona wartosc nie okresla "adresu" ostatniej pelnej komorki,, tylko ile takich komorek w kolumnie/ zaznaczeniu jest.

    Okreslenie faktycznej ostatniej pelnej komorki nie jest juz takie trywialne, bo wymaga troche wiekszej "gimnastyki"

    mozna to zrobic np. taka procedura:

    Sub LastRow()

    Dim c As Object

    With Sheets(1).Range("H:H")
    Set c = .Find(What:="*", LookIn:=xlValues, Lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlPrevious)
    End With

    MsgBox (c.Row)

    End Sub

    Zwrocony zostanie faktyczny nr wiersza ostatniej pelnej komorki w kolumnie.

    Pozdrawiam

    OdpowiedzUsuń
  2. Ten komentarz został usunięty przez administratora bloga.

    OdpowiedzUsuń
  3. lepiej:

    lastCell = Cells(Rows.Count,2).End(xlUp).Row

    mniej pogmatwane i działa

    OdpowiedzUsuń
  4. a jak do kodu 'gera' wykonać tak, aby zamiast komunikatu dana liczba była zapisana w komórce i aby ta wartość ostatniej komórki także została wypisana w komórce akrusza.

    OdpowiedzUsuń
  5. Po zaznaczeniu jakiegoś obszaru uruchamiamy makro:

    Sub Makro1()
    Cells(1, 1).Value = Selection.Rows.Count
    Cells(2, 1).Value = Selection.SpecialCells(xlCellTypeLastCell).Value
    End Sub

    OdpowiedzUsuń
  6. Dzięki Excel za odp.

    Ale dokładniej chciałbym tak, aby nie korzystać z zaznaczania.
    Tylko aby makro policzyło ile jest pozycji w kolumnie i zapisało liczbę do komórki w zresztą innym arkuszu. A DWA aby podało wartość ostatniej komórki w tej kolumnie.
    Czyli kolumna liczy np. 150 wierszy, więc ostatni to 150, o wartości np. "ostatnia komórka".
    Myślę, że jakby marko wiedziało, że 150 komórka jest ostatnią więc z niej należy pobrać wartość.

    Tak zwraca numer ost. komórki, ale nie wiem jak wartość obok wypisać:

    Dim c As Object

    With Sheets(2).Range("I:I")
    Set c = .Find(What:="*", LookIn:=xlValues, Lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlPrevious)
    End With

    Cells(2, 3).Value = (c.Row)

    OdpowiedzUsuń
  7. Sub testMakro()

    Dim c As Object

    With Sheets(1).Range("D:D")
    Set c = .Find(What:="*", LookIn:=xlValues, Lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlPrevious)
    End With

    Cells(1, 1).Value = c.Row
    Cells(2, 1).Value = c.Value
    End Sub

    OdpowiedzUsuń
  8. Powiedzmy, że ostatnia pełna komórka znajduje się w H20 --> jak ją znaleźć? Powyżej pokazane jest jak znaleźć coś w określonej kolumnie, ale jeśli nie wiemy, która kolumna jest ostatnia?

    Potrzebuję czegoś takiego do macra, które będzie zaznaczało cały aktywny obszar, czyli do ostatniej wypełnionej komórki (H20). Oczywiście mogą zdarzyć się puste komórki w tym obszarze... ;-)

    OdpowiedzUsuń
  9. Witam,

    Makro dokonuje obliczenia w Arkuszu 1.
    Czy można mu zdefiniować zmienną ilość arkuszy do wyliczenia ostatniej komórki. Np. obliczenia w 5 arkuszach, innym razem w 8 arkuszach. Tak abym mógł okręlać ilość arkuszy (np: od Arkusz1 do Arkusz5).

    OdpowiedzUsuń
    Odpowiedzi
    1. postaram się przygotować to przez weekend

      Usuń