Solusi terbaik yang saya temukan sejauh ini adalah:
worksheet_name!$A$1:$YY
tetapi idealnya saya ingin dapat menulis, misalnya:
worksheet_name!
Jadi, apakah ada yang tahu: apakah ada sintaks untuk menentukan seluruh lembar sebagai rentang?
Solusi terbaik yang saya temukan sejauh ini adalah:
worksheet_name!$A$1:$YY
tetapi idealnya saya ingin dapat menulis, misalnya:
worksheet_name!
Jadi, apakah ada yang tahu: apakah ada sintaks untuk menentukan seluruh lembar sebagai rentang?
Jawaban:
Saya telah membuat cuplikan Google Apps Script (GAS) kecil, untuk melakukan pekerjaan untuk Anda.
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;
}
Di menu spreadsheet, pilih Alat> Editor skrip, dan tambahkan kode. Pastikan untuk menekan tombol bug:
=sheetRange("sheetName",int)
Gunakan int
opsi seperti yang dijelaskan dalam komentar.
Saya telah membuat contoh file untuk Anda: Sheet as Range
Dalam hal ini, ada dua cara untuk menentukan rentang dalam spreadsheet melalui GAS:
int=1
; Melalui getDataRange
metode. Ini akan mengambil rentang, di mana kolom terakhir adalah yang memiliki data di dalamnya. Akun yang sama untuk jumlah baris. Ini biasanya rute yang paling mudah. Lihat lembar kedua dalam file contoh.int=2
; Melalui getSheetValues
metode. Ini akan mengambil rentang "WYSIWYG". Lihat lembar ketiga dalam file contoh.Anda dapat menggunakan A: Z atau A: AB atau A: XX (dengan XX sebagai kolom terakhir dari halaman Anda):
Google Sheets tidak memiliki sintaks rentang untuk seluruh rentang sheet.
Rumus berikut akan mengembalikan alamat rentang seluruh lembar bernama Sheet1
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
Untuk menggunakannya sebagai referensi, letakkan di dalam INDIRECT. Rumus berikut akan mengembalikan array dari semua nilai di Sheet1.
= ArrayFormula ( TIDAK LANGSUNG ( "Sheet1!" & ALAMAT (1,1,, BENAR) & ":" & ALAMAT (BARIS (Sheet1! A: A), COLUMNS (Sheet1! 1: 1) ,, BENAR) , BENAR ) )
Saya tidak tahu yang spesifik, tapi saya pikir Anda bisa menggunakan beberapa rumus jika Anda tidak tahu jumlah baris / kolom:
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
Di sini, Sheet
adalah nama lembar Anda, dan @
merupakan string arbitrer. Jika lembar yang Anda pilih ada @
dalam satu sel, itu tidak akan berfungsi. Anda dapat menggantinya dengan karakter lain jika lembar tersebut berisi sel seperti itu.
Di COUNITF
sini menghitung jumlah baris dalam kolom A: A tidak mengandung @
, yang seharusnya menjadi semua jika tidak ada sel yang mengandungnya, dan INDIRECT
mengubah Sheet!1:###
(di mana ###
jumlah baris) menjadi rentang yang dipilih sebenarnya.
Jawaban terbaik telah diberikan bagi mereka yang beroperasi di dalam skrip apps, tetapi jika ada orang di luar sana yang bekerja dengan baik dalam Google Sheets, maka inilah pendekatan yang sesuai dengan kebutuhan Anda:
"worksheet_name!1:" & ROWS(worksheet_name!A:A)
Penjelasan : * Anda pada dasarnya menentukan rentang melalui string yang digabungkan dengan jumlah baris di worksheet_name!
Beberapa keuntungan dari pendekatan ini : * Ini 'dinamis' ... jika Anda menambahkan baris ke bawah, rentang akan menyesuaikan sesuai * Ringan - Anda dapat menampar ini ke fungsi importrange / query
Kekurangan : * Belum mencobanya dalam semua kasus jadi mungkin hanya bekerja untuk kasus penggunaan khusus * Saya pribadi memiliki preferensi untuk membuat hal-hal menjadi dinamis / bersih sehingga fungsi kustom semacam itu akan menjadi jalan tengah yang baik antara appscript dan pendekatan ringan ini
Ini bekerja untuk saya:
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();
Digunakan dalam skrip terikat, gabungkan sheetname dengan "!" dan kemudian mendapatkan notasi A1 dari rentang data pada lembar yang dipilih
Saya dapat memilih seluruh lembar dengan menyebutkan rentang sebagai lembar tanpa tanda seru.
Saya memiliki tab bernama data. Alih-alih menggunakan data! atau data! A1: ZZ.
Untuk menentukan seluruh sheet sebagai rentang, silakan gunakan:
worksheet_name!A1:ZZ
Anda dapat mencobanya di sini: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear
atau jika Anda menggunakan Java (untuk menghapus semua yang ada di Sheet1):
Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();
atau jika Anda hanya ingin menggunakannya dalam rumus (misalnya: SUM) di lembar lain (misalnya: Sheet2) Anda dapat menggunakan referensi berikut:
=SUM(Sheet1!A1:ZZ)
^ Ini akan meringkas semua sel yang ada pada Sheet1 dan menempatkan nilai dalam sel pada Sheet2, Anda dapat menemukan contoh di sini: https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q-xFvkVr7yKw6WQfHklbohL1NM/edit?usp=sharing . Dalam contoh ini kita memiliki 3 kolom dan 5 baris pada Sheet1, jadi rumus ini = SUM (Sheet1! A1: ZZ) memilih semuanya. Anda bisa menambahkan baris atau kolom pada Sheet1 dan solusi ini masih akan memilih semua sel.
PS: jika Anda memilih jawaban saya - mohon jelaskan mengapa.
Dengan asumsi Anda tahu jumlah baris, Anda dapat memberi nama seluruh sheet sebagai "worksheet_name":
TANGGA:
Sekarang setiap kali Anda menggunakan "worksheet_name" dalam suatu fungsi, itu akan mereferensikan seluruh lembar kerja.