回答:
作業を行うために、小さな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;
}
スプレッドシートメニューで、[ツール]> [スクリプトエディター]を選択し、コードを追加します。必ずバグボタンを押してください。
=sheetRange("sheetName",int)
int
備考の下で説明されているオプションを使用します。
サンプルファイルを作成しました:Sheet as Range
この場合、GASを介してスプレッドシートの範囲を決定する方法は2つあります。
int=1
; getDataRange
メソッド経由。これにより、最後の列がデータを含む列である範囲が取得されます。行数についても同じことが言えます。これは通常、最も簡単なルートです。サンプルファイルの2番目のシートを参照してください。int=2
; getSheetValues
メソッド経由。これにより、「WYSIWYG」範囲が取得されます。サンプルファイルの3番目のシートを参照してください。Googleスプレッドシートには、シート範囲全体の範囲構文がありません。
次の式は、Sheet1という名前のシート全体の範囲アドレスを返します。
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
参照として使用するには、INDIRECT内に配置します。次の数式は、Sheet1のすべての値の配列を返します。
= ArrayFormula( 間接( 「シート1!」 &ADDRESS(1,1、、TRUE) & ":" &ADDRESS(ROWS(Sheet1!A:A)、COLUMNS(Sheet1!1:1),, TRUE) 、 TRUE ) )
特定のものはわかりませんが、行/列の数がわからない場合は、いくつかの式を使用できると思います。
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
これSheet
はシート名であり@
、任意の文字列です。選択しているシートが@
1つのセルにある場合、機能しません。シートにそのようなセルが含まれている場合は、別の文字に置き換えることができます。
COUNITF
ここで、列Aの行数をカウント:Aは含有しない@
ことを含むいかなる細胞が存在しないすべての場合であるべき、とINDIRECT
の変換Sheet!1:###
(ここで、###
実際の選択された範囲内に行の数です)。
appscript内で操作している人には既に最良の回答が与えられていますが、Googleスプレッドシート内で適切な作業をしている人がいる場合は、ニーズに合ったアプローチを以下に示します。
"worksheet_name!1:" & ROWS(worksheet_name!A:A)
説明:*基本的に、worksheet_nameの行数と連結された文字列を介して範囲を指定しています!
このアプローチの利点:*「動的」...行を下部に追加すると、それに応じて範囲が調整されます*軽量-これをimportrange / query関数に平手打ちできます
短所:*すべてのケースで試していないので、特定のユースケースでのみ動作する可能性があります*私は、物事を動的/クリーンにするための好みがありますので、ソートのカスタム機能は、appscriptとこの軽量アプローチの良い中間点になります
シート全体を範囲として指定するには、次を使用してください:
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に行または列を追加しても、このソリューションはすべてのセルを選択します。
PS:あなたが私の答えに反対票を投じた場合-理由を説明してください。
行数がわかっていると仮定すると、シート全体に「worksheet_name」という名前を付けることができます。
手順:
これで、関数で「worksheet_name」を使用するたびに、ワークシート全体が参照されます。