如何使用Google Script将学生姓名批量插入到Countifs等公式中?
实现方案
完全可以通过脚本批量生成公式,以下分别给出Excel和谷歌表格两种常用工具的可用方案:
方案1:Excel VBA脚本
使用前请先修改代码中的工作表名称、COUNTIFS参数为你实际的配置:
Sub 批量填充出勤统计公式() Dim 统计工作表 As Worksheet, 出勤数据源表 As Worksheet Dim 最大行号 As Long ' 替换为你自己的工作表名称 Set 统计工作表 = ThisWorkbook.Worksheets("统计页") Set 出勤数据源表 = ThisWorkbook.Worksheets("原始出勤数据") ' 获取A列学生姓名的最后一行行号 最大行号 = 统计工作表.Cells(统计工作表.Rows.Count, "A").End(xlUp).Row ' 批量写入COUNTIFS公式,A2为相对引用,自动适配每行对应学生姓名 统计工作表.Range("B2:B" & 最大行号).Formula = "=COUNTIFS(" & 出勤数据源表.Name & "!A:A, A2)" End Sub
运行脚本后,B列所有对应A列有姓名的行都会自动生成匹配的COUNTIFS公式。
方案2:谷歌表格 Apps Script
function 批量填充出勤统计公式() { const 表格文件 = SpreadsheetApp.getActiveSpreadsheet(); // 替换为你自己的工作表名称 const 统计工作表 = 表格文件.getSheetByName("统计页"); const 出勤数据源表 = 表格文件.getSheetByName("原始出勤数据"); // 计算A列有效姓名的行数 const 姓名列内容 = 统计工作表.getRange("A:A").getValues(); const 最大行号 = 姓名列内容.filter(item => item[0] !== "").length; // 批量写入公式,可自行调整COUNTIFS的匹配规则 const 统计公式 = `=COUNTIFS('${出勤数据源表.getName()}'!A:A, A2)`; 统计工作表.getRange(2, 2, 最大行号 - 1, 1).setFormula(统计公式); }
替代简化方案(无需脚本)
你可以直接在第一个学生对应的公式单元格(如B2)写好带相对引用的公式=COUNTIFS(原始出勤数据!A:A,A2),写完后双击单元格右下角的填充柄,公式会自动顺着A列有内容的行向下填充,自动适配每行的学生姓名,操作比脚本更简便。
内容的提问来源于stack exchange,提问作者SometimesTeaching
相关产品推荐
相关产品推荐

