你有一张几百行长的纸 . 你可以到这里去最后一行并开始你的工作:
1)打开电子表格后,执行Ctrl End; Ctrl leftArrow; Ctrl upArrow这将带您到A列中最后一个被占用的行单元格2)关闭电子表格之前,选择A列中最后一个被占用的单元格并为其指定范围名称endRow然后在打开电子表格时执行编辑>命名范围然后单击endRow这将带您到A列中最后一个被占用的行单元格;
我只是找到了一种以编程方式实现它的方法,它非常简单,但只在oldspreadsheet中使用 . 我只是将这一行放在 onOpen()
触发器内,并且工作正常: activeSheet.getRange(activeSheet.getLastRow(), 1).activate();
. 但它在新的Google表格(一个有几千行的新表格)中不起作用 . 所以,我尝试了Zig的建议,写下这个函数:
function goToLastRow() {
var s = SpreadsheetApp.getActiveSpreadsheet();
var range = s.getRange(s.getLastRow()+1, 1);
range.activate();
}
并手动设置触发器( Script Editor>>Resources>>Triggers from this project>>Ad new trigger
) . 但它仍然没有奏效 .
有什么建议吗?
3 回答
我找到了这种方法来完成你所需要的:
function onOpen() { var sheet = SpreadsheetApp.getActiveSheet(); sheet.hideRows(1,sheet.getLastRow()); }
这会隐藏包含活动工作表中数据的所有行,将光标放在下一个(空)行上,这样您就可以开始输入了 .
完成行后,只需单击隐藏行左侧的小三角形,如果需要,它们将重新出现 .
如果多个人同时输入新行,可能会导致问题 .
★这是在没有任何脚本的情况下实现此目的的另一种很酷的方式,甚至可以与同时用户一起工作(如果另一个人打开具有编辑权限的电子表格,则上面的脚本版本可以隐藏正在输入的行 . )
只有当您的数据具有一组具有固定值(¹)的列时,此第二个无脚本解决方案才有效,例如,只有可能值为'pending','doing'和'done'的列 . 所以找到这样的列,我假设它在本例中的'A'列上 .
➮让我们在"Data"菜单中使用"Filter Views"(仅在新的工作表版本中 . )
此功能允许只有应用它们的用户才能看到的个性化过滤器 . 创建一个名为"Enter new rows mode"的筛选视图,没有为列'A'选中值(在下拉列筛选器菜单时单击筛选:"clear") .
➮现在,当您进入电子表格时,将自动应用过滤后的视图,并且所有包含数据的行都将消失 .
开始输入 . 如果其他用户开始输入新行,那么只有你的行才会消失,直到你刷新浏览器窗口为止 .
➮如果其他用户删除了已过滤的视图,则仅为其删除,而不是为您删除 .
您也可以使用"old"过滤器执行类似操作,但它与针对多个用户的脚本解决方案具有相同的缺点 .
*¹需要一组固定的值,因为电子表格过滤器会自动在视图中添加新项目 . 您无法使用日期列,因为您将始终获得新的未来值 .
要配置过滤器,您需要每个可能的值至少有一行,以便您可以在列过滤器中取消选中它们 .
如果稍后输入新值,则需要编辑视图以取消选中它 .
我只是找到了方法,它真的非常简单,只需将此行放在
onOpen()
触发器内,就可以正常工作:activeSheet.getRange(activeSheet.getLastRow(), 1).activate();
. 但它在新的Google表格中无效 . 所以,我尝试了Zig的建议,写下这个函数:并手动设置触发器(
Script Editor>>Resources>>Triggers from this project>>Ad new trigger
) .有什么建议吗?
将
getActiveSpreadsheet
更改为getActiveSheet
. 电子表格是所有文件,工作表只是一张工作表:P . 但是你会发现你无法在onOpen
触发器中转到电子表格的任何部分 .最好的方法是为此创建一个菜单 .
最后代码如下: