我试图以一种可以使用'=MATCH()“函数复制的方式插入到单元格的超链接,但是,我似乎无法找到一种不使用GID就可以链接Google中的单元格的方法。
当我右键单击并“获取到此单元格的链接”时,我最终得到一个带有"#gid=1933185132“的URL。但是,这没有结构,我不能将它与匹配公式一起使用,并像在Excel中通常所做的那样自动填充它。
https://docs.google.com/spreadsheets/d/sheetkey/edit#gid=1933185132
但是,如果这是一个单元格引用,则如下所示
https://docs.google.com/spreadsheets/d/sheetkey/edit#Sheet1!C12
我可以很容易地为匹配函数重新创建它。
问:是否有一种像我上面所示的连接单元格的替代方法?如果不能,我可以使用公式提取"Sheet1!C12“的GID吗?
我已经搜索了google论坛和堆栈溢出,尽了最大的努力,我看到的唯一解决方案似乎使用了带有"var sheet“的脚本--这是我无法理解的--拥有0的编码知识。
这应该是一件非常简单的事情,但我无法找到出路。对这一问题的任何见解都是值得赞赏的。非常感谢。
发布于 2018-08-15 09:08:13
范围
您可以创建如下链接:
=hyperlink("#gid=1166414895range=A1", "link to A1")
每个选项卡都有一个名为gid的唯一键,您可以在链接中找到它:
#gid
永远不会改变。选项卡名可能会更改,公式将中断,使用gid
更安全。A1
是您需要找到的一部分,使用match
、address
函数获取动态链接。我找不到关于这个主题的文档,也找不到使用标签名的方法。
命名范围
根据浏览器的不同,剪贴板现在将包含完整的URL:
https://docs.google.com/spreadsheets/d/xxxxxxxxxx/edit#rangeid=nnnnnnnnnn
或者剪贴板将只有区域ID片段:
#rangeid=nnnnnnnnnn
如果只有片段,则需要将其附加到文档的URL中,以便为范围创建完整的URL。
也许还有其他更简单的方法来获得范围ID,但我还没有注意到其中一个。见related question,answer to a similar question。
PS:在您复制了命名范围的URL之后,您可以按照上面的步骤删除创建的链接。
自定义函数
在配方中使用。
简单范围:
=HYPERLINK(getLinkByRange("Sheet1","A1"), "Link to A1")
命名范围:
=HYPERLINK(getLinkByNamedRange("NamedRange"), "Link to named range")
将代码插入脚本编辑器(Tools > script Editor):
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;
}
发布于 2019-10-29 00:03:02
GID不要求是以https开头的有效URL .
你所需要的就是超链接,就像:
=HYPERLINK("#gid=1933185132&range=C12", "sheet name")
如果你想超链接所有的床单,你可以这样做:
function SHEETLIST() {
try {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
var out = new Array( sheets.length+1 ) ;
out[0] = [ "NAME" , "#GID" ];
for (var i = 1 ; i < sheets.length+1 ; i++ ) out[i] =
[sheets[i-1].getName() , sheets[i-1].getSheetId() ];
return out
}
catch( err ) {
return "#ERROR!"
}
}
=ARRAYFORMULA(HYPERLINK("#gid="&
QUERY(INDEX(SHEETLIST();;2); "offset 1");
QUERY(INDEX(SHEETLIST();;1); "offset 1")))
发布于 2019-03-18 07:04:28
由于以下部分的URL将是一个常量,所以可以首先在单元格中定义它。
https://docs.google.com/spreadsheets/d/sheetkey/edit#
我相信您已经在一列中定义了gid=1933185132
部分(假设它的列A)。因此,要获得工作表的实际URL,您只需将这两个链接连接起来。因此,在B列中,您必须编写以下公式。
=HYPERLINK(CONCAT(A1,A2),A2)
https://stackoverflow.com/questions/48126574
复制相似问题