如果你是Excel數據透視表的迷妹迷弟,就應該好好了解一下GetPivotData()函數,它的主要功能是返回儲存在數據透視表中的數據。
GetPivotData()函數有一個超級友好的特點:函數可以自動生成。
首先檢查該選項是否設置。光標停留在數據透視表任意單元格,選擇“選項”選項卡,點擊“選項”按鈕旁邊的小三角形,在出現的菜單中,如果“生成GetPivotData()”被勾選則說明已經設置。
這時候,你在數據透視表之外任一單元格鍵入“=”然后光標選擇數據透視表的數據項例如單元格H11的“總計”,自動生成函數公式“=GETPIVOTDATA("數量",$A$4)”。如果該選項沒有被設置,同樣的操作,單元格出現的則是該地址的引用“=H11”。
有人問,兩種方法的結果都一樣,干嘛勞神費力用函數?
如果我們將“省份”字段放入表格篩選區(qū),稍稍改變一下透視表的結構,就能發(fā)現二者的區(qū)別。GetPivotData()函數是在數據透視表中篩選符合參數條件的值,而“=H11”只是一個普通的地址引用。
如果沒有設置GetPivotData()的自動生成,或者你就是想自己手寫函數。那么清晰理解GetPivotData(data_field,pivot_table,field1,item1,field2,item2,…)的參數含義就十分重要:
- data_field為必選,表示函數返回值在數據源中的字段名,因為此參數設置的是文本格式,所以要加雙引號,譬如上面“=GETPIVOTDATA("數量",$A$4)”中的“數量”。特別強調一下,這個字段名不要誤作透視表的標題名稱,應該是數據源中相應數值的字段名,一般都顯示在透視表的左上角。
- pivot_table為必選,表示函數取值的透視表,注意不是鍵入透視表的名稱,而是用透視表區(qū)域第一個單元格的絕對地址引用代表,譬如“=GETPIVOTDATA("數量",$A$4)”中的“$A$4”。為什么要指定透視表呢?因為工作簿中可能同時有多個透視表。
-后面若干field和item是可選項,在參數中必須成雙成對出現。可以把它們理解為篩選條件,“field”代表數據源中的字段名,“item”表示該字段對應的值,也需要用雙引號括起來。
所以這個函數可以理解為:返回透視表pivot_table的字段data_field的值,符合篩選條件字段field1=item1、字段field2=item2…
前面“=GETPIVOTDATA("數量",$A$3)”中只填寫兩個必填參數,沒有篩選條件,所以返回的是所有值“總計”。
我們來演示一個完整的實例:用函數從下圖左邊的透視表取值填充右邊的表格。
在單元格“L6”中鍵入“=”,然后光標選中透視表的對應值,自動生成透視表函數“=GETPIVOTDATA("數量",$A$5,"省份","廣東","產品名稱","產品1")”。
按照我們平常的習慣,將公式復制填充,發(fā)現并不能得到相應省份的數據,原來自動生成的公式中的參數都是絕對引用,所以無論怎么復制,結果都是一樣的。
那GetPivotData()函數的參數可以使用相對引用嗎?答案當然是可以。我們將“省份”的篩選條件“廣東”改為“$K6”,省份名稱在“K”列是不會改變的,所以鎖定“K”列;將“產品名稱”的篩選條件“產品1”改為“L$5”,同理,“產品名稱”在行“5”是不會變的,所以鎖定行“5”。
這樣就可以復制公式快速填充了,檢查一下結果,與數據表中的總計一模一樣,都是“784890”。
了解了函數的用法,那什么時候需要用到它呢?
1、原始數據源特別龐大已經影響到電腦運行速度時。這個時候就可以考慮先生成一個數據透視表,然后再利用該函數返回透視表中的值生成各種報表,而不是每次都去原始數據源中調用。
2、當需要合并數據,但大家遞交的數據源五花八門時??梢詮奈寤ò碎T的數據源中提取自己需要的數據生成透視表,然后再利用該函數從N個透視表中提取數據。
3、其他用途。。。