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

求适用于Power Automate的Excel Office Script:合并相同ID行

合并相同ID行的Power Automate专用Office Script

以下是可直接在Power Automate中调用的Office Script,用于合并Excel中ID相同的行,将分散在多行的非空值整合到同一行:

function main(workbook: ExcelScript.Workbook) {
    // 获取当前活动工作表(需指定固定表可改为workbook.getWorksheet("Sheet1"))
    const sheet = workbook.getActiveWorksheet();
    const range = sheet.getUsedRange();
    if (!range) {
        console.log("工作表无数据");
        return;
    }
    const values = range.getValues();
    if (values.length <= 1) {
        console.log("数据行数不足,无需处理");
        return;
    }

    // 存储每个ID对应的合并后数据
    const mergedData: {[key: string]: (string|number|boolean|undefined)[]} = {};
    // 遍历数据行(跳过表头)
    for (let i = 1; i < values.length; i++) {
        const row = values[i];
        const id = row[0].toString();
        
        if (!mergedData[id]) {
            mergedData[id] = new Array(values[0].length).fill(undefined);
            mergedData[id][0] = row[0];
        }

        // 填充非空值到合并数据
        for (let j = 1; j < row.length; j++) {
            if (row[j] !== "" && row[j] !== undefined) {
                mergedData[id][j] = row[j];
            }
        }
    }

    // 清空原数据行(保留表头)
    sheet.getRange(2, 1, values.length - 1, values[0].length).clear(ExcelScript.ClearApplyTo.contents);
    
    // 写入合并后的数据
    const mergedRows = Object.values(mergedData);
    if (mergedRows.length > 0) {
        sheet.getRange(2, 1, mergedRows.length, mergedRows[0].length).setValues(mergedRows);
    }
}

关键说明:

  • 若需指定固定工作表,将const sheet = workbook.getActiveWorksheet();替换为const sheet = workbook.getWorksheet("你的工作表名称");
  • 同一ID下的列会保留所有非空值,若同一ID同一列存在多个非空值,脚本会保留最后出现的那个值
  • 执行时自动清空原数据行(表头保留),无需手动删除重复行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:27:40