javascript 我可以在不使用工作表标签名称的情况下,在活动工作表标签之前引用工作表标签吗?

hmtdttj4  于 2023-10-14  发布在  Java
关注(0)|答案(2)|浏览(80)

是否可以在工作表选项卡之前引用工作表选项卡中的单元格?
例如,我的活动工作表是“工作表2”,但我想引用“工作表1”中的“A1”。但是我不想用这个名字,因为名字可能会改变,位置也可能会改变。例如,我把“表3”安排在“表1”或“表2”的前面。但不变的是,我总是想引用活动工作表前面的工作表。
我试过使用指数,但我得到的唯一回报是数字。
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getIndex(); var num = SpreadsheetApp.getActiveSpreadsheet().getSheets()[sheet];(不工作)

var sh = ss.getSheetByName(sheet);(不工作)
我知道我可以编写代码来引用另一个工作表中的单元格,但我将创建新的工作表,我希望它们总是引用工作表标签中的单元格。我不想在创建新工作表后手动更改代码。
更新:谢谢!下面是我更新的代码:

function rollOver() {
  // Active sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // getting the index of the active sheet
  var index = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getIndex(); 

  //getting all the sheets in the active spreadsheet
  var referenceSheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  // Index of active sheet minus 2 to get the sheet before active sheet
  var referenceSheet = referenceSheets[index - 2];

  // Get reference sheet name
  var sheetName = referenceSheet.getSheetName();

  //Get reference sheet cells
  var rollover = referenceSheet.getRange("AW61").getA1Notation();
  var savings = referenceSheet.getRange("BE28").getA1Notation();

  // Insert formulas into new cells
  ss.getRange("AQ59").setFormula(sheetName + "!" + rollover);
  ss.getRange("BE15").setFormula(sheetName + "!" + savings);
  
  //Check variable output
  Logger.log(sheetName);
  Logger.log(rollover);
  Logger.log(savings);
}

这段代码真的很有帮助。对于我的例子,我有一个按钮,当它被点击它创建一个新的电子表格。但是,我希望总是引用它之前的工作表中的值。一开始我只是在引用的工作表中插入单元格的值,但是现在插入a公式到=那个单元格,它会不断更新值。这是巨大的,因为我会继续做新的床单。因此,即使我改变了一个表的值5张之前,它会更新所有的人。

wljmcqd8

wljmcqd81#

您可以尝试此示例代码,以始终在active sheet之前获取reference sheet

示例代码:

function myFunction() {
  // getting the index of the active sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getIndex(); 
  //getting all the sheets in the active spreadsheet
  var referenceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets() 
  // Index of active sheet minus 2 to get the sheet before active sheet
  var referenceData = referenceSheet[ss - 2].getRange("A1").getValue() 
  console.log(referenceData)

}

输出:

参考:

getSheets

wydwbb8l

wydwbb8l2#

在活动工作表之前获取工作表

function getSheetBeforeActiveSheet() {
  const ss = SpreadsheetApp.getActive();
  const ns = ss.getSheets().map(sh => sh.getName());
  const ashn = ss.getActiveSheet().getName();
  ss.getSheets()[ns.indexOf(ashn)-1].activate();
}

相关问题