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

Power Query中无需辅助列,在空行后NAME行前插入指定文本?

解决方案

可以通过List.Accumulate实现单逻辑步骤的处理,不需要额外辅助列,核心是用累积状态跟踪前一行内容,动态生成目标列表:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WUoCDcP8gHxelWB1kMWf/UL8QJDEwP8jTNRgshqZYwc/R1xVFzNkxwDPE0Yd0xWCBAP+AUB/HEE9/P6XYWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [INPUT = _t]),
    // 预处理输入列表:将空文本/空白转为null,统一空行标记
    InputList = List.Transform(Source[INPUT], each if _ = null or Text.Trim(_) = "" then null else _),
    // 用List.Accumulate遍历并生成输出列表
    OutputList = List.Accumulate(
        InputList,
        {[Prev = null, Result = {}]}, // 初始状态:保存前一行值和结果列表
        (state, current) => 
            let
                PrevVal = state{0}[Prev],
                CurrentResult = state{0}[Result],
                // 判断当前行是NAME且前一行是空行(null),则插入NEXT_COUNTRY
                UpdatedResult = if current = "NAME" and PrevVal = null then 
                                    CurrentResult & {"NEXT_COUNTRY", current}
                                else 
                                    CurrentResult & {current}
            in
                {[Prev = current, Result = UpdatedResult]}
    ){0}[Result],
    // 转换为包含输入和输出列的表格
    FinalTable = Table.FromColumns({InputList, OutputList}, {"INPUT", "OUTPUT"})
in
    FinalTable

逻辑说明

  1. 先把输入列中的空文本/空白行统一转为null,方便判断空行
  2. 用List.Accumulate的状态对象同时记录前一行的值和已生成的结果列表
  3. 遍历每一行时,若当前行是NAME且前一行是空行(null),则在结果列表中先添加NEXT_COUNTRY,再添加当前行;否则直接添加当前行
  4. 最后将原输入列表和生成的输出列表合并为表格,得到目标效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:15:48