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

在Google Sheets中按姓名与ID整理数据:排序及列复制

Google Sheets 分组汇总与筛选需求求助

核心需求

  • 从Google Sheets的「Log表」中,按指定日期范围筛选指定列数据并复制到目标表
  • 按姓名+ID分组排序
  • 每组顶部添加汇总行,包含:ID、日期范围、姓名、总工时、总薪资
  • 每组末尾添加分隔空行
  • 额外需求:能否在下拉菜单中加入复选框(如附件GIF所示)

已尝试的方法

公式

=QUERY(Log!B:S, "select J,L,O,P,S where B = "&A2&" and J >= date '"&TEXT(L2,"yyyy-mm-dd")&"' and J <= date '"&TEXT(V2,"yyyy-mm-dd")&"'",0)
=Filter({Log!J:J,Log!L:L,Log!T:T,Log!AB:AB,Log!P:P,Log!X:X,Log!AF:AF,Log!O:O,Log!S:S},Log!B:B=A1,Log!J:J>=L1,Log!J:J<=V1)

Apps Script脚本

function groupingdata() {
var groupwiseSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("groupwise");
var logSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Log");
var empCode = groupwiseSheet.getRange("A1").getValue();
var nameRange = groupwiseSheet.getRange("B1:E1");
var fromDateRange = groupwiseSheet.getRange("L1");
var toDateRange = groupwiseSheet.getRange("V1");


// Get the merged value for the name range
var name = nameRange.getMergedRanges()[0].getValue();

// Get the value for the from date range and convert to Date object
var fromDate = new Date(fromDateRange.getValue());

// Get the value for the to date range and convert to Date object
var toDate = new Date(toDateRange.getValue());

var logData = logSheet.getRange("A1:BM").getValues();
var groupwiseData = [];

for (var i = 1; i < logData.length; i++) {
    if (logData[i][1] >= fromDate && logData[i][1] <= toDate && logData[i][2] == empCode && logData[i][3] == name) {

    groupwiseData.push([
    logData[i][0], // A to A (LogID)
    logData[i][1], // B to B (DATE)
    '=IMAGE("' + logData[i][5] + '", 4, 100, 100)', // C
    '=IMAGE("' + logData[i][13] + '", 4, 100, 100)', // D
      null, // E (skip)
      null, // F (skip)
    logData[i][6],  // G to G  / 1st ClockIn 
    logData[i][7],  // H to H / 1st In Location / H to H
    logData[i][8],  // I to I / 1-Activity to I
    logData[i][10], // K to J / 1-Project  K to J
    logData[i][12], // M to K  / 1-Note
    logData[i][22], // W to L / 2-IN-TIME
    logData[i][23], // X to M / 2-IN-Loc
    logData[i][24], // Y to N /2-Activity
    logData[i][26], // AA to O  / 2-Project
    logData[i][28], // AC to P  / 2-Note  
    logData[i][37], // AL to Q  / 3-IN-TIME   
    logData[i][39], // AN to R  /3-IN-Loc
    logData[i][40], // AO to S /3-Activity
    logData[i][42], // AQ to T /3-Project
    logData[i][44], // AS to U /3-Note
    logData[i][14], // O to V /1-OUT-TIME 
    logData[i][15], // P to W /1-OUT-Loc
    logData[i][16], // Q to X /1-OUT-Activity
    logData[i][20], // U to Y /1-OUT-Note
    logData[i][30], // AE to Z /2-OUT-TIME
    logData[i][31], // AF to AA /2-OUT-Loc
    logData[i][32], // AG to AB /2-OUT-Activity
    logData[i][36], // AK to AC /2-OUT-Note
    logData[i][46], // AU to AD /3-OUT-TIME
    logData[i][47], // AV to AE /3-OUT-Loc
    logData[i][48], // AW to AF /3-OUT-Activity
    logData[i][52], // BA to AG /3-OUT-Note
     
   
    //logData[i][55], // BC to AH + Symbol  
    //logData[i][56], // BD to AI Formula Add Hrs
    //logData[i][57], // BE to AJ Formula SiteMark
    //logData[i][58], // BF to AK Empty empty
    //logData[i][59], // BG to AL Formula Recorded Hrs
    //logData[i][60], // BH to AM Formula Auto LunchHr Adjust
    //logData[i][61], // BI to AN Formula Manual Hrs Adjust        

  ]);
}

  }}

当前问题

使用上述公式和脚本,无法实现按姓名分组、添加分隔行及汇总行的效果,恳请指导实现。

期望输出效果

按姓名分组,每组顶部显示ID、日期范围、姓名、总工时、总薪资,下方为对应明细行,每组末尾添加分隔空行(如参考表格所示)。


内容的提问来源于stack exchange,提问作者HummBird

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:23:19