You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets日历中筛选指定人员的所有日程时间?

Google Sheets提取特定人员日程的实现方法

方法一:使用内置公式(无需编程)

假设你的表格结构为:

  • A列:日期(格式如「2月14日」)
  • B列及以后:各时段表头(如「11:00」「12:00」),单元格内容为对应时段的人员姓名

直接在空白单元格输入以下公式,即可自动生成符合要求的格式:

=BYROW(UNIQUE(FILTER(A:A, B:Z="Peter")), LAMBDA(date, TEXTJOIN(" ", TRUE, "Peter", date, TEXTJOIN(" ", TRUE, FILTER(B1:Z1, INDEX(B:Z, MATCH(date, A:A, 0), 0)="Peter")))))

公式逻辑说明:

  1. 筛选出所有Peter有安排的日期并去重
  2. 对每个日期,定位到对应行的时段数据
  3. 提取该日期下Peter对应的所有时段表头
  4. 自动拼接成「姓名 日期 时段1 时段2...」的格式

方法二:使用Google Apps Script(批量处理更灵活)

如果需要更复杂的批量处理逻辑,可通过脚本实现:

  1. 打开目标表格,点击「扩展程序」→「Apps Script」
  2. 替换默认代码为以下内容:
function extractPeterSchedule() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const headers = data[0].slice(1); // 时段表头从B列开始
  const result = [];

  for (let i = 1; i < data.length; i++) {
    const date = data[i][0];
    const scheduleRow = data[i].slice(1);
    const peterSlots = [];

    scheduleRow.forEach((name, idx) => {
      if (name === "Peter") peterSlots.push(headers[idx]);
    });

    if (peterSlots.length) {
      result.push(["Peter", date, ...peterSlots].join(" "));
    }
  }

  // 创建或获取结果工作表
  const outputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("提取结果") || SpreadsheetApp.getActiveSpreadsheet().insertSheet("提取结果");
  outputSheet.clear();
  outputSheet.getRange(1, 1, result.length, 1).setValues(result.map(item => [item]));
}
  1. 保存脚本并运行(首次运行需完成权限授权)
  2. 表格会自动生成名为「提取结果」的工作表,里面就是整理好的日程内容

内容的提问来源于stack exchange,提问作者Zé Miguel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:15:07