2017-05-22 2 views
2

Mit dem Code, den ich unten habe ich versuche, Daten auf ein neues Blatt zu kopieren, aber ich möchte es immer mit A2 beginnen.Over schreiben Daten in einer Spalte

Ich möchte nicht, dass die Daten ständig zu Ende gehen, ich möchte es immer in A2 starten. Darüber hinaus, wo das Problem kommt, habe ich Formeln in B2: N200, so dass die Daten ständig versuchen, bis zum Ende zu kopieren.

Ursprünglich sah der Code wie folgt:

if(data[n][0]){ 
    var dest = ss.getSheetByName(data[n][0].toString().replace(/ /g,''));//find the destination sheet 
    Logger.log(data[n][0].toString().replace(/ /g,'')) 
    var destRange = dest.getRange(dest.getLastRow()+1,1);// define range 
    master.getRange(selectedfirstRow+n,2,1,1).copyTo(destRange);// and make copy below last row 
    } 
    } 

Und ich erkennen, dass der Var destRange wurde definiert, wo die Eingabe von Daten zu beginnen.

if(data[n][0]){ 
    var dest = ss.getSheetByName('Sunday'.replace(/ /g,''));//find the destination sheet 
    Logger.log(data[n][0].toString().replace(/ /g,'')) 
    var destRange = dest.getRange(2+1,1);// define range 
    master.getRange(selectedfirstRow+n,2,1,1).copyTo(destRange);// and make copy below last row 
    } 
    } 

Wie Sie sehen können, habe ich den getRange in (2 + 1,1) geändert; Es geht jedes Mal, wenn ich die Funktion starte, in die nächste Zeile, aber es gibt nur einen Teil der Daten ein, anstatt ständig zum nächsten zu gehen.

EDIT Und ich denke, ich sollte stattdessen fragen, wie bekomme ich die letzte leere Zelle in der ersten Spalte nur statt das gesamte Blatt. Ich weiß, dass der Code derzeit die letzte Zeile für das gesamte Blatt betrachtet, wie bekomme ich es, nur die erste Spalte zu finden?

Antwort

0

Rufen Sie nur die erste Datenspalte ab und suchen Sie dann das erste leere Element im Array.

Erhalten eines 2D-Arrays (Arrays innerhalb eines äußeren Array):

//Get the data from the first column only 
columnOneData = dest.getRange(1,1,dest.getLastRow()).getValues(); 

Das 2D-Array in ein 1D-Array kollabiert werden muss:

columnOneData = columnOneData.toString();//Convert the 2D array to a comma seperated string 
columnOneData = columnOneData.split(",");//Convert the string to a 1D array 

, um ein erstes leeres Element in der neues Array:

firstRowWithEmptyCell = columnOneData.indexOf("") + 1;//Find the first empty element 

zusammen:

function test() { 
    var columnOneData,data,dest,destRange,firstRowWithEmptyCell,n,selectedfirstRow,ss; 

    ss = SpreadsheetApp.getActive(); 

    if(data[n][0]){  
    dest = ss.getSheetByName('Sunday'.replace(/ /g,''));//find the destination sheet 
    //Logger.log(data[n][0].toString().replace(/ /g,'')) 

    columnOneData = dest.getRange(1,1,dest.getLastRow()).getValues();//Get the data from the first column only 
    columnOneData = columnOneData.toString();//Convert the 2D array to a comma seperated string 
    columnOneData = columnOneData.split(",");//Convert the string to a 1D array 

    Logger.log('columnOneData: ' + columnOneData) 
    firstRowWithEmptyCell = columnOneData.indexOf("") + 1;//Find the first empty element 
    Logger.log('firstRowWithEmptyCell: ' + firstRowWithEmptyCell) 

    destRange = dest.getRange(2+1,1);// define range 

    master.getRange(selectedfirstRow+n,2,firstRowWithEmptyCell,1).copyTo(destRange);// and make copy below last row 
    } 
} 
Verwandte Themen