Excel绘图数据

时间:2018-10-05 13:30:21

标签: excel powerquery

从如下所示的excel表开始

enter image description here

我如何到达这种桌子?

enter image description here

我想用PowerQuery而不是宏来做,表格肯定比这个大。

1 个答案:

答案 0 :(得分:1)

首先,我相信您在两个表状态之间混合了数据编号和值。例如,值10与第一个表中的Data1对齐,但与第二个表中的Data2对齐。话虽如此,我想这就是你所追求的...

从电子表格开始:

enter image description here

...在表名为Table1的情况下,该表已经创建了标题,并且这些标题的标题分别为空格,Col1和Col2,请执行以下操作。

将表(Table1)加载到PowerQuery中:在Excel中,单击“数据”选项卡,单击表,然后单击功能区中的“从表/范围”。确保已选中“我的表具有标题”,然后单击“确定”。 PowerQuery应该打开,您应该看到以下内容:

enter image description here

现在,单击公式栏enter image description here左侧的功能图标,然后将其输入到公式栏:

= Table.ReplaceValue(#"Changed Type",null,"""null""",Replacer.ReplaceValue,Table.ColumnNames(#"Changed Type"))

...然后按Enter。

[或者,您可以使用GUI通过选择一个或多个列(非数字,因为我们将要替换为文本值)来创建上述代码,然后单击“转换”选项卡和“替换值”,然后键入null作为要查找的值,输入“ null”作为替换为,然后单击确定。 ...然后通过将您最初选择的列名称列表替换为Table.ColumnNames(#“ Changed Type”),来编辑显示在公式栏中的结果代码。]

您应该看到以下内容:

enter image description here

为什么我将空值替换为文本?因为如果我不这样做,它们将在下一步中消失,我们稍后再希望它们。我在公式中使用Table.ColumnNames(#"Changed Type")而不是特定列名称的列表的原因是因为我不知道您将拥有多少列或它们将被称为什么,因此应该捕获所有这些。 / p>

现在,单击包含Data#条目的列(在上图中,它是第一列),然后单击“转换”选项卡,然后单击“取消透视列”下拉箭头和“取消透视其他列”:

enter image description here

您应该看到以下内容:

enter image description here

现在,单击公式栏enter image description here左侧的功能图标,然后将其输入到公式栏:

= Table.ReplaceValue(#"Unpivoted Other Columns","""null""",null,Replacer.ReplaceValue,Table.ColumnNames(#"Unpivoted Other Columns"))

...然后按Enter。

您应该看到以下内容:

enter image description here

这是完整的M代码:

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{" ", type text}, {"Col1", Int64.Type}, {"Col2", Int64.Type}}),
#"Replaced Value" = Table.ReplaceValue(#"Changed Type",null,"""null""",Replacer.ReplaceValue,Table.ColumnNames(#"Changed Type")),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Replaced Value", {" "}, "Attribute", "Value"),
#"Replaced Value1" = Table.ReplaceValue(#"Unpivoted Other Columns","""null""",null,Replacer.ReplaceValue,Table.ColumnNames(#"Unpivoted Other Columns"))
in
#"Replaced Value1"