查找下一个唯一值并将公式添加到下两列

里科

如何以某种方式更改录制的宏

  1. 在A列中找到下一个唯一值。
  2. 转到那行
  3. 在该行粘贴公式的C列中在该行粘贴的=transpose(filter($AZ#:$BS#,$AZ#:$BS#<>""))D列=transpose(filter($F#:$Y#,$F#:$Y#<>""))和E列中=transpose(filter($BW#:$CP#,$BW#:$CP#<>""))

我正在尝试在Google表格上编写一个宏,该宏将在A列中找到下一个唯一名称,然后将公式1应用于列C,将公式2应用于列D,将公式3应用于该下一个唯一值位于的行的列E 。

我记录了我手动执行的宏,但是我真的很想不这样做,因为我有大约2000个唯一的名称。

function threeformulas() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('C2').activate();
  spreadsheet.getCurrentCell().setFormula('=transpose(filter($AZ2:$BS2,$AZ2:$BS2<>""))');
  spreadsheet.getRange('D2').activate();
  spreadsheet.getCurrentCell().setFormula('=transpose(filter($F2:$Y2,$F2:$Y2<>""))');
  spreadsheet.getRange('E2').activate();
  spreadsheet.getCurrentCell().setFormula('=transpose(filter($BW2:$CP2,$BW2:$CP2<>""))');
  spreadsheet.getRange('C12').activate();
  spreadsheet.getRange('C2:E2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.getRange('C22').activate();
  spreadsheet.getRange('C2:E2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};

转置公式必须存在,因为数据库从D列到CP开始吐出的报告确实很奇怪。这里是数据外观的图像。我强调了下一个唯一的价值所在。在此处输入图片说明

Tanaike

我相信您的目标如下。

  • 您要检查“ A”列的值。
  • 在“ A”列中找到第一个唯一值时,您想将3个公式放入“ C”至“ E”列中。
    • 在示例图像中,您想要将公式放入单元格“ C2:E2”,“ C12:E12”和“ C22:E22”。
  • 在你的问题,公式1,式2和式3 =transpose(filter($AZ2:$BS2,$AZ2:$BS2<>""))=transpose(filter($F2:$Y2,$F2:$Y2<>""))=transpose(filter($BW2:$CP2,$BW2:$CP2<>""))分别。

在这种情况下,为了实现您的目标,我使用以下流程。

  1. 从“ A”列中检索所有值。
  2. 创建用于放置3个公式的范围列表。
  3. 使用创建的范围列表放置3个公式。

示例脚本:

请复制以下脚本并将其粘贴到Spreadsheet的容器​​绑定脚本的脚本编辑器中。并设置sheetName

function myFunction() {
  const sheetName = "Sheet1";  // Please set the sheet name.

  // 1. Retrieve all values from the column "A".
  // 2. Create the range list for putting 3 formulas.
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  const ranges = sheet
    .getRange("A2:A" + sheet.getLastRow())
    .getValues()
    .reduce((o, [a], i) => {
      if (a != o.temp) {
        o.temp = a;
        const row = i + 2
        o.f1.push(`C${row}`);
        o.f2.push(`D${row}`);
        o.f3.push(`E${row}`);
      }
      return o;
    }, {f1: [], f2: [], f3: [], temp: ""});

  // 3. 3 formulas are put using the created range list.
  sheet.getRangeList(ranges.f1).setFormulaR1C1('=transpose(filter(R[0]C52:R[0]C71,R[0]C52:R[0]C71<>""))');
  sheet.getRangeList(ranges.f2).setFormulaR1C1('=transpose(filter(R[0]C6:R[0]C25,R[0]C6:R[0]C25<>""))');
  sheet.getRangeList(ranges.f3).setFormulaR1C1('=transpose(filter(R[0]C75:R[0]C94,R[0]C75:R[0]C94<>""))');
}

参考文献:

添加:

我猜我唯一的问题是我不确定转置公式如何更改,并且我想知道如果我引用另一个工作表示例中的数据该怎么写:transpose(filter('Raw Data-Austin'!$ BW2: $ CP2,'原始数据奥斯汀'!BW2:$ CP2 <>“”))

关于这个额外的问题,在这种情况下,请进行如下修改。

从:

sheet.getRangeList(ranges.f1).setFormulaR1C1('=transpose(filter(R[0]C52:R[0]C71,R[0]C52:R[0]C71<>""))');
sheet.getRangeList(ranges.f2).setFormulaR1C1('=transpose(filter(R[0]C6:R[0]C25,R[0]C6:R[0]C25<>""))');
sheet.getRangeList(ranges.f3).setFormulaR1C1('=transpose(filter(R[0]C75:R[0]C94,R[0]C75:R[0]C94<>""))');

至:

sheet.getRangeList(ranges.f1).setFormulaR1C1(`=transpose(filter('Raw Data-Austin'!R[0]C52:R[0]C71,'Raw Data-Austin'!R[0]C52:R[0]C71<>""))`);
sheet.getRangeList(ranges.f2).setFormulaR1C1(`=transpose(filter('Raw Data-Austin'!R[0]C6:R[0]C25,'Raw Data-Austin'!R[0]C6:R[0]C25<>""))`);
sheet.getRangeList(ranges.f3).setFormulaR1C1(`=transpose(filter('Raw Data-Austin'!R[0]C75:R[0]C94,'Raw Data-Austin'!R[0]C75:R[0]C94<>""))`);
  • 在此修改中,请小心使用模板文字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将列表的每个前一个值添加到下一个

找到唯一的列值,并将输出用于下一个查询

forEach继续将1的值添加到下一个结果

查找下一个值

将上一个分区的结果添加到下一个分区中的列

KarateDSL解析响应中的值并将其添加到下一个方案有效负载中

传递身份验证标头并将其添加到下一个请求

如果一列中的前一个值和另一列中的下一个值满足条件,则使用 r 将 1 添加到另一列中

JavaScript:获取第一个循环的结果并将其添加到下一个循环中

goquery-从一个html标签提取文本并将其添加到下一个标签

选择下一个唯一值

在字段中查找下一个最小值的公式

自定义列以查找下一个下一个最小值

如何查找下一个可用列并对其应用公式

查找 Spark 数据帧中列的最大两个下一个值的平均值

计算一个值出现的次数并将结果添加到列中

使用“快速添加下一个”使用“查找”添加到选择中,我想跳过一些匹配项

查找下一个较小和下一个较大的值

Jquery - 将下一个按钮添加到选项卡

Java数组,将项目添加到下一个空索引

jQuery:如果为XYZ,则将类添加到此AND下一个元素

将标签管理器添加到下一个 js,混淆文档

在Javascript中将类添加到下一个兄弟元素

如何将下一个元素添加到网格

如何将下一个按钮添加到弹出窗口?

我可以将键盘布局添加到下一个Ubuntu版本吗?

如何将边框半径添加到下一个 js 图像?

如何将下一个按钮添加到 Java Selenium 代码中

将平均计算添加到下一个空白行