当前位置: 首页 > 知识库问答 >
问题:

如何使用Google脚本将联接和筛选公式应用于Google工作表中的整个列?

养鸿运
2023-03-14

我对谷歌脚本非常陌生,因此非常感谢任何帮助。

我被困在如何将我的公式应用到Google表单中的整个列上,该公式使用联接和筛选。

我的公式是:=JOIN(“,”,FILTER(N:N,B:B=R2))

我需要将这个公式添加到列S中的每个单元格(除了标题单元格),但是每行都有“R2”的变化,所以在第3行是“R3”,第4行是“R4”等。

这个公式在谷歌工作表本身,但因为我有一个新的更新版本每天自动更换的工作表,我需要设置一个谷歌脚本运行在一定的时间,我可以通过触发器设置添加这个公式到我指定的列。

我尝试了一些我在网上找到的脚本,但没有一个成功。

共有2个答案

巢宏富
2023-03-14

可以使用setFormulas(公式)将一组公式设置为范围内的所有单元格<在本例中,代码>公式是指二维数组,外部数组表示不同的行,每个内部数组表示每个特定行中的不同列。您应该使用不同的公式构建这个2D数组,同时考虑到R中的行索引对于每个公式都应该不同。

你可以这样做:

function settingFormulas() {
  var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet1");
  var firstRow = 2;
  var column = 19; // Column S index
  var range = sheet.getRange(firstRow, column, sheet.getLastRow() - firstRow + 1);
  var formulas = range.getValues().map((row, index) => {
    let rowIndex = index + firstRow;
    return ["=JOIN(\", \",FILTER(N:N,B:B=R" + rowIndex + "))"];
  });
  range.setFormulas(formulas);
}
  • 在这个函数中,方法映射中可选的index参数用于跟踪行索引,并将其添加到公式中。
  • 在此函数中,工作表名称用于标识函数必须将公式设置为哪个工作表(在本例中,名称为Sheet1)。在这里,我假设一旦工作表被新的工作表替换,工作表名称保持不变。

拥有此函数后,您只需安装时间驱动触发器即可每天执行此函数,可以按照以下步骤手动执行,也可以通过编程方式运行此函数一次:

function creatingTrigger() {
  ScriptApp.newTrigger("settingFormulas")
    .timeBased()
    .everyDays(1)
    .create();
}
  • 设置公式(公式)
  • getRange(行、列、numRows)
  • 可安装触发器
燕涵容
2023-03-14

由于您的公式始终采用以下格式:

=JOIN(",", FILTER(N: N, B: B=R

如果要将其应用于大量行,可以使用间接和行来实现动态公式。这个答案有一个很好的例子说明如何使用它。

使用公式,您不会因为应用程序脚本而面临时间限制的风险

您的最终公式应如下所示:

=JOIN(", ",FILTER($N:$N,B:B=INDIRECT(CONCAT("R",ROW($R2)))))

此外,您还可以像任何其他公式一样将其向下拖动到其他单元格!

 类似资料:
  • 我使用脚本将数据从MySQL数据库导入到工作表中。在导入过程中,其他具有重公式的工作表(vlookup、sumifs、filter)会不断重新计算,因此需要花费很长时间。我想在MySQL数据完全导入后,通过脚本插入公式。 为了简化此过程,我想将工作表上的所有公式(这是一个很长的工作表)提取到一个文件中,并将提取的数据格式化为以下方式:示例:从工作表“摘要”中提取数据: 循环检查工作表中的每个单元格

  • 我试图应用一个脚本,将在整个谷歌工作表电子表格上运行,而不仅仅是一个标签。我有多个选项卡都具有相同的格式;我希望脚本查看每个选项卡在F列中的数据验证,如果为任何行选择了“不适用”,则将整行的内容移动到一个名为“不适用项”的选项卡" 我没有编写脚本的经验,所以我从一个论坛主题中复制了我目前使用的脚本。它成功地将行移动到正确的选项卡,但仅限于指定的活动工作表。我希望脚本查看整个电子表格,并移动标记为“

  • 我希望有一个函数,它从一个单元格中获取一个值,并在另一个工作表中的过滤器中使用它来仅过滤该值。我该怎么做? 提前谢谢你。

  • 有人能帮我把脚本布局转换成实际的功能代码吗?我有一般的编码知识,但我不知道正确的语法。 基本上,我需要的是一个脚本,当提交表单条目时,它会在所有工作表/选项卡之间循环。表单包含提交表单的人的姓名(字符串)、开始日期、结束日期,最后是注释字段(字符串)。 我需要脚本来遍历每个工作表的第5行,并查找在第一个表单字段中输入的字符串(提交表单的人的姓名)。如果它找到了该名称,它应该将与该名称对应的列保存到

  • 我有一个GoogleSheets文档,其中有几个标签,这些标签经常会重新排列位置,或者添加新的标签。有没有办法在列上创建包含公式(无脚本)的选项卡索引?由于工作限制(多用户的安全和连接策略及指导原则),无法实现脚本。 我正在添加脚本解决方案的链接,供可能正在寻找此解决方案并可以使用它们的任何人使用: 是否有Google Sheets公式将工作表的名称放入单元格? 如何在Google电子表格上动态引