[google-apps-script] Selezione dell'ultimo valore di una colonna


Answers

Risposta simile alla risposta di caligari , ma possiamo riordinarla semplicemente specificando l'intera gamma di colonne:

=INDEX(G2:G, COUNT(G2:G))
Question

Ho un foglio di calcolo con alcuni valori nella colonna G. Alcune celle sono vuote in mezzo e ho bisogno di ottenere l'ultimo valore da quella colonna in un'altra cella.

Qualcosa di simile a:

=LAST(G2:G9999)

tranne che LAST non è una funzione.




Per poter restituire l'ultimo valore da una colonna di valori di testo devi usare COUNTA, quindi avresti bisogno di questa formula:

=INDEX(G2:G; COUNTA(G2:G))






Questo funziona per me:

=INDEX(I:I;MAX((I:I<>"")*(ROW(I:I))))



Sembra che Google Apps Script ora supporti intervalli come parametri di funzione. Questa soluzione accetta un intervallo:

// Returns row number with the last non-blank value in a column, or the first row
//   number if all are blank.
// Example: =rowWithLastValue(a2:a, 2)
// Arguments
//   range: Spreadsheet range.
//   firstRow: Row number of first row. It would be nice to pull this out of
//     the range parameter, but the information is not available.
function rowWithLastValue(range, firstRow) {
  // range is passed as an array of values from the indicated spreadsheet cells.
  for (var i = range.length - 1;  i >= 0;  -- i) {
    if (range[i] != "")  return i + firstRow;
  }
  return firstRow;
}

Consulta anche la discussione nel forum di assistenza di Google Apps Script: come posso forzare il ricalcolo delle formule?




La risposta

$ =INDEX(G2:G; COUNT(G2:G))

non funziona correttamente in LibreOffice. Tuttavia, con un piccolo cambiamento, funziona perfettamente.

$ =INDEX(G2:G100000; COUNT(G2:G100000))

Funziona sempre solo se l'intervallo reale è inferiore a (G2:G10000)




È accettabile rispondere alla domanda originale con una risposta fuori tema rigorosamente :) È possibile scrivere una formula nel foglio di calcolo per fare ciò. Brutto forse? ma efficace nel normale funzionamento di un foglio di calcolo.

=indirect("R"&ArrayFormula(max((G:G<>"")*row(G:G)))&"C"&7)


(G:G<>"") gives an array of true false values representing non-empty/empty cells
(G:G<>"")*row(G:G) gives an array of row numbers with zeros where cell is empty
max((G:G<>"")*row(G:G)) is the last non-empty cell in G

Questo è offerto come un pensiero per una serie di domande nell'area dello script che possono essere fornite in modo affidabile con formule di array che hanno il vantaggio di lavorare spesso in modo simile in Excel e OpenOffice.




Questo ottiene l'ultimo valore e gestisce i valori vuoti:

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



La funzione LAST () non è implementata al momento per selezionare l'ultima cella all'interno di un intervallo. Tuttavia, seguendo il tuo esempio:

=LAST(G2:G9999)

siamo in grado di ottenere l'ultima cella utilizzando le due funzioni INDICE () e COUNT () in questo modo:

=INDEX(G2:G; COUNT(G2:G))

C'è un esempio dal vivo nello spreedsheet dove ho trovato (e risolto) lo stesso problema (foglio Orzamentos , cella I5 ). Si noti che funziona perfettamente anche facendo riferimento ad altri fogli all'interno del documento.




Per quanto riguarda il commento di @ Jon_Schneider, se la colonna ha celle vuote usa solo COUNTA ()

=INDEX(G2:G; COUNT**A**(G2:G))



Related