Найкращий спосіб, який я знайшов поки що:
worksheet_name!$A$1:$YY
але в ідеалі я хотів би вміти просто писати, наприклад:
worksheet_name!
Отже, хтось знає: чи є синтаксис для визначення цілого аркуша як діапазону?
Найкращий спосіб, який я знайшов поки що:
worksheet_name!$A$1:$YY
але в ідеалі я хотів би вміти просто писати, наприклад:
worksheet_name!
Отже, хтось знає: чи є синтаксис для визначення цілого аркуша як діапазону?
Відповіді:
Я створив невеликий фрагмент 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:
int=1
; Через getDataRange
метод. Це дозволить отримати діапазон, в якому останній стовпець є тим, у якому є дані. Те саме припадає на кількість рядків. Зазвичай це найпростіший маршрут. Див. Другий аркуш у прикладі файлу.int=2
; Через getSheetValues
метод. Це дозволить отримати діапазон "WYSIWYG". Див. Третій аркуш у прикладі файлу.Google Таблиці не мають синтаксису діапазону для всього діапазону аркушів.
Наступна формула поверне діапазонну адресу всього аркуша під назвою Sheet1
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
Щоб використовувати його як посилання, покладіть його всередину INDIRECT. Наступна формула поверне масив усіх значень у Sheet1.
= ArrayFormula ( НЕПРЯМО ( "Лист1!" & АДРЕСА (1,1,, ІСТИНА) & ":" & АДРЕСА (РЯДКИ (Sheet1! A: A), КОЛОНІ (Sheet1! 1: 1), ІСТИНА) , ІСТИНА ) )
Я не знаю конкретного, але я думаю, що ви можете використовувати деякі формули, якщо ви не знаєте кількість рядків / стовпців:
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
Ось Sheet
ваше ім’я аркуша, і @
це довільна рядок. Якщо цей аркуш, який ви вибираєте, має @
одну клітинку, він не працюватиме. Ви можете замінити його іншим символом, якщо коли-небудь аркуш містить таку комірку.
COUNITF
Тут підраховує кількість рядків у колонці А: А , який не містить @
, який повинен бути все , якщо немає клітини , що містять його, і INDIRECT
перетворення Sheet!1:###
(де ###
це число рядків) в фактичний обраний діапазон.
Найкращі відповіді вже були надані тим, хто працює в додатку, але якщо хтось там працює належним чином у Google Таблицях, то ось такий підхід може відповідати вашим потребам:
"worksheet_name!1:" & ROWS(worksheet_name!A:A)
Пояснення : * По суті ви вказуєте діапазон за допомогою рядка, об'єднаного з кількістю рядків у імені робочого листа!
Деякі переваги такого підходу : * Це "динамічно" ... якщо ви додасте рядки в нижній частині, діапазон буде відповідним чином коригуватися * Легкий - ви можете ляпнути це у функції importrange / query.
Недоліки : * Я не пробував цього в усіх випадках, тому це може працювати лише для конкретних випадків використання. * Я особисто маю перевагу робити речі динамічними / чистими, тому користувацька функція сортів буде хорошим посередництвом між програмою і цим легким підходом
Це працює для мене:
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();
Використовується у прив’язаному сценарії, комбінуйте назву аркуша із знаком "!" а потім отримати позначення А1 діапазону даних на обраному аркуші
Я зміг вибрати весь аркуш, назвавши діапазон як аркуш без знаків оклику.
У мене була вкладка з назвою даних. Замість використання даних! або дані! A1: ZZ.
Щоб вказати весь аркуш як діапазон, будь ласка, використовуйте:
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();
або якщо ви хочете просто використовувати його у формулі (наприклад: SUM) на іншому аркуші (наприклад: Sheet2), ви можете використовувати наступне посилання:
=SUM(Sheet1!A1:ZZ)
^ Це підсумувати всі існуючі осередки на Лист1 і помістити значення в осередку на Аркуш2, ви можете знайти приклад тут: https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q-xFvkVr7yKw6WQfHklbohL1NM/edit?usp=sharing . У цьому прикладі ми маємо 3 стовпчики та 5 рядків на Sheet1, тому ця формула = SUM (Sheet1! A1: ZZ) вибирає їх усі. Ви можете додати рядки або стовпці до Sheet1, і це рішення все одно вибере всі комірки.
PS: якщо ви проголосуєте за мою відповідь - поясніть, будь ласка, чому.
Припускаючи, що ви знаєте кількість рядків, ви можете назвати весь аркуш як "ім'я робочого листа":
КРОКИ:
Тепер при кожному використанні функції "ім'я робочого листа" у функції він посилається на весь робочий аркуш.