是否有自定义函数或脚本可以返回Google表格中特定工作表的索引?

时间:2019-11-05 12:33:36

标签: google-apps-script google-sheets hyperlink google-sheets-formula array-formulas

我一直在浏览Internet上浩瀚的知识​​,以获取所需的东西,但无济于事。

上下文

在一个Google表格文件中,我有一张主表和其他各种以人的姓氏命名的表。

在主表中,我创建了一个单元格,可以在其中键入任何人的名字。我想查找多个人的工作表,因此我的搜索是动态的。无论如何,我们将此单元格称为SEARCH CELL。

在SEARCH CELL旁边,我有另一个单元格,我想在其中添加一个超链接到另一个带有在SEARCH CELL中输入的姓氏的工作表。我们将此具有超链接的单元格称为HYPERLINK CELL。因此,当我单击该单元格中的超链接时,我想跳到具有与SEARCH CELL中所输入内容匹配的个人姓氏的工作表。

我需要的帮助是与此HYPERLINK CELL。

=hyperlink("#gid=               ")

如何提取每张纸的gid并在上面的代码中的空白处输入?

有人告诉我没有为此提供的Google表格功能,因此需要自定义功能或脚本。在脚本编辑器中输入该代码后,任何人都可以提供可以运行的代码(即无错误运行)吗?

1 个答案:

答案 0 :(得分:3)

脚本:

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!" }}

公式:

=SHEETLIST()

将工作表名称转换为活动超链接:

=ARRAYFORMULA(HYPERLINK("#gid="&
 QUERY(INDEX(SHEETLIST();;2); "offset 1"); 
 QUERY(INDEX(SHEETLIST();;1); "offset 1")))

,如果您想将其绑定到手动输入,则可以使用VLOOKUP

=ARRAYFORMULA(IFNA(VLOOKUP(A1, HYPERLINK("#gid="&
 QUERY(INDEX(SHEETLIST();;2); "offset 1"); 
 QUERY(INDEX(SHEETLIST();;1); "offset 1")); 1; 0)))

其中A1是您的“搜索单元格”