Pobierz ostatnią niepustą komórkę w kolumnie w Arkuszach Google

Używam następującej funkcji

=DAYS360(A2, A35)

Aby obliczyć różnicę między dwoma datami w mojej kolumnie. Jednak kolumna stale się rozwija i obecnie muszę ręcznie zmienić "A35", gdy aktualizuję mój arkusz kalkulacyjny.

Czy istnieje sposób (w Arkuszach Google), aby znaleźć ostatnią niepustą komórkę w tej kolumnie, a następnie dynamicznie ustawić ten parametr w powyższej funkcji?

Author: Rubén, 2011-11-14

9 answers

Może jest bardziej elokwentny sposób, ale to jest sposób, który wymyśliłem:

Funkcja znajdowania ostatniej wypełnionej komórki w kolumnie to:

=INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) )

Więc jeśli połączysz ją z bieżącą funkcją, będzie wyglądała tak:

=DAYS360(A2,INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) ))
 90
Author: Sam Plus Plus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-17 01:54:39

Aby znaleźć ostatnią niepustą komórkę, możesz użyć INDEX oraz MATCH funkcje takie jak:

=DAYS360(A2; INDEX(A:A; MATCH(99^99;A:A; 1)))
Myślę, że jest to trochę szybsze i łatwiejsze.
 48
Author: xxxbence,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-09 08:39:43

Jeśli A2:A Zawiera daty,To INDEX(A2:a, COUNT(A2:a)) zwróci ostatnią datę. Formuła końcowa to

=DAYS360(A2,INDEX(A2:A,COUNT(A2:A)))
 28
Author: Rubén,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-25 22:37:30

Jeśli kolumna jest rozszerzona tylko o kolejne daty jak w moim przypadku-użyłem tylko funkcji MAX, aby uzyskać ostatnią randkę.

Ostateczna formuła będzie brzmiała:

=DAYS360(A2; MAX(A2:A)) 
 11
Author: Poul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-01 23:07:05

Moje Ulubione to:

=INDEX(A2:A,COUNTA(A2:A),1)

Więc na potrzeby OP:

=DAYS360(A2,INDEX(A2:A,COUNTA(A2:A),1))
 8
Author: Eric Smalling,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-31 13:09:44

Chociaż pytanie zostało już udzielone, istnieje wymowny sposób, aby to zrobić.

Use just the column name to denote last non-empty row of that column.

Na przykład:

Jeśli Twoje dane są w A1:A100 i chcesz być w stanie dodać więcej danych do kolumny A, powiedzmy, że może to być A1:A105 lub nawet A1:A1234 później, możesz użyć tego zakresu:

A1:A
 5
Author: Ramazan Polat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-24 22:44:29

A co z tym wzorem na uzyskanie ostatniej wartości:

=index(G:G;max((G:G<>"")*row(G:G)))

I to byłaby ostateczna formuła dla Twojego pierwotnego zadania:

=DAYS360(G10;index(G:G;max((G:G<>"")*row(G:G))))

Załóżmy, że Twoja początkowa data jest w G10.

 3
Author: Andrew Anderson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-22 20:37:50

Oto kolejny:

=indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),""))))

Przy czym równanie końcowe jest takie:

=DAYS360(A2,indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),"")))))

Inne równania tutaj działają, ale podoba mi się ten, ponieważ sprawia, że uzyskanie numeru wiersza jest łatwe, co uważam, że muszę robić częściej. Tylko numer wiersza byłby taki:

=max(arrayformula(if(A:A<>"",row(A:A),"")))

Początkowo próbowałem znaleźć tylko to, aby rozwiązać problem z arkuszem kalkulacyjnym, ale nie mogłem znaleźć niczego użytecznego, co po prostu dało numer wiersza ostatniego wpisu, więc mam nadzieję, że jest to pomocne dla ktoś.

Ma to również dodatkową zaletę, że działa dla każdego typu danych w dowolnej kolejności i możesz mieć puste wiersze między wierszami z zawartością i nie liczy komórek z formułami, które oceniają na"". Może również obsługiwać powtarzające się wartości. W sumie jest to bardzo podobne do równania, które używa max ((G: G"")*row (G:G)) tutaj, ale sprawia, że wyciąganie numeru wiersza jest trochę łatwiejsze, jeśli o to chodzi.

Alternatywnie, jeśli chcesz umieścić skrypt na swoim arkusz możesz ułatwić sobie, jeśli planujesz to robić często. Oto ten scirpt:

function lastRow(sheet,column) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  if (column == null) {
    if (sheet != null) {
       var sheet = ss.getSheetByName(sheet);
    } else {
      var sheet = ss.getActiveSheet();
    }
    return sheet.getLastRow();
  } else {
    var sheet = ss.getSheetByName(sheet);
    var lastRow = sheet.getLastRow();
    var array = sheet.getRange(column + 1 + ':' + column + lastRow).getValues();
    for (i=0;i<array.length;i++) {
      if (array[i] != '') {       
        var final = i + 1;
      }
    }
    if (final != null) {
      return final;
    } else {
      return 0;
    }
  }
}

Tutaj możesz po prostu wpisać następujący wiersz, jeśli chcesz, aby ostatni wiersz znajdował się na tym samym arkuszu, który aktualnie edytujesz:

=LASTROW()

Lub jeśli chcesz, aby ostatni wiersz określonej kolumny z tego arkusza, lub konkretnej kolumny z innego arkusza, możesz wykonać następujące czynności:

=LASTROW("Sheet1","A")

I dla ostatniego wiersza danego arkusza w ogóle:

=LASTROW("Sheet1")

Następnie, aby uzyskać dane rzeczywiste można wykorzystać pośrednio:

=INDIRECT("A"&LASTROW())

Lub możesz zmodyfikować powyższy skrypt w dwóch ostatnich wierszach (dwie ostatnie, ponieważ musisz umieścić zarówno arkusz, jak i kolumnę, aby uzyskać rzeczywistą wartość z rzeczywistej kolumny) i zastąpić zmienną następującą:

return sheet.getRange(column + final).getValue();

I

return sheet.getRange(column + lastRow).getValue();

Jedną z zalet tego skryptu jest to, że możesz wybrać, czy chcesz dołączyć równania, które oceniają do"". Jeśli nie zostaną dodane żadne argumenty równania oceniające do "" będą liczone, ale jeśli określisz arkusz i kolumnę, będą one teraz liczone. Ponadto, istnieje wiele elastyczności, jeśli jesteś skłonny do korzystania z wariantów skryptu.

Prawdopodobnie przesada, ale wszystko możliwe.

 0
Author: Mearg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-12 21:19:30

Sposób, w jaki amator to robi, to " = CONCATENATE ("A", COUNTUNIQUE (A1: A9999))", gdzie A1 jest pierwszą komórką w kolumnie, a A9999 jest dalej w tej kolumnie, niż kiedykolwiek spodziewam się żadnych wpisów. Ten wynikowy# może być używany z funkcją pośrednią w razie potrzeby.

 -1
Author: Conrad Lindes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-20 21:03:03