PaddyD Asked: 2020-10-14 07:53:23 +0800 CST2020-10-14 07:53:23 +0800 CST 2020-10-14 07:53:23 +0800 CST 如何在excel中合并相对于第一列的行 772 试图重新格式化一个 csv 文件,将几个字段行组合在一起,但相对于第一个字段所以查看附在顶部屏幕截图的图片是我所拥有的示例(1000 行),但我需要对其进行格式化,以便每个 sku 的“媒体图像”文本都在一行(从第一列开始),如底部屏幕截图所示。有为什么要这样做吗? 注意 jpg 的文件名并不总是连续的,就像它们在示例中一样 microsoft-excel 2 个回答 Voted Meow_ly 2020-10-14T08:19:51+08:002020-10-14T08:19:51+08:00 创建一个新列来表示每行的 SKU。第一行应该有 SKU 值。下一行应该将=IF(NOT(ISBLANK(A2)),A2,D1)A2 替换为包含 sku 数据的任何列,并且 d1 是该新列的第一行。将公式向下拖动到数据的末尾。 为文件名的连接字符串创建第二个新列。输入这个:=IFERROR(TEXTJOIN(",",TRUE,if(D:D=A1,C:C,"")),"")。这里,D:D 代表您在上一步中创建的列,A1 是原始 sku,C:C 是具有媒体文件名称的列。在你点击它之前,点击ctrl++ 。(这会将其创建为数组函数而不是普通函数)。将此公式向下拖动到数据的末尾。shiftenter 例子: Best Answer Ron Rosenfeld 2020-10-14T16:12:01+08:002020-10-14T16:12:01+08:00 您可以Power Query使用 Excel 2010+ 中的来执行此操作 选择表格中的一个单元格 数据/获取和转换/从表/范围 您可以从 Power Query UI 完成这一切 算法 选择sku列并“填写” Group BySKU 与操作All Rows 提取_media_attribute_id 由于这些都是相同的,我们只提取第一个。 提取List_image_media 列的元素 从该列表中提取元素作为逗号分隔的文本字符串 如果将 M 代码粘贴到高级编辑器中,则可以将第Table2 行中的名称更改为工作表中数据的真实表名。 然后,您可以检查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"
=IF(NOT(ISBLANK(A2)),A2,D1)
A2 替换为包含 sku 数据的任何列,并且 d1 是该新列的第一行。将公式向下拖动到数据的末尾。=IFERROR(TEXTJOIN(",",TRUE,if(D:D=A1,C:C,"")),"")
。这里,D:D 代表您在上一步中创建的列,A1 是原始 sku,C:C 是具有媒体文件名称的列。在你点击它之前,点击ctrl++ 。(这会将其创建为数组函数而不是普通函数)。将此公式向下拖动到数据的末尾。shiftenter例子:
您可以
Power Query
使用 Excel 2010+ 中的来执行此操作算法
sku
列并“填写”Group By
SKU 与操作All Rows
_media_attribute_id
List
_image_media 列的元素如果将 M 代码粘贴到高级编辑器中,则可以将第
Table
2 行中的名称更改为工作表中数据的真实表名。然后,您可以检查
Applied Steps
面板中的步骤以了解正在发生的事情。M-代码