重新组织数据 Excel

Reorganize Data Excel

我需要采取以下(CSV):

deviceId,ip,mac,serial,version,platform,vtpDomain,stack num, stack ports, stack model, stack version, stack image, stack MAC, stack Serial    AA_MDF_2960X_2,10.10.10.10,abab.abab.abab, 123123123,15.0(2a)EX5,cisco WS-C2960X-48FPS-L,'AAHS',,,,,,,
,,,,,,,1,52,WS-C2960X-48FPD-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,2,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,3,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,*4,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
AA_MDF_2960X_2,10.10.10.10,abab.abab.abab, 123123123,15.0(2a)EX5,cisco WS-C2960X-48FPS-L,'AAES',,,,,,,
,,,,,,,1,52,WS-C2960X-48FPD-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,2,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,3,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123
,,,,,,,*4,52,WS-C2960X-48FPS-L,15.0(2a)EX5,C2960X-UNIVERSALK9-M,abab.abab.abab, 123123123

看起来像:

这些列有点重复信息。交换机堆栈中的每个主设备都有名称、IP、MAC、序列号、版本、型号、位置。我的示例中显示了两个母版,每个堆栈一个。堆叠中的每台交换机(包括主交换机)都显示相同的信息。此外还有表示堆栈中位置的数字(加上“*”表示主机)、交换机端口和堆栈图像。 以名称开头的每一行都是交换机堆栈中的主机。以空格开头的行是该堆栈中的交换机。我需要有关堆栈中交换机(包括主交换机)的信息,这些信息与主交换机的信息一起放置在注释列中的单个单元格中。 我可以为 fill-in 项缺失创建一个 excel 公式,它看起来像:

(In R123)=if(A123="",R122,A123)

这很好,但仍然让我删除行和数据仍然是错误的格式。感觉走错了路。此外,我正在寻找一种更自动化的数据处理方式。 我希望能够获取 CSV,打开 [Something],刷新,以图片格式导出新的 CSV。 我可以使用 power query、Excel 或 Power Pivot 来接近。 使用 Power Query 我可以添加一个索引列。然后我可以添加一个自定义列来检查第一列是否为空并且 return 结果。当列为空时,我不知道如何使 Power Query 引用 "the cell above"。

即使是关于如何表达此问题以获得有用 Google 结果的建议也会有所帮助。杂乱的数据、Power Query 数据重新格式化等太模糊了。

谁能告诉我在提到这两种数据时应该使用什么术语?我认为后者可能是表格形式的,绝对没有标准化。

编辑:我在 CSV 示例中添加了 headers。

我现在在 power 查询中使用以下内容:

let
    Source = Csv.Document(File.Contents("C:\rawdata.csv"),[Delimiter=",", Columns=17, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source),
    #"Removed Columns" = Table.RemoveColumns(#"Promoted Headers",{"mac", "serial", "platform"}),
    #"Added Custom" = Table.AddColumn(#"Removed Columns", "Notes_StepOne", each Text.Combine({[stack num],[#" stack model"],[#" stack version"],[#" stack image"],[#" stack MAC"],[#" stack Serial"] ,"#(000D)#(000A)"})),
    #"Replaced Value" = Table.ReplaceValue(#"Added Custom","",null,Replacer.ReplaceValue,{"deviceId", "ip", "version", "vtpDomain"}),
    #"Filled Down" = Table.FillDown(#"Replaced Value",{"deviceId", "ip", "version", "vtpDomain"}),
    #"Group By" = Table.Group(#"Filled Down", {"deviceId", "ip", "version", "vtpDomain"}, {{"notes", each Text.Combine([Notes_StepOne]), type text}})
in
    #"Group By"

编辑:用括号替换引号 "Notes_StepOne" 干得好,亚历杭德罗!

这是一种可能的解决方案:

  1. 您生成的结果可以是列的组合,加上换行符。自定义列公式看起来像这样:

    Text.Combine({[first column], [second column], "#(000D)#(000A)"})
    
  2. 在您要作为分组依据的任何列中填写值。您可以通过转到转换选项卡并选择填充 | 在 Power Query 中填充值。下.

  3. 进行分组。 UI 不允许您通过将文本列添加在一起来进行分组,因此您可能希望将其添加为单独的步骤(单击 fx 按钮将创建一个新步骤)。它看起来像这样:

    = Table.Group(#"Filled Down", {"first column", "second column"}, {{"notes", each Text.Combine([custom column made in the first part]), type text}})