Şimdiye kadar bulduğum en iyi geçici çözüm:
worksheet_name!$A$1:$YY
ama ideal olarak basitçe yazabilmek istiyorum, örneğin:
worksheet_name!
Peki, kimse biliyor mu: bir bütün sayfayı aralık olarak belirtmek için bir sözdizimi var mı?
Şimdiye kadar bulduğum en iyi geçici çözüm:
worksheet_name!$A$1:$YY
ama ideal olarak basitçe yazabilmek istiyorum, örneğin:
worksheet_name!
Peki, kimse biliyor mu: bir bütün sayfayı aralık olarak belirtmek için bir sözdizimi var mı?
Yanıtlar:
İşi sizin için yapmak için küçük bir Google Apps Komut Dosyası (GAS) pasajı oluşturdum.
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;
}
Elektronik tablo menüsünde, Araçlar> Komut Dosyası düzenleyici'yi seçin ve kodu ekleyin. Hata düğmesine bastığınızdan emin olun:
=sheetRange("sheetName",int)
int
Seçeneği açıklamalar bölümünde açıklandığı gibi kullanın .
Size bir örnek dosya yarattım: Range olarak Sheet
Bu durumda, bir e-tablodaki bir aralığı GAS aracılığıyla belirlemenin iki yolu vardır:
int=1
; Via getDataRange
yöntemle. Bu, son sütunun içinde veri bulunan sütun olduğu bir aralık alır. Aynı satır sayısı için hesaplar. Bu genellikle en basit yoldur. Örnek dosyadaki ikinci sayfaya bakınız.int=2
; Via getSheetValues
yöntemle. Bu bir "WYSIWYG" aralığı alacaktır. Örnek dosyadaki üçüncü sayfaya bakınız.Google Sayfaların, tüm sayfa aralığı için bir aralık sözdizimi yok.
Aşağıdaki formül Sayfa1 adındaki tüm sayfanın aralık adresini döndürür
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
Referans olarak kullanmak için, INDIRECT'in içine koyun. Aşağıdaki formül Sayfa1'deki tüm değerlerin bir dizisini döndürecektir.
= ARRAYFORMULA ( DOLAYLI( "Sayfa1!" Ve ADRES (1,1,, TRUE) & ":" & ADRESİ (ROWS (Sayfa1 A:! A) KOLONLAR (Sayfa1 1:! 1) ,, DOĞRU) , DOĞRU ) )
Belirli bir tane bilmiyorum, ancak satır / sütun sayısını bilmiyorsanız bazı formüller kullanabileceğinizi düşünüyorum:
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
İşte, Sheet
sayfa adınız ve @
rastgele bir dizedir. Seçtiğiniz sayfa @
bir hücrede ise, çalışmaz. Sayfa böyle bir hücre içeriyorsa, onu başka bir karakterle değiştirebilirsiniz.
COUNITF
Burada A sütununda satır sayısını sayar A içermeyen @
bunu içeren bir hücre olup eğer tüm olması gereken ve INDIRECT
dönüşümler Sheet!1:###
(burada ###
gerçek bir seçilen bir aralığı içine satır sayısı).
Appscript içinde çalışanlar için en iyi cevaplar zaten verildi, ancak dışarıdaki herhangi biri Google E-Tablolar içinde düzgün çalışıyorsa, işte gereksinimlerinize uyan bir yaklaşım:
"worksheet_name!1:" & ROWS(worksheet_name!A:A)
Açıklama : * Esas olarak, çalışma sayfasındaki_adı satır sayısıyla birleştirilmiş bir dize aracılığıyla aralığı belirtiyorsunuz !
Bu yaklaşımın bazı avantajları : * 'Dinamik' ... tabana satır eklerseniz, aralık buna göre ayarlanacak * Hafif - bunu bir importrange / query işlevine tokatlayabilirsiniz.
Dezavantajları : * Her durumda hiç denemedim, bu yüzden sadece belirli kullanım durumlarında işe yarayabilir * Kişisel olarak işleri dinamik / temiz yapma tercihim var, bu yüzden türlerin özel bir işlevi, uygulama ile bu hafif yaklaşım arasında iyi bir orta yol olacaktır.
Bu benim için çalışıyor:
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();
Sınırlı bir komut dosyasında kullanılırsa, sayfa adını "!" İle birleştirin ve ardından seçilen sayfada veri aralığının A1 notasyonunu alın.
Sayfanın tamamını aralık olarak belirtmek için lütfen aşağıdakileri kullanın:
worksheet_name!A1:ZZ
Burada deneyebilirsiniz: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear
veya Java kullanıyorsanız (Sayfa1'deki her şeyi silmek için):
Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();
ya da sadece başka bir sayfada (örneğin: Sayfa2) bir formülde kullanmak istiyorsanız (örneğin: TOPLA) aşağıdaki referansı kullanabilirsiniz:
=SUM(Sheet1!A1:ZZ)
Bu Sayfa1 mevcut tüm hücreleri toplamak ve Sayfa2 bir hücredeki değeri koyacağız ^, buradan örnek bulabilirsiniz https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q-xFvkVr7yKw6WQfHklbohL1NM/edit?usp=sharing . Bu örnekte Sayfa1'de 3 sütun ve 5 satır var, bu nedenle bu formül = SUM (Sayfa1! A1: ZZ) hepsini seçer. Sayfa1'de satır veya sütun ekleyebilirsiniz; bu çözüm hala tüm hücreleri seçecektir.
Not: Aşağıya cevabımı oyla - lütfen nedenini açıkla
Satır sayısını bildiğinizi varsayarak, sayfanın tamamını "çalışma sayfası_adı" olarak adlandırabilirsiniz:
ADIMLAR:
Şimdi bir fonksiyonda "çalışma sayfası_adı" nı her kullandığınızda, çalışma sayfasının tamamına referans olacaktır.