重新组织数据 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"
干得好,亚历杭德罗!
这是一种可能的解决方案:
您生成的结果可以是列的组合,加上换行符。自定义列公式看起来像这样:
Text.Combine({[first column], [second column], "#(000D)#(000A)"})
在您要作为分组依据的任何列中填写值。您可以通过转到转换选项卡并选择填充 | 在 Power Query 中填充值。下.
进行分组。 UI 不允许您通过将文本列添加在一起来进行分组,因此您可能希望将其添加为单独的步骤(单击 fx 按钮将创建一个新步骤)。它看起来像这样:
= Table.Group(#"Filled Down", {"first column", "second column"}, {{"notes", each Text.Combine([custom column made in the first part]), type text}})
我需要采取以下(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" 干得好,亚历杭德罗!
这是一种可能的解决方案:
您生成的结果可以是列的组合,加上换行符。自定义列公式看起来像这样:
Text.Combine({[first column], [second column], "#(000D)#(000A)"})
在您要作为分组依据的任何列中填写值。您可以通过转到转换选项卡并选择填充 | 在 Power Query 中填充值。下.
进行分组。 UI 不允许您通过将文本列添加在一起来进行分组,因此您可能希望将其添加为单独的步骤(单击 fx 按钮将创建一个新步骤)。它看起来像这样:
= Table.Group(#"Filled Down", {"first column", "second column"}, {{"notes", each Text.Combine([custom column made in the first part]), type text}})