数据透视表中的文本值?

数据透视表中的文本值?

我有一张表(在 MySQL 中),有 3 列:

Location    Category     Supplier

   A        Computers    Company X
   A        Printers     Company Y
   B        Computers    Company X
   B        Printers     Company Y
   B        Software     Company Y
   C        Computers    Company Y
   C        Software     Company Z

现在我需要制作一个包含上述信息的矩阵,如下所示:

       Computers      Printers       Software

A      Company X      Company Y
B      Company X      Company Y      Company Y
C      Company Y                     Company Z

最终我需要在 Excel 中得到这个。

实际上,我的类别数量是可变的,因此在 MySQL 中对每个列进行连接并不是一个好选择。我可以用 PHP 编写一个函数,但我想知道是否有更优雅的解决方案。

我查看了 Excel 中的数据透视表,但它们似乎只适合以数字作为值。但也许我忽略了一些东西,因为我自己从未使用过 Excel。

答案1

我不知道这是否如您所希望的那样“优雅”,但您使用数据透视表的想法是正确的。您只需要稍微作弊。在这里,“辅助列”、数据透视表和“vlookup”函数可以成为您的朋友。

首先,在原始数据中添加“供应商编号”的辅助列。公司 X = 1,公司 Y = 2,公司 Z = 3。我将辅助列设置为第一列,以便以后在 vlookup 中使用。请注意,数据现在位于单元格 A5:D11 中。

在此处输入图片描述

接下来,像这样透视数据。我使用了“数据透视表选项”对话框的“显示”选项卡中的“经典数据透视表布局”选项(右键单击数据透视表以调出该对话框)。

在此处输入图片描述

选择并复制整个数据透视表,然后在原始数据透视表一侧的另一个位置“粘贴特殊/值”。然后,在表格副本的主体中输入显示的公式。请注意,vlookup 公式引用的是原始数据透视表(“H7”引用——参见上图)以及前面提到的范围 A5:D11。

在此处输入图片描述

就像我说的,它并不优雅,但它确实有效。有很多聪明人浏览这个网站,他们可能会为你想出一个“优雅”的解决方案!

答案2

我发现你可以完全避免使用数据透视表。参见下面的屏幕截图。使用辅助列。定义显示的命名范围。设置布局,如 G14:J18 所示。在表格主体中,使用 VLOOKUP 和 SUMPRODUCT。

在此处输入图片描述

相关内容