web-dev-qa-db-ja.com

Googleスプレッドシートでシート全体を範囲として指定するにはどうすればよいですか?

私がこれまでに見つけた最良の回避策は次のとおりです。

worksheet_name!$A$1:$YY

しかし、理想的には、単に書くことができるようにしたいと思います、例えば:

worksheet_name!

だから、誰もが知っていますか?シート全体を範囲として指定するための構文はありますか?

26
sampablokuper

作業を行うために、小さなGoogle Apps Script(GAS)スニペットを作成しました。

コード

function sheetRange(targetName,int) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var asName = ss.getActiveSheet().getSheetName();
  var tgSheet = ss.getSheetByName(targetName);
  var output;

  if(targetName == asName) {
    output = "Error: target sheet is active sheet !!";
  } else {
    switch(int) {
      case 1: 
        output = tgSheet.getDataRange().getValues();
        break;
      case 2:
        output = tgSheet.getSheetValues(1, 1, tgSheet.getMaxRows(),  
          tgSheet.getMaxColumns());
        break;
      default:
        output = "Choose int to be 1 or 2 !!";
    }
  }
  return output;
}

スプレッドシートメニューで、[ツール]> [スクリプトエディター]を選択し、コードを追加します。必ずバグボタンを押してください。
enter image description here

使用法

=sheetRange("sheetName",int)

備考で説明されているように、intオプションを使用します。

サンプルファイルを作成しました:範囲としてシート

備考

この場合、GASを介してスプレッドシートの範囲を決定する方法は2つあります。

  1. int=1; getDataRangeメソッド経由。これにより、最後の列がデータを含む列である範囲が取得されます。行数についても同じことが言えます。これは通常、最も簡単なルートです。サンプルファイルの2番目のシートを参照してください。
  2. int=2; getSheetValuesメソッド経由。これにより、「WYSIWYG」範囲が取得されます。サンプルファイルの3番目のシートを参照してください。
  3. これらのタイプのカスタム関数のリフレッシュレートはすぐには反映されないため、しばらくお待ちください。データが更新されるまでに数時間かかる場合があります。

参照資料

10

A:ZまたはA:ABまたはA:XXを使用できます(XXはページの最後の列です)。

Screenshot of using this to apply conditional formatting to rows based on a single cell's value

8
Stefan Denk

Googleスプレッドシートには、シート範囲全体の範囲構文がありません。

次の式は、Sheet1という名前のシート全体の範囲アドレスを返します

="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)

参照として使用するには、INDIRECT内に配置します。次の数式は、Sheet1のすべての値の配列を返します。

 = ArrayFormula(
 INDIRECT(
 "Sheet1!" 
&ADDRESS(1,1、、TRUE)
& ":" 
&ADDRESS(ROWS(Sheet1!A:A)、COLUMNS(Sheet1!1:1), TRUE)
、
 TRUE 
)
)
3
Rubén

シート全体を範囲として指定するには、次を使用してください:

worksheet_name!A1:ZZ

ここで試すことができます: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear

またはJavaを使用する場合(Sheet1のすべてをクリアするため):

Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();

または、別のシート(例:Sheet2)の数式(例:SUM)で使用する場合は、次の参照を使用できます。

=SUM(Sheet1!A1:ZZ)

^これにより、Sheet1のすべての既存のセルが合計され、Sheet2のセルに値が入力されます。例は次のとおりです。 https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q -xFvkVr7yKw6WQfHklbohL1NM/edit?usp = sharing 。この例では、Sheet1に3列と5行があるので、この式= SUM(Sheet1!A1:ZZ)はすべてを選択します。 Sheet1に行または列を追加しても、このソリューションはすべてのセルを選択します。

追伸:あなたが私の答えに反対票を投じた場合-理由を説明してください。

1

これは私のために働く:

var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();

バインドされたスクリプトで使用し、シート名と「!」を組み合わせますそして、選択したシートのデータ範囲のA1表記を取得します

1
Metric Rat

Appscript内で操作している人には既に最良の回答が与えられていますが、Googleスプレッドシート内で適切に作業している人がいる場合は、ニーズに合ったアプローチを以下に示します。

"worksheet_name!1:" & ROWS(worksheet_name!A:A)

説明:*基本的に、worksheet_name!の行数と連結された文字列を介して範囲を指定しています。

このアプローチのいくつかの利点:*「動的」です...行を下部に追加すると、それに応じて範囲が調整されます*軽量-これをimportrange/query関数に平手打ちできます

短所:*すべてのケースで試していないので、特定のユースケースでのみ動作する可能性がありますappscriptとこの軽量アプローチの間

1
JTopsalot

特定のものはわかりませんが、行/列の数がわからない場合は、いくつかの式を使用できると思います。

indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))

ここで、Sheetはシート名であり、@は任意の文字列です。選択しているシートの1つのセルに@がある場合、機能しません。シートにそのようなセルが含まれている場合は、別の文字に置き換えることができます。

ここのCOUNITFは、列A:Aに@を含まない行の数をカウントします。これは、セルを含まない場合はすべてである必要があり、INDIRECTSheet!1:###(ここで、###は行数であり、実際の選択範囲になります。

1
Jerry

感嘆符のない範囲をシートとして指定することで、シート全体を選択できました。

Dataという名前のタブがありました。データを使用する代わりに!またはdata!A1:ZZ。

0
ajon