2016-12-14 14 views
0

私は、次の画像のように範囲を持っています)、左の列は1ヶ月の日数(1〜28/29/30/31)を表します。Googleシートで範囲の最後のX非空の行を取得します

最後の空でない値からカウントを開始し、その列の最初の値に達するまで上がるように、範囲の最後の30日間にSUM関数を実行したいと思いますカウントする日数はまだ前の月に戻り、最後の値からカウントを開始します。

例えば、私は範囲の最後の6個の値の和を望んでいた場合、画像には、16、12、8、4、4および15

Iがきを総括なりますhereのような問題に解決策を適用しようとしましたが、これまでのところこれを動作させることはできませんでした。

答えて

0

this question about iterating over a range using Google Scriptの解決策を使用して、私は作業スクリプトを考案できました。

スクリプトは、範囲の最後のセルから特定の数のセルを逆方向​​に繰り返します(前の列に移動する前に列のすべての行を繰り返します)。空のセルをスキップし、遭遇した値の合計を返します新しいセル。

function sumOfLast30() { 
    var range = SpreadsheetApp.getActiveSheet().getRange("A1:B2"); 
    var numRows = range.getNumRows(); // 2 
    var numCols = range.getNumColumns(); // 2 
    var counter = 0; 
    var counterMax = 2; // this determines how many cells get counted 
    var sumValues = 0; 

    for (var i = numCols; i > 0; i--) 
    { 
    if (counter == counterMax) { 
     break; 
    } 
    for (var j = numRows; j > 0; j--) { 
     var selectedValue = range.getCell(j,i).getValue(); 
     if (selectedValue != "") 
     { 
     sumValues = sumValues + selectedValue;   
     counter++; 
     if (counter == counterMax) 
     { 
      break; 
     } 
     } 

    } 
    } 
    var target = SpreadsheetApp.getActiveSheet().getRange("C3"); 
    target.setValue(sumValues); 
} 
関連する問題