如何使用公式将超链接插入Google表格中的单元格?

问题描述 投票:1回答:2

我试图以一种可以使用'= MATCH()“函数复制的方式向单元格插入超链接。但是我似乎无法找到一种方法来链接Google表格中的单元格而不使用GID。

当我右键单击并“获取此单元格的链接”时,我最终得到一个带有“#gid = 1933185132”的URL。然而,这没有结构,我不能使用它与MATCH公式,并像我通常在Excel中那样自动填充。

https://docs.google.com/spreadsheets/d/sheetkey/edit#gid=1933185132

但是,如果这是一个像这样的单元格引用

https://docs.google.com/spreadsheets/d/sheetkey/edit#Sheet1!C12

我可以轻松地为MATCH函数重新创建它。

问题:如上所示,是否有另一种链接单元格的方法?如果不能我可以使用公式来提取“Sheet1!C12”的GID吗?

我已经搜索了谷歌论坛和堆栈溢出到我的最大范围,我看到的唯一的解决方案似乎使用脚本与“var sheet”的东西,我不能理解有0编码的知识。

这应该是一件非常简单的事情,但我无法找到出路。对此问题的任何见解表示赞赏。非常感谢你。

google-sheets formulas
2个回答
3
投票

Range

您可以创建如下链接:

=hyperlink("#gid=1166414895range=A1", "link to A1")

每个标签都有一个唯一的密钥,称为gid,您可以在链接中找到它:

enter image description here

  • #gid永远不会改变。选项卡名称可能会更改,公式将中断,使用gid更安全。
  • A1是您需要使用matchaddress函数来获取动态链接的一部分。

我找不到关于此主题的文档,也找不到使用选项卡名称的方法。

Named Range

  1. 在文档中定义命名范围。
  2. 在单元格中选择“插入链接”。
  3. 在链接对话框中,选择“此电子表格中的命名范围”。
  4. 选择在步骤1中创建的范围的名称。
  5. 单击“应用”按钮。
  6. 将鼠标指针移到新链接上。将出现包含“#rangeid = nnnnnnnnnn”之类链接的弹出窗口。
  7. 右键单击弹出窗口中的链接以打开浏览器的上下文菜单。
  8. 选择“复制链接地址”或仅“复制”功能。

根据您的浏览器,剪贴板现在将包含完整的URL:

https://docs.google.com/spreadsheets/d/xxxxxxxxxx/edit#rangeid=nnnnnnnnnn

或者剪贴板只有范围ID片段:

#rangeid=nnnnnnnnnn

如果您只有片段,则需要将其附加到文档的URL以创建范围的完整URL。

可能还有其他更简单的方法来获取范围ID,但我还没有注意到。见related questionanswer to a similar question

PS:复制指定范围的URL后,您可以按照上述步骤删除创建的链接。

Custom functions

在公式中使用。

简单范围:

=HYPERLINK(getLinkByRange("Sheet1","A1"), "Link to A1")

命名范围:

=HYPERLINK(getLinkByNamedRange("NamedRange"), "Link to named range")

代码,插入脚本编辑器(工具>脚本编辑器):

function getLinkByRange(sheetName, rangeA1, fileId)
{
  // file + sheet
  var file = getDafaultFile_(fileId);  
  var sheet = file.getSheetByName(sheetName);

  return getCombinedLink_(rangeA1, sheet.getSheetId(), fileId, file)    
}

function getLinkByNamedRange(name, fileId)
{
  // file + range + sheet
  var file = getDafaultFile_(fileId);    
  var range = file.getRangeByName(name);  
  var sheet = range.getSheet();

  return getCombinedLink_(range.getA1Notation(), sheet.getSheetId(), fileId, file)

}


function getDafaultFile_(fileId)
{
  // get file
  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;   
}

0
投票

由于以下部分的URL将是常量,因此您可以先在单元格中定义它。

https://docs.google.com/spreadsheets/d/sheetkey/edit#

我相信你已经在一个专栏中定义了gid=1933185132部分(让我们说它的专栏A)。因此,要获得工作表的实际URL,您只需连接这两个。因此,在B列中,您必须编写以下公式。

=HYPERLINK(CONCAT(A1,A2),A2)

Example

© www.soinside.com 2019 - 2024. All rights reserved.