取消透视 Excel 矩阵/数据透视表? [英] Unpivot an Excel matrix/pivot-table?

查看:40
本文介绍了取消透视 Excel 矩阵/数据透视表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有一种快速的方法来取消透视"Excel 矩阵/数据透视表(在 Excel 或其他地方),无需编写宏或其他代码?
同样,我可以自己编写代码(C# 或 VBA 或其他).
我想知道是否可以在没有代码的情况下快速完成?

例如我需要转换这个权限矩阵(以 Excel 表格/矩阵形式给出)

到这个半规范化的表中(这样我就可以将它插入到 SQL 数据库中):

例如在 SQL 中,我可以这样做:

创建表 dbo.T_DocumentMatrix([功能] [varchar](255) NULL,[GROUP-Admin] [varchar](255) NULL,[GROUP-SuperUser] [varchar](255) NULL,[GROUP-Manager] [varchar](255) NULL,[GROUP-OLAP] [varchar](255) NULL,[GROUP-1] [varchar](255) NULL,[GROUP-2] [varchar](255) NULL,[GROUP-3] [varchar](255) NULL,[GROUP-4] [varchar](255) NULL,[GROUP-5] [varchar](255) NULL,[GROUP-6] [varchar](255) NULL,[GROUP-7] [varchar](255) NULL,[GROUP-8] [varchar](255) NULL,[外部] [varchar](255) NULL);

复制粘贴excel中的数据,然后

SELECT *从(选择[功能],[GROUP-管理员],[GROUP-超级用户],[GROUP-经理],[GROUP-OLAP],[GROUP-1],[GROUP-2],[GROUP-3],[GROUP-4],[GROUP-5],[GROUP-6],[GROUP-7],[GROUP-8],[外部]FROM T_DocumentMatrix) 作为 p转轴(GroupName IN 的权限([组-管理员],[GROUP-超级用户],[GROUP-经理],[GROUP-OLAP],[GROUP-1],[GROUP-2],[GROUP-3],[GROUP-4],[GROUP-5],[GROUP-6],[GROUP-7],[GROUP-8],[外部])) 作为 unpvt;

但是,这需要我为组中的每个更改更改 table-create 脚本和 unpivot 脚本...

解决方案

哦,好吧,有点复杂.问题之一是,向导调用快捷方式在非英文版本的 excel 中不起作用(该死,在家里我会有英文版本,但在这里工作......)

这是一个很好的视频:

创建多合并数据透视表

并使用自定义变体

并选择范围,然后在新工作表中

然后删除行和列字段

双击数字(图中的 54)

和 excel 会给你中途归一化的数据.

Is there a quick way to "unpivot" an Excel matrix/pivot-table (in Excel or elsewhere), without writing macros or other code ?
Again, I can write code (C# or VBA or whatever) that does that myselfs.
I want to know if it is possible to do it without code, quickly ?

E.g. I need to convert this permission matrix (given as Excel-table/matrix)

into this half-normalized table (so I can insert it into a SQL database):

e.g. in SQL I could do it like this:

CREATE TABLE dbo.T_DocumentMatrix
(
    [Function] [varchar](255) NULL,
    [GROUP-Admin] [varchar](255) NULL,
    [GROUP-SuperUser] [varchar](255) NULL,
    [GROUP-Manager] [varchar](255) NULL,
    [GROUP-OLAP] [varchar](255) NULL,
    [GROUP-1] [varchar](255) NULL,
    [GROUP-2] [varchar](255) NULL,
    [GROUP-3] [varchar](255) NULL,
    [GROUP-4] [varchar](255) NULL,
    [GROUP-5] [varchar](255) NULL,
    [GROUP-6] [varchar](255) NULL,
    [GROUP-7] [varchar](255) NULL,
    [GROUP-8] [varchar](255) NULL,
    [Externals] [varchar](255) NULL
); 

copy-paste the data from excel, and then

SELECT * 
FROM 
(
    SELECT 
         [Function]
        ,[GROUP-Admin]
        ,[GROUP-SuperUser]
        ,[GROUP-Manager]
        ,[GROUP-OLAP]
        ,[GROUP-1]
        ,[GROUP-2]
        ,[GROUP-3]
        ,[GROUP-4]
        ,[GROUP-5]
        ,[GROUP-6]
        ,[GROUP-7]
        ,[GROUP-8]
        ,[Externals]
    FROM T_DocumentMatrix
) AS p
UNPIVOT
(
    Rights FOR GroupName IN 
    (
         [GROUP-Admin]
        ,[GROUP-SuperUser]
        ,[GROUP-Manager]
        ,[GROUP-OLAP]
        ,[GROUP-1]
        ,[GROUP-2]
        ,[GROUP-3]
        ,[GROUP-4]
        ,[GROUP-5]
        ,[GROUP-6]
        ,[GROUP-7]
        ,[GROUP-8]
        ,[Externals]
    )
) AS unpvt
;

However, that requires I change the table-create script and the unpivot-script for every change in groups...

解决方案

Oh, well, it's a little complicated. One of the problems is, the wizard-callup shortcuts don't work in non-english versions of excels (damn, at home I would have the English version, but here at work...)

Here's a good video: https://www.youtube.com/watch?v=pUXJLzqlEPk

But youtube videos can be deleted, so to make it a solid SO answer:

First, you need to go to "Options", and add the menuband-item "Pivot table and PivotChart Wizard".

Create a multiple consolidation pivot table

and use the custom variant

and select the range, and in new work sheet

then delete rows and columns fields

Double click on the NUMBER (54 in the picture)

and excel will give you the halfway normalized data.

这篇关于取消透视 Excel 矩阵/数据透视表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆