Holen Sie sich letzten Zeile eine bestimmte Spalte Funktion - beste Lösung
Mit "lastRow" kann man die Letzte Zeile in einem Blatt. Manchmal müssen Sie die Letzte Zeile einer bestimmten Spalte. Google Apps script, das nicht bieten diese Funktion. Es gibt rund 5 Fragen und Lösungen, die bereits hier auf der Website, aber alle haben einen spezifischen code, um ihn herum gewickelt.
Nahm ich die Lösung, was ich denke ist die Schnellste in den meisten Fällen - Sie beginnen, das Ende des Blattes und schauen nach hinten in die Spalte, die Sie angegeben haben - und machte einen clean-Funktion aus.
Dies ist also ein Beitrag für Anfänger zu kopieren-einfügen dieser - das argument "RowNumber" ist die Spalte, die Sie wollen, zu betrachten, wie eine Zahl: 0 A, 1 B, 2 C, etc. Die Funktion gibt die Letzte Zeile als Zahl ("4")
Weil ich bin bei Tag 3 der apps-script-user, meine Frage ist: ist dies nicht der Schnellste und sauberste Weg, es zu tun, oder das script funktioniert nicht richtig auf einige Umstände, sagen Sie mir bitte. für meinen Anwendungsfall funktioniert es perfekt.
function getLastColumnRow(RowNumber, sheet) {
var data = sheet.getDataRange().getValues();
var numRows = data.length;
//loop from bottom to top for last row in given row "RowNumber"
while( data[numRows - 1][RowNumber] == "" && numRows > 0 ) {
numRows--;
}
return numRows
}
InformationsquelleAutor Astrax1980 | 2013-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt nur einen kleinen Fehler auf Ihrem code verwenden, sollten Sie die
===
Betreiber und nicht die==
. Weil Sie erwägen, "0" Werte als leer. Wenn Sie nicht wissen, den Unterschied zwischen Ihnen, versuchen Sie eine schnelle Suche durch, um mehr zu erfahren.Es ist seltsam, aber, dass Sie mit dem Namen der variable, enthält die Spalte Anzahl als "RowNumber", warum nicht "spalteanzahl"? Es macht mehr Sinn für mich.
Andere Sache, die ich in der Regel versuchen, zu tun, alle meine scripts zu reduzieren API-Aufrufe. Und es ist sehr üblich, dass nach der Suche ich brauche die Daten an anderer Stelle. Also, es wäre gut, wenn diese Funktion akzeptiert die Daten direkt, anstatt das Blatt-Objekt. Oder vielleicht entweder.
Endlich, es ist wahrscheinlich nicht wirklich einen großen Unterschied machen, aber Sie tun konnte, eine weniger Subtraktion pro Schleife durch starten einer weniger.
Dass meine Kommentare zu üben, hier ist der resultierende code:
Einen VORBEHALT auf, die sowohl unsere codes, die wir erwägen, eine leere, nur durch die überprüfung der Wert in einer Zelle. Es könnte eine Formel, die per definition bedeutet, dass die Zelle nicht leer ist, ist die Rückgabe ein leerer string. z.B.
=IF(A1="Some comparison that returns false"; "really?"; "")
InformationsquelleAutor Henrique G. Abreu
Es gibt schnellere Möglichkeiten, es zu tun und weniger konsumieren api-Daten:
1) Sie verwenden können, binäre Suche, statt einer Schleife potenziell alle Zeilen. Stellen Sie sicher, es gibt keine Löcher in Ihre Spalte, um zu arbeiten.
2) können Sie erhalten nur die Spalte, anstatt die ganze Palette durch machen getRange ("a1:a") aber Sie wi konstruieren müssen, die Palette saite, basierend auf der Spalte, die Sie wollen
Kombinieren Sie 1 & 2
Cheers
InformationsquelleAutor Zig Mandel