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

使用Openpyxl识别首列重复ID并合并对应列内容

Excel重复ID对应文本合并问题修复

原代码的问题

  • 文本拼接逻辑错误:' '.join(text)是把单个字符串拆成字符逐个空格拼接,比如输入"测试文本"会变成"测 试 文 本",完全不是合并同一ID的多个文本内容。
  • 未指定写入目标单元格:代码中cell.value = newcells的cell变量未定义,等于没往表格里写入任何有效内容。
  • 缺失ID分组逻辑:仅判断前后行ID是否相同,但未收集同一ID下的所有I列文本,自然无法完成合并操作。

修正后的代码

# 按ID分组,收集对应I列的所有文本
id_text_map = {}
for row in sheet.iter_rows(min_row=1, values_only=True):
    id_val = row[0]  # A列对应元组第0位索引
    text_val = str(row[8])  # I列对应元组第8位索引,转成字符串避免空值报错
    if id_val not in id_text_map:
        id_text_map[id_val] = []
    id_text_map[id_val].append(text_val)

# 在第10列插入新列(对应Excel的J列)
sheet.insert_cols(10)

# 遍历每一行,将对应ID的合并文本写入新列
for row_num, row in enumerate(sheet.iter_rows(min_row=1, max_row=sheet.max_row), start=1):
    current_id = row[0].value
    # 合并同一ID的所有文本,用空格分隔(可自行替换为逗号、换行符等)
    merged_text = ' '.join(id_text_map[current_id])
    # 写入第10列(J列,列索引从0开始计数为9)
    sheet.cell(row=row_num, column=10).value = merged_text

workbook.save(file)

代码说明

  1. ID分组收集:用字典id_text_map存储每个ID对应的所有I列文本,确保同一ID下的所有内容都被聚合。
  2. 写入新列:遍历表格每一行,根据当前行ID从字典中取出合并后的文本,直接写入插入的新列。
  3. 分隔符灵活调整:如果需要用其他分隔符(比如逗号、换行),只需把' '.join(...)改成','.join(...)或'\n'.join(...)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:30:59