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

使用Excel公式重新格式化数据的技术求助

需求:Excel原始数据合并与格式化处理

核心需求

  • 对原始数据进行合并:当同一人员所属区域内,两行的B、C、D、E列内容完全相同时,仅保留一行
  • 将匹配行对应的**各月份cost(成本)和discount price(折扣价)**整合到保留的行中
  • 需支持处理匹配行被其他不同值行隔开的场景(例如John的数据中,B6-E6与B8-E8匹配但中间隔了一行)

解决方案:使用Power Query实现(推荐)

Power Query能高效处理这类跨行匹配合并的需求,步骤如下:

  1. 导入数据到Power Query:
    选中原始数据区域,点击「数据」选项卡 → 「从表格/区域」,勾选「我的表格有标题」后确认导入。

  2. 分组合并数据:
    在Power Query编辑器中,点击「转换」选项卡 → 「分组依据」:

    • 分组列选择人员列(对应原始数据的A列)、B列、C列、D列、E列
    • 新列名设置为「合并数据」,操作选择「所有行」
  3. 提取并整合月份数据:
    添加自定义列,用公式提取并合并各月份的cost和discount price:

    = let
        rows = [合并数据],
        mergeCost = List.Combine(List.Transform(rows, each {_[一月cost],_[二月cost],_[三月cost]})) // 根据实际月份列扩展
        mergeDiscount = List.Combine(List.Transform(rows, each {_[一月discount price],_[二月discount price],_[三月discount price]}))
        in Record.FromList(mergeCost & mergeDiscount, List.Combine(List.Transform({"一月","二月","三月"}, each {_ & "cost", _ & "discount price"})))
    

    (注:需根据实际存在的月份列调整公式中的月份名称)

  4. 展开自定义列并整理结构:
    点击自定义列右侧的展开按钮,选择所有生成的月份字段,然后删除「合并数据」列,调整列顺序至需求的布局。

  5. 加载回Excel:
    点击「主页」选项卡 → 「关闭并上载」,将处理后的数据加载到新工作表,即可得到符合要求的Desired Output布局。

备选方案:数组公式(适合小规模数据)

如果数据量不大,可使用数组公式实现(以一月cost为例,假设原始数据在A1:X100区域):

=IFERROR(INDEX($F$1:$F$100, MATCH($B2&$C2&$D2&$E2&$A2, $A$1:$A$100&$B$1:$B$100&$C$1:$C$100&$D$1:$D$100&$E$1:$E$100, 0)), "")

(需按Ctrl+Shift+Enter作为数组公式输入,其他月份字段同理修改列引用)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:20:34