首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >google代码中简单的相对单元格引用

google代码中简单的相对单元格引用
EN

Stack Overflow用户
提问于 2020-10-30 13:18:35
回答 1查看 92关注 0票数 0

我使用按钮创建了这个虚拟清单,这些按钮可以将值复制和粘贴到不同类型的报表中。代码可能不是最优的,我不是一个程序员,但我正在尽我最大的努力。现在,我在多个地方都有相同的按钮,我希望它在单元格中复制值,相对于按钮本身的位置,但是我不知道如何在getRange函数中以相对方式引用一个单元格。

以下是代码:

代码语言:javascript
复制
function Go() { 
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var sheet = SpreadsheetApp.getActiveSheet();
  var destSheet = ss.getSheetByName("Fiche");
  var lastRow = destSheet.getLastRow();
  var source = ss.getRange ('(rowid-3)(colid)');
  var checkbox = sheet.getRange (3,3);
   var destColumn = ss.getRange ('B10').getValues ();
   
  source.copyTo(destSheet.getRange(lastRow + 1,1), {contentsOnly: true});

  
    if (checkbox.getValue() == 'vrai' ) {
         
         var source = ss.getRange ('B9');
      
        source.copyTo(destSheet.getRange(lastRow + 1, destColumn), {contentsOnly: true});
        source.copyTo(destSheet.getRange(lastRow + 1, 2), {contentsOnly: true});
    }
    else {
    
    var nombre = ss.getRange ('D5').getValues() ;
    
        destSheet.getRange(lastRow + 1, destColumn).setValue(nombre);
        destSheet.getRange(lastRow + 1, 2).setValue(nombre)
    } 

我希望所有(B10),(B9)等格式单元格被替换为相对的单元格正子。我尝试过(colID)(rowID),但它似乎不起作用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-31 03:40:41

我相信你的目标如下。

  • 单击电子表格上的按钮时,要检索单元格坐标。

修改要点:

  • 不幸的是,在当前阶段,当单击电子表格上的按钮时,没有直接检索单击按钮的信息的方法。
    • 因此,当您想要使用电子表格上的按钮时,如果要检索信息,则需要为每个按钮准备每个脚本。但我认为这可能与你所期望的方向不同。

  • 在这个答案中,为了检索点击按钮的信息,我想提出以下2种模式作为解决办法。在这些模式中,使用事件对象。这样,就可以检索按钮的信息。这是用的。

模式1:

在这种模式中,使用OnSelectionChange的简单触发器将单元格用作按钮。当单元格"B3“像上面的图像一样被用作按钮时,脚本如下所示。

示例脚本:

例如,在这个脚本中,当您想使用"B3“的单元格"Sheet1”作为按钮时,请将"B3“设置为buttonRanges。然后,设置sheet.getSheetName() != "Sheet1"。当您想使用单元格"B3“和"B4”作为按钮时,请将"B3“和"B4”设置为buttonRanges

代码语言:javascript
复制
function onSelectionChange(e) {
  const range = e.range;
  const sheet = range.getSheet();
  const buttonRanges = ["B3"];
  if (sheet.getSheetName() != "Sheet1" || !buttonRanges.includes(range.getA1Notation())) return;
  
  const row = range.getRow();  // This is the row number.
  const column = range.getColumn();  // This is the column number.
}
  • 在本例中,当单击单元格"B3“时,将运行此脚本。rowcolumn是单元格的行号和列号。
  • 因为单元格被用作按钮,所以可以将值放到单元格中。

模式2:

在此模式中,使用OnEdit触发器将复选框用作按钮。当单元格"B3“像上面的图像一样被用作按钮时,脚本如下所示。

示例脚本:

例如,在这个脚本中,当您想使用"B3“的单元格"Sheet1”作为按钮时,请将"B3“设置为buttonRanges。然后,设置sheet.getSheetName() != "Sheet1"。当您想使用单元格"B3“和"B4”作为按钮时,请将"B3“和"B4”设置为buttonRanges

代码语言:javascript
复制
function onEdit(e) {
  const range = e.range;
  const sheet = range.getSheet();
  const buttonRanges = ["B3"];
  if (sheet.getSheetName() != "Sheet1" || !buttonRanges.includes(range.getA1Notation()) || !range.isChecked()) return;
  
  const row = range.getRow();  // This is the row number.
  const column = range.getColumn();  // This is the column number.
}
  • 在这种情况下,当选中复选框时,脚本将运行。如果未选中复选框,则不会运行脚本。
  • 由于复选框用作按钮,因此无法在单元格中看到文本。

参考文献:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64609143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档