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

如何在MS Access中将多行数据合并为单行并导出至Excel?

当然有办法实现!根据你的需求,核心是按分组聚合重复行,将同组内的列值用逗号拼接,同时要注意忽略col1的大小写(比如原数据里的C要和c归为一组)。这里给你几种不同场景下的可行方案:

方案1:在查询阶段直接处理(最推荐)

既然你的数据集是通过查询生成的,直接在SQL里完成聚合是最高效的,不用额外导出后再处理。不同数据库的字符串聚合函数略有不同,以下是常见数据库的实现:

MySQL/MariaDB

SELECT 
    LOWER(col1) AS col1,  -- 统一转为小写,实现大小写不敏感分组
    col2,
    GROUP_CONCAT(DISTINCT col3 ORDER BY col3 SEPARATOR ',') AS col3,
    GROUP_CONCAT(DISTINCT col4 ORDER BY col4 SEPARATOR ',') AS col4
FROM your_table_name
GROUP BY LOWER(col1), col2;
  • DISTINCT用来去重(比如原数据里C行的col4是4,和c行的4重复,会合并成一个)
  • ORDER BY保证拼接的顺序和你期望的一致

PostgreSQL

SELECT 
    LOWER(col1) AS col1,
    col2,
    STRING_AGG(DISTINCT col3::TEXT, ',' ORDER BY col3) AS col3,
    STRING_AGG(DISTINCT col4::TEXT, ',' ORDER BY col4) AS col4
FROM your_table_name
GROUP BY LOWER(col1), col2;
  • 需要把数值类型的col3/col4转为文本类型(::TEXT)才能拼接

SQL Server

SELECT 
    LOWER(col1) AS col1,
    col2,
    -- 聚合col3
    STUFF(
        (SELECT DISTINCT ',' + CAST(col3 AS VARCHAR)
         FROM your_table_name t2
         WHERE LOWER(t2.col1) = LOWER(t1.col1) AND t2.col2 = t1.col2
         ORDER BY ',' + CAST(col3 AS VARCHAR)
         FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 
        1, 1, ''
    ) AS col3,
    -- 聚合col4
    STUFF(
        (SELECT DISTINCT ',' + CAST(col4 AS VARCHAR)
         FROM your_table_name t2
         WHERE LOWER(t2.col1) = LOWER(t1.col1) AND t2.col2 = t1.col2
         ORDER BY ',' + CAST(col4 AS VARCHAR)
         FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 
        1, 1, ''
    ) AS col4
FROM your_table_name t1
GROUP BY LOWER(col1), col2;
  • 用STUFF + FOR XML PATH的方式实现字符串聚合,SQL Server 2017及以上版本也可以直接用STRING_AGG,写法和PostgreSQL类似。

方案2:用Excel Power Query处理(适合已导出数据到Excel的情况)

如果已经把原始数据导出到Excel了,用Power Query可以可视化完成聚合,不用写代码:

  1. 选中你的数据区域,点击数据选项卡 -> 自表格/区域(如果弹出对话框,勾选“我的表格有标题”)
  2. 进入Power Query编辑器后,先处理col1的大小写:选中col1列,点击转换选项卡 -> 格式 -> 小写
  3. 点击转换选项卡 -> 分组依据:
    • 在弹出的对话框中,分组依据选择col1和col2(点击“添加分组”按钮添加第二个分组列)
    • 点击“添加聚合”按钮,设置:
      • 新列名:col3,操作:自定义,公式:Text.Combine(List.Distinct(TransformValues([col3], Text.From)), ",")
      • 再添加一个聚合列,新列名:col4,操作:自定义,公式:Text.Combine(List.Distinct(TransformValues([col4], Text.From)), ",")
  4. 点击确定后,你就能看到聚合后的结果,最后点击主页选项卡 -> 关闭并上载,结果会导入到新的Excel工作表中。

方案3:用Python Pandas处理(适合需要灵活自定义逻辑的场景)

如果你熟悉Python,用Pandas可以快速完成数据处理并导出Excel:

import pandas as pd

# 读取原始数据,这里假设是csv文件,也可以直接从数据库读取
df = pd.read_csv("your_raw_data.csv")

# 统一col1为小写,实现大小写不敏感分组
df["col1"] = df["col1"].str.lower()

# 分组聚合:按col1和col2分组,对col3、col4去重后拼接
result_df = df.groupby(["col1", "col2"]).agg(
    col3=("col3", lambda x: ",".join(sorted(pd.unique(x).astype(str)))),
    col4=("col4", lambda x: ",".join(sorted(pd.unique(x).astype(str))))
).reset_index()

# 导出到Excel
result_df.to_excel("output.xlsx", index=False)
  • sorted用来保证拼接后的顺序和你期望的一致,不需要的话可以去掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:57:40