透视数据所需的Excel Vlookup公式

时间:2017-07-03 14:38:49

标签: excel excel-formula pivot-table

我有一个来自数据透视表的简单数据表,格式如下:

 A                          B           C            D
 Names                      Dog         Cat          Horse
 John Smith                 1           1            0
 Jane Smith                 0           0            0
 Jane Dow                   0           1            0
 John Dow                   1           1            1

我想使用公式来使用上面的表填充另一个表。第二个表的顺序不同。例如,马在B列而不是D,John Smith在第5行而不是1。

 A                          B           C            D
 Names                      Horse       Cat          Dog
 John Dow                   ?            
 Jane Smith                
 Jane Dow                   
 John Smith

在这些情况下使用的最佳公式是什么,我认为Vlookup / hlookup不会起作用,因为它依赖于水平和垂直变量。

3 个答案:

答案 0 :(得分:3)

G2单元格(VLOOKUP with MATCH)

中试用此公式
=VLOOKUP($F2,$A:$D,MATCH(TRIM(G$1),$A$1:$D$1,0),0)

enter image description here

答案 1 :(得分:2)

更强大的解决方案是使用GETPIVOTDATA函数......它完全按照您在问题中提出的要求,并且用户可以在不破坏公式的情况下从根本上更改数据透视表的布局。 enter image description here

答案 2 :(得分:1)

正如@pnuts所提到的,这似乎是一个毫无意义的练习,因为你可以操纵数据透视表本身的数据。

尽管如此,请问,你会收到......

对于此任务,您将需要使用INDEX()公式。这是通过给出一个相对于起始位置的行和列号来从数据中读取的内容(无论它在哪里,它将假设第一个单元格是第1行,第1列)。

这允许我们使用其他公式来确定我们要查找的行号和列号。

=INDEX($E$5:$G$8,               'The area our results are that we are looking through
       MATCH($I4,$D$5:$D$8,0),  'Match the name to the name column, return a number of it's position counting from 1 as the first cell
       MATCH(J$3,$E$4:$G$4,0))  'Same as above but matching the animal name

现在看一下这个例子,在网格E5:G8中,我们正在寻找第4行,第3列由INDEX()返回。

这是因为John Dow是在第一个MATCH()中找到的第四个名字,而Horse是在第二个MATCH()中找到的第三个动物名称。

这将分别返回结果中的右下角单元格。

=INDEX($E$5:$G$8,MATCH($I4,$D$5:$D$8,0),MATCH(J$3,$E$4:$G$4,0))

enter image description here