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

Excel中追踪组内车型名称变更并生成最新名称分组列

多车型更名组最新名称解决方案

针对多车型多次更名的场景,我们可以通过Excel动态数组公式或Power Query两种方式实现自动生成每个车型组的最新名称。

一、Excel动态数组公式方案(适用于Excel 365/2021+)

直接在Naming_group列的第一个单元格输入以下公式,按回车后会自动填充整列:

=LET(
    startName, @Old_name,
    getLatest, LAMBDA(n, LET(next, XLOOKUP(n, Old_name, New_name, ""), IF(next="", n, getLatest(next)))),
    getLatest(startName)
)

公式逻辑说明

  1. startName:以当前行的Old_name作为追踪起始点(如果是车型初始名称,可调整为IF(ISBLANK(@Old_name), @New_name, @Old_name)兼容空值场景)。
  2. getLatest递归函数:
    • 查找当前名称对应的New_name(如果存在);
    • 若找到新名称,继续递归追踪下一次更名;
    • 直到找不到对应的新名称,返回当前名称即为该车型组的最新名称。

二、Power Query方案(适合大数据量或需批量处理场景)

如果数据量较大,或需要更灵活的处理逻辑,可使用Power Query实现:

  1. 将数据加载到Power Query(选中数据表 → 「数据」选项卡 → 「从表格/范围」);
  2. 打开高级编辑器,替换为以下M代码(注意将Table1替换为你的数据表名称):
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    AllNames = List.Distinct(List.Combine({Source[Old_name], Source[New_name]})),
    GetLatestName = (name as text) as text =>
        let
            NextName = try List.First(Source[New_name]{List.PositionOf(Source[Old_name], name)}) otherwise null,
            Result = if NextName = null then name else GetLatestName(NextName)
        in
            Result,
    NameMap = Table.FromList(AllNames, Splitter.SplitByNothing(), {"Name"}),
    NameMapWithLatest = Table.AddColumn(NameMap, "LatestName", each GetLatestName([Name])),
    Merged = Table.NestedJoin(Source, "Old_name", NameMapWithLatest, "Name", "Temp", JoinKind.LeftOuter),
    Merged2 = Table.AddColumn(Merged, "Naming_group", each [Temp]{0}[LatestName]),
    Cleaned = Table.RemoveColumns(Merged2, {"Temp"})
in
    Cleaned
  1. 点击「关闭并上载」,即可得到包含Naming_group列的结果表。

注意事项

  • 若存在循环更名(如A→B,B→A),递归逻辑会报错,需提前修正数据;
  • Excel公式方案依赖LAMBDA函数,需确保你的Excel版本支持该功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:42:16