【问题标题】:Google Script adding cell name on a formula谷歌脚本在公式上添加单元格名称
【发布时间】:2021-07-20 15:41:36
【问题描述】:

我是谷歌脚本的新手,通过搜索这个网站学到了很多东西,但现在我想弄清楚如何将单元格名称(A1、A2、.....)添加到使用谷歌脚本的公式。

请在此处查看我的示例:https://docs.google.com/spreadsheets/d/1mttb7dD4RvfXmNt3xGe7cAR6SAXB7Tom97vNOK-YQB0/edit?usp=sharing

在 C 列您会看到“=A16+1”,但它应该类似于“=A2+1”,因为我在第 2 行

这是谷歌脚本代码

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("test1");
  var range = sheet.getActiveCell();
  var valueToWatch = "y";

  var searchRange = sheet.getRange("A1:A" + sheet.getLastRow()); // Modified
  // get the values in an array
  var values = searchRange.getValues();
  // examine the values in the array
  var i = [];
  for (var y = 0; y < values.length; y++) {
    if (values[y][0] == valueToWatch) {
      i.push("C" + (y + 1)); // Modified
    }
  }

  //sheet.getRangeList(i).setValue("this is a test");

  var data = [];
  for (var x = 0; x < values.length; x++) {
    data = ['=A' + (x + 1).toString() + '&"1"'];
  }

  sheet.getRangeList(i).setFormula(data);

}

【问题讨论】:

  • 小建议:缩进代码会更容易阅读。

标签: google-apps-script google-sheets


【解决方案1】:

在查看您的代码时,如果 A 列中的同一行具有 y,您似乎想要将公式添加到列 C

试试下面的代码:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("test1");
  var valueToWatch = "y";
  var searchRange = sheet.getRange("A1:A" + sheet.getLastRow()); // Modified
  var values = searchRange.getValues();
  var i = [];
  for (var y = 0; y < values.length; y++) {
    if(values[y][0] == valueToWatch){
      i.push("C" + (y + 1));
    }else{
      i.push('');
    }
  }

  var data = [];
  for (var x=0; x < i.length; x++){
    if(i[x] != ''){
      var rowNum = i[x].replace( /^\D+/g, '');
      data.push(['=A' + rowNum + '&"1"' ])
    }else{
      data.push(['']);
    }
  }
  sheet.getRange("C1:C" + sheet.getLastRow()).setFormulas(data);
}

示例:

参考:

【讨论】:

  • 嗨@Nikko,这非常有用,我现在不能投票,但一旦声誉达到15,我会感谢这个。而且我一直在尝试从具有不同列的同一行复制单元格值,我可以检查任何参考吗?
  • @reks - 我上面的回答能解决你的问题吗?如果是,请单击左侧的接受按钮(复选图标)。通过这样做,社区中可能与您有同样担忧的其他人将知道他们的问题可以得到解决。如果您无法使用接受按钮,请随时告诉我。 how to accept answer
  • @reks - 我建议您创建另一篇关于“从具有不同列的同一行复制单元格值”的帖子,其中包含详细信息,就像您上面的帖子一样。这将帮助社区形象化您的问题,并帮助您获得更好的答案。
  • @Niiko,非常感谢您的帮助,非常感谢
猜你喜欢
  • 1970-01-01
  • 2021-07-13
  • 2018-11-30
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多