#1 楼
当您切换到Google Spreadsheets中的其他工作表时,请注意浏览器地址栏中的URL。在URL的末尾,您应该看到类似以下内容的内容:#gid=0
切换工作表时,此数字会更改,并指定要显示的工作表。复制整个URL并使用以下公式创建超链接:
=hyperlink("https://docs.google.com/spreadsheet/ccc?key=0AsaQpHJE_LShcDJ0dWNudHFZWVJqS1dvb3FLWkVrS0E#gid=0", "LINK TEXT")
使用脚本
我想自从我第一次写这个答案以来,我就一直在讨论这个问题,然后我想到了一个涉及脚本的解决方案。
打开电子表格后,单击“工具”菜单,然后单击“脚本编辑器...”。所有这些代码都输入到编辑器中:
function onOpen(event) {
var ss = event.source;
var menuEntries = [];
menuEntries.push({name: "Go to sheet...", functionName: "showGoToSheet"});
ss.addMenu("Tasks", menuEntries);
}
function showGoToSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var allsheets = ss.getSheets();
var app = UiApp.createApplication();
app.setTitle("Go to sheet...").setWidth(800).setHeight(600);
var table = app.createFlexTable();
table.setCellPadding(5).setCellSpacing(0);
var goToSheetClick = app.createServerHandler('handleGoToSheetClick');
var widgets = [];
for (var i = 0; i < allsheets.length; i++) {
var sheet_name = allsheets[i].getName();
widgets[i] = app.createHTML(sheet_name).setId(sheet_name).addClickHandler(goToSheetClick);
table.setWidget(i, 1, widgets[i])
}
var panel = app.createSimplePanel();
panel.add(table);
app.add(panel);
ss.show(app);
}
function handleGoToSheetClick(e) {
var sheet_name = e.parameter.source;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheet_name);
sheet.activate();
var app = UiApp.getActiveApplication();
app.close();
return app;
}
保存脚本,然后刷新电子表格。一两秒钟后,“帮助”后将出现一个新菜单“任务”。此菜单中只有一项:转到工作表...
此菜单项将打开一个面板,其中列出了当前所有工作表的名称电子表格。它看起来不像,但是如果您单击工作表名称之一,则该工作表将位于最前面。
作为对另一个问题的回答,此脚本得到了改进包括滚动视图和按钮。
评论
是的,我认为这是目前唯一可行的解决方案。不幸的是,我还没有找到一种在名称“ Sheet5”和gid = 7之间进行转换的方法。
–西蒙东
2012年5月23日下午3:50
我不确定你到底是什么意思。工作表从左开始按从0开始的顺序编号。因此,如果名为“ Sheet5”的工作表在gid = 7,则它应该是从左起的第八个工作表。
–威廉·杰克逊
2012年5月23日15:23
我的意思是,您无法以编程方式仅通过手动方式找到Sheet5是什么。如果位置发生变化,则gid发生变化,您将无法再可靠地链接到该位置。
–西蒙东
2012年5月24日3:23
如果您想出一种通过名称链接的方法,请发布!
–乔·卡萨登特(Joe Casadonte)
2012年7月7日在16:36
更好的选择在这里可用:stackoverflow.com/a/18518779/1814867
– Mandar Pandit
17-4-30在11:59
#2 楼
根据我的经验,执行此操作的最佳方法是将功能绑定到按钮/图像。唯一的缺点是您不能将参数和分配给按钮的脚本一起传递。因此,您需要针对每个导航创建一个函数,但可以在单个脚本文件中调用它们。步骤:
创建图像(插入- >图片)并根据您的喜好对其进行样式设置
使用以下命令创建自定义函数:
function showSheetByName(Name) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(Name);
SpreadsheetApp.setActiveSheet(sheet);
}
,然后创建特定于您按钮的函数
function showSheet5() {
showSheetByName("Sheet5");
}
最后将此功能分配给按钮
Assign Script...
showSheet5
现在您应该可以单击按钮,然后导航到“ Sheet5”。也可以将其修改为也可以移动到图纸的特定区域。
评论
无需添加特定于每个按钮的功能,您可以将其硬编码为跳转到“当前单元格”中命名的工作表,例如更改第二行以读取var sheet = ss.getSheetByName(ss.getActiveCell()。getValue()); -然后,您可以将“按钮”放置在屏幕上的固定位置,并将其标记为“在当前单元格中跳至工作表”,并将其分配为“ showSheetByName”(现在不需要参数)。若要使用,只需突出显示带有工作表名称的单元格(例如Sheet5),然后单击按钮。这有点间接,但是可以正常工作,因为单击按钮不会将焦点从突出显示的单元格中移开。
– Motti Strom
2013年6月6日12:32
#3 楼
现在,无需任何脚本即可轻松实现此功能:单击要链接的单元格,然后单击
cmd + k
(或转到Insert > Insert link
)现在应该弹出一个窗口出现在您的单元格中,在
Link
字段中带有一个选项,可让您选择Sheets in this spreadsheet
。单击该按钮,然后(如下图所示),您应该能够从已经创建的所有工作表中进行选择。确保您已经创建了要链接的工作表,否则它不会作为选项出现。您可以输入任何文本在下拉菜单的
Text
字段中,将其作为链接的别名。
评论
现在,Google电子表格中有一个这样的选项-您可以选择插入->链接,然后在此电子表格中选择表格。遗憾的是,我不具备将其发布为答案所需的声誉。