グーグルシートマクロ言語で「アクティブ」セルを移動します

マーティン・ファインスタイン:

私は、そのアドレス変数として定義されている特定の行/列から始まるシートから(例えば4日に)データの列をn番目を引っ張る機能を記述しようとしています。Iは、n番目の位置に「アクティブ」セルを移動し、そのセルをアクティブセルが、マクロアボートを作るために)(オフセット使用しかし.getrange試みました。誰もがこれをやっていますか?データの性質上、私が「アクティブ」セルn列を移動することが重要です。以下のコードの一部:

function PullSelectedData() {

//

var GeneralDataFirstLocation = "D4";   //data starting point cell D4

var ColumnsBetweenSeries = 4;          //want data from each of the 4 columns (e.g.; D4, H4, L4, P4....)

var ReturnedValue = 0;

//

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

var BondCheckSS = spreadsheet.getSheetByName("BONDCHECKSHEET");

//

  for (var i = 0; i <= 3; i++) {

      BondCheckSS.getRange(GeneralDataFirstLocation).Offset(0, ColumnsBetweenSeries * i).activate();

      ReturnValue = getActiveCell().getValue();

  }

}
theman25:

なぜそれがクラッシュしました

  • 最初の問題は、つまりOffsetそれがあるべきよう、機能ではないoffset機能のためのあなたの引数が正しいですので、その問題が解決されるものの、。
  • 次の問題は、つまりgetActiveCellそれはシートに呼び出される必要があり、それ自身の機能ではありません。例えば、MySheet.getActiveCell()
  • クラッシュにあなたのコードを引き起こしていますが、使用することができない第3の問題ColumnsBetweenSeriesの変数を、あなたにループを変更していますfor (var i = 0; i < ColumnsBetweenSeries; i++) {

不要な行動

この時点で、あなたのコードは今罰金、それはもはやクラッシュを実行しますが、問題がまだある、それは非常にあなたがそれをやりたいしません。ここではそれが今のように見えるものです

function PullSelectedData() {
  var GeneralDataFirstLocation = "D4"; //data starting point cell D4
  var ColumnsBetweenSeries = 4;        //want data from each of the 4 columns (D4, H4, L4, P4)
  var ReturnedValue = 0;

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var BondCheckSS = spreadsheet.getSheetByName("BONDCHECKSHEET");

  for (var i = 0; i < ColumnsBetweenSeries; i++) {
      BondCheckSS.getRange(GeneralDataFirstLocation).offset(0, ColumnsBetweenSeries * i).activate();
      ReturnedValue = BondCheckSS.getActiveCell().getValue();
  }
}

主な問題は、あるReturnedValueループのすべての反復を上書きされます。我々は、いずれかの合計にすべての反復を追加する必要があり、または私たちは、その後、さらに処理を行うことが可能なリストにすべてを置くことができるようにします。

我々は総に各セルの値を追加したい場合は、設定した行ReturnedValueのループでは、次のようになります

ReturnedValue += BondCheckSS.getActiveCell().getValue();

我々は、すべてのリストに入れたい場合は、我々はアペンド機能を使用して、リストに各要素を追加することができ、MyList.append(valueToAppend)その場合には、宣言はReturnedValue次のようになります。

var ReturnedValue = [];

ループの内部、設定がReturnedValueリストの最後に、各値を加算し、以下、となります

ReturnedValue.append(BondCheckSS.getActiveCell().getValue());

合計の例
function PullSelectedData() {
  var GeneralDataFirstLocation = "D4"; //data starting point cell D4
  var ColumnsBetweenSeries = 4;        //want data from each of the 4 columns (D4, H4, L4, P4)
  var ReturnedValue = 0;

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var BondCheckSS = spreadsheet.getSheetByName("BONDCHECKSHEET");

  for (var i = 0; i < ColumnsBetweenSeries; i++) {
      BondCheckSS.getRange(GeneralDataFirstLocation).offset(0, ColumnsBetweenSeries * i).activate();
      ReturnedValue += BondCheckSS.getActiveCell().getValue(); // Notice the change from = to +=
  }
}
リストの例
function PullSelectedData() {
  var GeneralDataFirstLocation = "D4"; //data starting point cell D4
  var ColumnsBetweenSeries = 4;        //want data from each of the 4 columns (D4, H4, L4, P4)
  var ReturnedValue = []; // Notice change from 0 to []

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var BondCheckSS = spreadsheet.getSheetByName("BONDCHECKSHEET");

  for (var i = 0; i < ColumnsBetweenSeries; i++) {
      BondCheckSS.getRange(GeneralDataFirstLocation).offset(0, ColumnsBetweenSeries * i).activate();
      ReturnedValue.append( BondCheckSS.getActiveCell().getValue() ); // We now append each value to the list instead of overwriting it each time
  }
} // ReturnedValue is now filled with the values of D4, H4, L4 and P4, Ex: [10, 20, 30, 40]

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=405899&siteId=1