web-dev-qa-db-ja.com

別のシートからカスタム関数に範囲を渡すGoogleシート

基本的にニードルヘイスタックタイプの機能を再現するために構築した次のカスタム関数があります

function ListBy (Range, Range2, needle) {
  var holder = [];
  if(typeof Range != 'object') {
    throw "expected Range for input saw" + typeof Range;
    return false;
  } for(var i = 0; i < Range.length; i++) {
    if(Range[i] == needle) {
          holder.Push(Range2[i]);
    }
  }

  return holder;
}

このスクリプトは、たとえば1つのシートで実行すると完全に機能します。

=ListBy(A1:A5, B1:B5, "needle");

しかし、私が別のシートからデータを渡そうとすると

=ListBy('sheet1'!A1:A10, 'sheet1'!A1:A10, "needle")

範囲エラーの参照を取得します。なぜそうなるのでしょうか?

2
richbai90

シート参照に単一引用符を追加しました。

=ListBy('sheet1'!A1:A10, 'sheet1'!A1:A10, "needle")

それらを残す場合:

=ListBy(Sheet1!A1:A10, Sheet1!A1:A10, "needle")

その後、スクリプトは計画どおりに機能します。

スクリーンショット

Sheet2
enter image description here

シート1
enter image description here

2