如何在 Excel 中合并相对于第一列的行

如何在 Excel 中合并相对于第一列的行

尝试重新格式化 csv 文件,将多个字段行组合在一起,但相对于第一个字段,因此查看所附的图片编辑截图上面的截图是我所拥有的一个样本( 1000 行),但我需要对其进行格式化,以便“媒体图像”文本对于每个 sku 都位于一行上(从第一列开始),如下面截图所示。为什么要这样做?

注意,jpg 的文件名并不总是连续的,就像示例中的那样

答案1

您可以使用Power QueryExcel 2010+ 中的

  • 选择表格中的一个单元格
    • 数据 / 获取和转换 / 来自表/范围
  • 您可以通过 Power Query UI 完成所有操作

算法

  • 选择sku列并“向下填充”
  • Group BySKU 操作All Rows
    • 提取_media_attribute_id
      • 由于这些都是相同的,我们只提取第一个。
    • 提取List_image_media 列的元素
    • 从该列表中提取元素作为逗号分隔的文本字符串

如果将 M 代码粘贴到高级编辑器中,则可以将Table第 2 行中的名称更改为工作表中数据的实际表名。

然后,您可以检查面板中的步骤Applied Steps来了解正在发生的事情。

M 代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"sku", type text}, {"_media_attribute_id", Int64.Type}, {"_media_image", type text}}),
    #"Filled Down" = Table.FillDown(#"Changed Type",{"sku"}),
    #"Grouped Rows" = Table.Group(#"Filled Down", {"sku"}, {{"Grouped", each _, type table [sku=nullable text, _media_attribute_id=nullable number, _media_image=nullable text]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "_media_attribute_id", each List.First(Table.Column([Grouped],"_media_attribute_id"))),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "_media_image", each Table.Column([Grouped],"_media_image")),
    #"Extracted Values" = Table.TransformColumns(#"Added Custom1", {"_media_image", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
    #"Removed Columns" = Table.RemoveColumns(#"Extracted Values",{"Grouped"})
in
    #"Removed Columns"

在此处输入图片描述

答案2

  1. 创建一个新列来表示每行的 SKU。第一行应包含 SKU 值。下一行应将=IF(NOT(ISBLANK(A2)),A2,D1)A2 替换为包含 SKU 数据的列,d1 是该新列的第一行。将公式拖到数据末尾。
  2. 为文件名的连接字符串创建第二个新列。输入以下内容:=IFERROR(TEXTJOIN(",",TRUE,if(D:D=A1,C:C,"")),"")。这里,D:D 代表您在之前步骤中创建的列,A1 是原始 sku,C:C 是包含媒体文件名的列。在单击退出之前,点击ctrl+ shift+ enter。(这会将其创建为数组函数而不是普通函数)。将此公式拖到数据末尾。

例子:

例子

相关内容