如何修改Google Apps Script统计函数,仅当指定列满足条件时计数目标列值的出现次数
如何修改Google Apps Script统计函数,仅当指定列满足条件时计数目标列值的出现次数
我来帮你调整这个统计函数!你的需求是只统计K列为空的行里B列值的出现次数,只需要对原代码做两个关键修改就可以实现,我给你一步步说明:
首先,原代码里的范围'B1:A' + last不仅把A、B列的顺序搞反了,还没包含我们需要判断的K列数据,所以第一步要修正数据范围,把B列和K列都包含进来;第二步就是在计数的时候加个判断条件,只处理K列为空的行。
修改后的完整代码如下:
function countRecords() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const last = sheet.getLastRow(); // 调整范围,获取B列到K列的所有行数据(包含我们需要的B列值和K列判断条件) const range = 'B1:K' + last; const data = sheet.getRange(range).getValues(); const counts = {}; // 遍历每一行数据,添加判断逻辑 data.forEach(function (row) { const bColumnValue = row[0]; // 取当前行B列的值(数组索引从0开始,B是第0位) const kColumnValue = row[9]; // 取当前行K列的值(B到K一共10列,K是第9位) // 判断K列是否为空:处理空白单元格、空字符串、仅空格的情况 if (!kColumnValue || kColumnValue.toString().trim() === '') { // 只有K列为空时,才累加B列值的计数 counts[bColumnValue] = (counts[bColumnValue] || 0) + 1; } }); var result = Object.entries(counts); return result; }
关键修改点说明:
- 范围修正:把原范围改成
'B1:K' + last,这样我们能同时获取到每一行的B列值和K列状态,满足判断需求 - 条件判断:在遍历每行数据时,先检查K列是否为空(包含空白单元格、空字符串、仅含空格的情况),只有符合条件的行才会被计入统计
- 计数逻辑:保持原有的计数逻辑不变,只是增加了前置判断,确保统计的准确性
用你给出的示例数据测试的话,这个函数会返回[["Val1", 2], ["Val2", 1]],完全符合你的预期。
备注:内容来源于stack exchange,提问作者Gary
相关产品推荐
相关产品推荐

