it-swarm.com.de

Rufen Sie die letzte nicht leere Zelle in einer Spalte in Google Sheets ab

Ich verwende die folgende Funktion 

=DAYS360(A2, A35)

um die Differenz zwischen zwei Daten in meiner Spalte zu berechnen. Die Spalte wird jedoch ständig erweitert, und ich muss zurzeit 'A35' manuell ändern, wenn ich meine Tabelle aktualisiere.

Gibt es eine Möglichkeit (in Google Sheets), die letzte nicht leere Zelle in dieser Spalte zu finden und diesen Parameter dann dynamisch in der obigen Funktion festzulegen?

79
MichaelS

Es gibt vielleicht einen eloquenteren Weg, aber so bin ich dazu gekommen:

Die Funktion zum Suchen der zuletzt besetzten Zelle in einer Spalte lautet:

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

Wenn Sie es also mit Ihrer aktuellen Funktion kombinieren, würde es so aussehen:

=DAYS360(A2,INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) ))
106
Sam Plus Plus

Um die letzte nicht leere Zelle zu finden, können Sie die Funktionen INDEX und MATCH wie folgt verwenden:

=DAYS360(A2; INDEX(A:A; MATCH(99^99;A:A; 1)))

Ich denke, das ist ein bisschen schneller und einfacher.

57
xxxbence

Wenn A2: A zusammenhängende Datumsangaben enthält, gibt INDEX (A2: A, COUNT (A2: A)) das letzte Datum zurück. Die endgültige Formel lautet

=DAYS360(A2,INDEX(A2:A,COUNT(A2:A)))
33
Rubén

Wenn die Spalte nur um zusammenhängend hinzugefügte Datumsangaben erweitert wurde, wie in meinem Fall, habe ich nur die MAX-Funktion verwendet, um das letzte Datum zu erhalten.

Die endgültige Formel lautet:

=DAYS360(A2; MAX(A2:A)) 
14
Poul

Mein Liebling ist:

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

Also für die OP der OP:

=DAYS360(A2,INDEX(A2:A,COUNTA(A2:A),1))
14
Eric Smalling

Obwohl die Frage bereits beantwortet ist, gibt es einen beredten Weg.

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

Zum Beispiel:

Wenn sich Ihre Daten in A1:A100 befinden und Sie der Spalte A weitere Daten hinzufügen möchten, sagen Sie, es könnte später A1:A105 oder sogar A1:A1234 sein, können Sie diesen Bereich verwenden:

A1:A
7
Ramazan Polat

Wie sieht es mit dieser Formel aus, um den letzten Wert zu erhalten:

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

Und das wäre eine abschließende Formel für Ihre ursprüngliche Aufgabe:

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

Angenommen, Ihr ursprüngliches Datum liegt in G10.

6
Andrew Anderson

Hier ist ein anderes:

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

Mit der abschließenden Gleichung ist dies:

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

Die anderen Gleichungen funktionieren hier, aber ich mag diese hier, weil sie die Zeilennummerierung erleichtert, was ich häufiger tun muss. Nur die Zeilennummer wäre so:

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

Ich habe ursprünglich versucht, genau das zu finden, um ein Tabellenkalkulationsproblem zu lösen, konnte aber nichts Nützliches finden, das nur die Zeilennummer des letzten Eintrags angibt. Hoffentlich ist dies für jemanden hilfreich.

Dies hat außerdem den Vorteil, dass es für jeden Datentyp in beliebiger Reihenfolge funktioniert. Sie können leere Zeilen zwischen den Zeilen mit Inhalt einfügen und Zellen mit Formeln, die als "" ausgewertet werden, nicht zählen. Es kann auch wiederholte Werte verarbeiten. Alles in allem ist es der Gleichung, die max ((G: G <> ") * row (G: G)) verwendet, sehr ähnlich, macht es jedoch einfacher, die Zeilennummer herauszuziehen, wenn Sie das wollen .

Alternativ, wenn Sie ein Skript auf Ihrem Arbeitsblatt platzieren möchten, können Sie es sich selbst erleichtern, wenn Sie dies häufig planen. Hier ist das 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;
    }
  }
}

Hier können Sie einfach Folgendes eingeben, wenn Sie möchten, dass sich die letzte Zeile auf dem Blatt befindet, das Sie gerade bearbeiten:

=LASTROW()

oder wenn Sie die letzte Zeile einer bestimmten Spalte aus diesem Arbeitsblatt oder einer bestimmten Spalte aus einem anderen Arbeitsblatt möchten, können Sie Folgendes tun:

=LASTROW("Sheet1","A")

Und für die letzte Reihe eines bestimmten Blattes im Allgemeinen:

=LASTROW("Sheet1")

Dann können Sie die tatsächlichen Daten entweder indirekt verwenden:

=INDIRECT("A"&LASTROW())

oder Sie können das obige Skript in den letzten beiden Zeilen ändern (die letzten beiden Zeilen, da Sie sowohl das Blatt als auch die Spalte einfügen müssten, um den tatsächlichen Wert aus einer tatsächlichen Spalte zu erhalten) und die Variable durch Folgendes ersetzen:

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

und

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

Ein Vorteil dieses Skripts besteht darin, dass Sie auswählen können, ob Sie Gleichungen einschließen möchten, die "" auswerten. Wenn keine Argumente hinzugefügt werden, werden Gleichungen, die "" ausgewertet werden, gezählt, aber wenn Sie ein Blatt und eine Spalte angeben, werden sie jetzt gezählt. Es gibt auch viel Flexibilität, wenn Sie Variationen des Skripts verwenden möchten.

Wahrscheinlich übertrieben, aber alles möglich.

4
Mearg

Berechnen Sie die Differenz zwischen dem letzten Datum in Spalte A und dem Datum in Zelle A2.

=MAX(A2:A)-A2
0
Happy Bird

Ich bin einen anderen Weg gegangen. Da ich weiß, dass ich nach und nach etwas in eine Zeile/Spalte einfügen werde, finde ich die letzte Zeile heraus, indem ich zuerst die Felder zähle, die Daten enthalten. Ich werde das mit einer Kolumne demonstrieren:

=COUNT(A5:A34)

Nehmen wir also an, dass A 21 zurückgegeben wird. A5 ist 4 Reihen weniger, also muss ich die 21. Position aus der vierten Reihe runter bekommen. Ich kann das mit Inderect tun, wie folgt:

=INDIRECT("A"&COUNT(A5:A34)+4)

Es wird die Anzahl der Zeilen mit Daten ermittelt und eine Zahl zurückgegeben, die ich als Indexmodifizierer verwende.

0
Tamir Nadav