[google-apps-script] Determinare l'ultima riga in una singola colonna


Answers

Anche se non esiste una formula straighforward, posso pensare, non richiede dozzine di righe di codice per trovare l'ultima riga nella colonna A. Prova questa semplice funzione. Usalo in una cella nel modo normale in cui userai un'altra funzione =CountColA()

function CountColA(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for(var i = data.length-1 ; i >=0 ; i--){
    if (data[i][0] != null && data[i][0] != ''){
      return i+1 ;
    }
  }
}
Question

Ho un foglio con i dati in colonne da A a H

Ho bisogno di determinare l'ultima riga nella colonna A che contiene i dati (è tutto contiguo, senza spazi nei dati / righe).

Vi sono anche dati nelle altre colonne che hanno più righe di dati rispetto alla colonna A , quindi devo isolare solo la colonna A (E / o solo un intervallo all'interno della colonna A ).

Posso farlo a livello di foglio di calcolo usando

=COUNTA(A2:A100)

Tuttavia, in tutte le mie ricerche per una soluzione di Google Apps Script, tutto quello che mi sembra di trovare sono i requisiti per eseguire più funzioni che comprendono decine di linee di codice - incluso un sacco di roba i++ ... Che potrei fare in modo meno complesso tramite compensazione direttamente da A1 .

C'è forse un modo specifico per la colonna di modificare questo metodo?

var aLast = ss.getDataRange().getNumRows();

Se un processo contorto è ciò che è richiesto, allora così sia. Ma trovo difficile immaginare (e ancora più difficile da trovare!) Una soluzione più semplice.

Qualcuno si preoccupa di illuminarmi (o schioccare la mia bolla)?




var Direction=SpreadsheetApp.Direction;
var aLast =ss.getRange("A"+(ss.getLastRow()+1)).getNextDataCell(Direction.UP).getRow();



Sto usando getDataRange() seguito da getNumRows() . La prima funzione

Restituisce un intervallo corrispondente alle dimensioni in cui sono presenti i dati

e la seconda funzione

Restituisce il numero di righe in questo intervallo.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var ws = ss.getActiveSheet();
var lastRow = ws.getDataRange().getNumRows();

PS Spero che funzioni per tutti i casi.




Questo potrebbe essere un altro modo per andare in giro. Potrebbe essere necessario giocare con il codice in base alle proprie esigenze

    function fill() {
      var spreadsheet = SpreadsheetApp.getActive();
      spreadsheet.getRange('a1').activate();
      var lsr = spreadsheet.getLastRow();
      lsr=lsr+1;
      lsr="A1:A"+lsr;

      spreadsheet.getActiveRange().autoFill(spreadsheet.getRange(lsr), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
};



Related