Answers:
我已经创建了一个小的Google Apps脚本(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
备注中说明的选项。
我为您创建了一个示例文件:工作表为范围
在这种情况下,有两种方法可以通过GAS确定电子表格中的范围:
int=1
; 通过该getDataRange
方法。这将检索一个范围,其中最后一列是其中包含数据的列。相同占行数。这通常是最直接的途径。请参阅示例文件中的第二页。int=2
; 通过该getSheetValues
方法。这将检索“所见即所得”范围。请参阅示例文件中的第三页。Google表格没有整个表格范围的范围语法。
下面的公式将返回名为Sheet1的整个工作表的范围地址
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
为了将其用作参考,请将其放在INDIRECT内。下面的公式将返回Sheet1中所有值的数组。
= ArrayFormula( 间接( “ Sheet1!” &ADDRESS(1,1,,TRUE) &“:” &ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),, TRUE) , 真正 ) )
我不知道具体的公式,但是如果您不知道行数/列数,可以使用一些公式:
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
在这里,Sheet
是您的工作表名称,并且@
是任意字符串。如果您选择的工作表@
在一个单元格中,它将无法正常工作。如果工作表中包含这样的单元格,则可以用其他字符替换它。
在COUNITF
这里计算的行的A列中的数量:一个不含有@
,这应该是所有如果有包含它没有细胞,和INDIRECT
变换Sheet!1:###
(其中,###
是行数)为实际的选择的范围。
已经为使用appscript进行操作的人员提供了最佳答案,但是如果在那里有人在使用Google Sheets进行适当的操作,那么以下方法可能会满足您的需求:
"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:如果您不赞成我的回答,请解释原因。