Formuła Excel, Uzyskaj ostatni wiersz, w którym zakres jest dynamiczny

2

Chcę uzyskać ostatni numer rzędu, ale zakres będzie dynamiczny.

Nie mogę używać nazwanego zakresu, ponieważ czasami zdefiniowany zakres może zmienić się w moim arkuszu kalkulacyjnym. Czyli pewnego dnia nazwany zakres może wynosić 50 wierszy, następny może być 51. O ile mi wiadomo, zakres nazw się nie zmieni.

Potrzebuję czegoś takiego, Pobierz ostatni wiersz, w którym A: A = 'stack'.

Próbuję zrobić coś takiego, https://www.excel-easy.com/examples/dynamic-named-range.html , mając problemy z wdrożeniem.

Każda pomoc byłaby doceniana.

excelguy
źródło
Co próbowałeś? Prześlij dowolny kod, który miałeś problemy z implementacją, i daj nam znać, jakie błędy otrzymujesz w jakiej linii, lub jeśli nie ma błędów, jaka oczekiwana wydajność jest porównywana z rzeczywistym wyjściem. Czy starasz się znaleźć ostatni wiersz w kolumnie, w którym pojawia się jakiś ciąg?
BruceWayne
Prześlij próbkę danych i wyjaśnij w kontekście. Czy jest jakiś tekst w kolumnie po stack?
teylyn
Co robi A:A='stack' oznaczać? A:A odnosi się do całej kolumny A, więc stwierdzenie nie ma dla mnie sensu.
Ron Rosenfeld

Odpowiedzi:

2

W kolumnie z tekstem można znaleźć ten ostatni wiersz, który ma określoną wartość. Jest to formuła tablicowa, którą należy potwierdzić za pomocą Ctrl + Shift + Enter

=MAX((A1:A100="stack")*(ROW(A1:A100)))

Zobacz komórkę C1 na zrzucie ekranu poniżej.

Możesz pracować z tą funkcją w nazwie zakresu dynamicznego. Ta formuła zawsze rozpoczyna zakres w A1 i spada do ostatniego wystąpienia komórki z tekstem „stos”:

=OFFSET(Sheet1!$A$1,0,0,MAX((Sheet1!$A$1:$A$100="stack")*(ROW(Sheet1!$A$1:$A$100))),1)

W Menedżerze nazw nie musisz używać Ctrl + Shift + Enter, ponieważ wszystkie nazwane formuły są automatycznie oceniane jako formuły tablicowe. Jeśli użyjesz tego podejścia, najlepiej byłoby ograniczyć liczbę wierszy w formule i nie używać odniesień do całych kolumn.

Zwróć uwagę na maszerujące mrówki na ekranie, które okrążają bieżący zasięg.

enter image description here

Jeśli chcesz dołączyć wszystkie wiersze do ostatniego wiersza z tekstem, możesz użyć prostszej formuły.

=OFFSET(Sheet1!$A$1,0,0,MATCH("zzzzz",Sheet1!$A:$A,1),1)

W przypadku dopasowania możesz użyć odwołania do całej kolumny.

teylyn
źródło
0

Powiedzmy, że twoja pierwsza komórka nigdy się nie zmienia i powiedzmy, że tak "A1". W tym celu należy użyć fragmentu takiego jak ten:

private function get_last_row(byref ws as worksheet, optional byval letter_of_first_col as string = "A", optional byval index_of_first_row as interger = 1) as long
    with ws
        get_last_row = .range(letter_of_first_row & index_of_first_row).currentRegion.rows.count + (index_of_first_row - 1)
    end with
end function

Mam nadzieję, że to pomoże

dmb
źródło
Dzięki, jak mogę to wykorzystać, umieściłem go w moim edytorze VBA, a następnie przejdź do mojego arkusza i spróbuj =get_last_row(A1) ale funkcja nie pojawia się nawet po tym, jak to zrobię =
excelguy