范围
您可以创建如下链接:
=hyperlink("#gid=1166414895range=A1", "链接到 A1")
每个选项卡都有一个唯一的键,称为gid,在链接中可以找到它:
#gid
永远不会改变。选项卡名称可能会更改,公式将会失效,使用 gid
更加安全。
A1
是需要使用 match
、address
函数查找的部分,以获取动态链接。
我没有找到有关此主题的文档,并且找不到使用选项卡名称的方法。
命名范围
- 在文档中定义一个命名范围。
- 在单元格中选择“插入链接”。
- 在链接对话框中,选择“此电子表格中的命名范围”。
- 选择步骤1中创建的范围的名称。
- 单击“应用”按钮。
- 将鼠标指针移动到新链接上。将出现包含类似“#rangeid=nnnnnnnnnn”的链接的弹出窗口。
- 右键单击弹出窗口中的链接,以打开浏览器的上下文菜单。
- 选择“复制链接地址”或“复制”功能。
根据您的浏览器,您的剪贴板现在可能包含完整的网址:
https://docs.google.com/spreadsheets/d/xxxxxxxxxx/edit#rangeid=nnnnnnnnnn
或者剪贴板仅包含范围ID片段:
#rangeid=nnnnnnnnnn
如果只有片段,则需要将其附加到文档的URL中,以创建范围的完整URL。
可能还有其他更简单的方法可以获取范围ID,但我尚未注意到。请参见相关问题,类似问题的答案。
PS:在复制了命名范围的URL之后,您可以删除按照以上步骤创建的链接。
自定义函数
在公式中使用。
简单范围:
=HYPERLINK(getLinkByRange("Sheet1","A1"), "链接到 A1")
命名范围:
=HYPERLINK(getLinkByNamedRange("NamedRange"), "链接到命名范围")
将以下代码插入到脚本编辑器中(工具 > 脚本编辑器):
function getLinkByRange(sheetName, rangeA1, fileId)
{
var file = getDafaultFile_(fileId);
var sheet = file.getSheetByName(sheetName);
return getCombinedLink_(rangeA1, sheet.getSheetId(), fileId, file)
}
function getLinkByNamedRange(name, fileId)
{
var file = getDafaultFile_(fileId);
var range = file.getRangeByName(name);
var sheet = range.getSheet();
return getCombinedLink_(range.getA1Notation(), sheet.getSheetId(), fileId, file)
}
function getDafaultFile_(fileId)
{
var file;
if (fileId) { file = SpreadsheetApp.openById(fileId); }
else file = SpreadsheetApp.getActive();
return file;
}
function getCombinedLink_(rangeA1, sheetId, fileId, file)
{
var externalPart = '';
if (fileId) { externalPart = file.getUrl(); }
return externalPart + '#gid=' + sheetId + 'range=' + rangeA1;
}