仅当满足另一个条件时才计算单元格值

问题描述 投票:0回答:1

我目前使用以下函数来计算列中相同值的出现次数。

function countRecords() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  const last = sheet.getLastRow();
  const range = 'A1:A' + last ;
  const data = sheet.getRange(range).getValues();
  
  const counts = {};

  data.forEach(function (x) { counts[x] = (counts[x] || 0) + 1; });
  var result = Object.entries(counts);
  return result; 
  
}

这会生成一个数组,其中包含每个唯一值以及它在列中出现的次数。 我现在需要仅在该行存在另一个值时才计算该值。

例如

A 校 B 上校
Val1
Val1
Val1 某事
Val1 某事
Val2 某事
Val2 某事
Val2

我期望输出为 [Val1, 2][Val2, 1],它应该只计算 COLB 为空的行。

我尝试过嵌套循环,但我越来越困惑,希望得到一些帮助。

javascript google-apps-script
1个回答
-1
投票

使用

Array.filter()
,如下所示:

function countRecords() {
  const counts = {};
  SpreadsheetApp.getActiveSheet()
    .getRange('A1:B')
    .getValues()
    .filter(row => row[1])
    .forEach(([key, _]) => counts[key] = (counts[key] || 0) + 1);
  return Object.entries(counts);
}

参见 Array.filter()解构赋值

© www.soinside.com 2019 - 2024. All rights reserved.