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

17

我试图以一种方式插入超链接到单元格,可以使用“=MATCH()”函数复制。然而,我似乎找不到一种方法在Google表格中链接单元格而不使用GID。

当我右键单击并选择“获取此单元格的链接”时,我得到一个URL,其中末尾有“#gid = 1933185132”。但是这没有结构,我无法像在Excel中那样使用MATCH公式和autofill。

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

但是如果这具有类似于以下内容的单元格引用:

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

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

问题:是否有替代的方法可以像我上面所示的那样链接单元格? 如果没有 我可以使用公式提取“Sheet1!C12”的GID吗?

我已经尽力搜索了Google论坛和堆栈溢出,并且我看到的唯一解决方案似乎使用具有“var sheet”一些内容的脚本,这是我对编码毫无了解的人不能理解的。

这应该是一件非常简单的事情,但是我找不到出路。对此问题的任何见解都将不胜感激。非常感谢。


我能找到的最相关的帮助主题是:https://support.google.com/docs/forum/AAAABuH1jm08WecJzLDc9U?hl=en - UK97
2个回答

26

范围

您可以创建如下链接:

=hyperlink("#gid=1166414895range=A1", "链接到 A1")

每个选项卡都有一个唯一的键,称为gid,在链接中可以找到它:

enter image description here

  • #gid 永远不会改变。选项卡名称可能会更改,公式将会失效,使用 gid 更加安全。
  • A1 是需要使用 matchaddress 函数查找的部分,以获取动态链接。

我没有找到有关此主题的文档,并且找不到使用选项卡名称的方法。

命名范围

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

根据您的浏览器,您的剪贴板现在可能包含完整的网址:

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)
{
  // 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;   
}

4

由于URL直到以下部分都是恒定的,因此您可以先在单元格中定义它。

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

我相信您已经在一列中定义了gid=1933185132部分(假设是A列)。因此,要获取表格的实际URL,只需将这两个部分连接起来。所以在B列中,您需要编写以下公式。

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

Example


谢谢!这展示了如何在包含公式的单元格中插入超链接。Max Makhrov(https://dev59.com/GlYM5IYBdhLWcg3w-T4e#51855900)的答案涉及如何使用公式插入超链接。我想要在已经包含公式结果的单元格中添加超链接(即,一个包含公式的单元格),这个方法可行! - Jonno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接