引言
工欲善其事,必先利其器。在對(duì)數(shù)據(jù)進(jìn)行分析的過(guò)程中,各種各樣格式的數(shù)據(jù)源往往會(huì)對(duì)數(shù)據(jù)分析工作造成極大的困擾,后續(xù)數(shù)據(jù)分析工具的使用也會(huì)變得異常的復(fù)雜,因此,如何得到一個(gè)便于分析、處理的數(shù)據(jù)源,對(duì)于提高數(shù)據(jù)分析的效率,具有十分重要的意義,在數(shù)據(jù)收集之前,如果能夠提前按照需要,設(shè)計(jì)好數(shù)據(jù)源進(jìn)行采集,也能夠?qū)罄m(xù)的數(shù)據(jù)清洗和整理帶來(lái)極大的便利。
好的數(shù)據(jù)源長(zhǎng)什么樣
這是某醫(yī)院科室考核的成績(jī)(虛構(gòu)),從表中我們可以看出各個(gè)科室各項(xiàng)指標(biāo)的得分情況,但是,利用這個(gè)表格,我們想要進(jìn)一步分析科室之間成績(jī)差異,指標(biāo)之間成績(jī)差異就變得比較困難,分析受到了較大的制約,因此,從數(shù)據(jù)源的角度而言,這個(gè)表不是一個(gè)好的數(shù)據(jù)源。

然而如果我們拿到的數(shù)據(jù)源是下面這個(gè)樣子,猛一看上去,這個(gè)數(shù)據(jù)還不如剛才的表格,從中幾乎無(wú)法得到任何有效的信息,但是,這種形式的數(shù)據(jù),幾乎可以被所以統(tǒng)計(jì)分析軟件直接使用,借助 Excel 的數(shù)據(jù)透視表功能,可以從各個(gè)角度對(duì)數(shù)據(jù)進(jìn)行分析,所以,從數(shù)據(jù)源角度來(lái)說(shuō),這才是一個(gè)好的數(shù)據(jù)源。

一維數(shù)據(jù)和二維數(shù)據(jù)
細(xì)心的讀者可能發(fā)現(xiàn)了,兩個(gè)表格的主要差異,就在于需要分析的數(shù)據(jù)的排列方式,在第一個(gè)數(shù)據(jù)源中,數(shù)據(jù)是二維的,相當(dāng)于已經(jīng)把數(shù)據(jù)平鋪在表格上,再想對(duì)數(shù)據(jù)進(jìn)行變形、分析就會(huì)比較麻煩,而第二個(gè)數(shù)據(jù)源中,數(shù)據(jù)是一維的,我們可以隨意對(duì)一維的數(shù)據(jù)進(jìn)行展開(kāi)、塑造,得到我們需要的分析表。
因此,在數(shù)據(jù)收集的過(guò)程中,要盡量保持?jǐn)?shù)據(jù)的原貌,使數(shù)據(jù)以一維的方式存儲(chǔ),這樣可以對(duì)以后的分析帶來(lái)極大的便利。但是,如果拿到的已經(jīng)是二維數(shù)據(jù)該怎么辦呢?接下來(lái)來(lái)介紹一下通過(guò)“逆透視”來(lái)把二維數(shù)據(jù)還原為一維數(shù)據(jù)的幾種方法。
Excel 逆透視的三種方法
借助數(shù)據(jù)透視表功能
-
在 Excel 表格中依次按 Alt d p 鍵,進(jìn)入下圖窗口(數(shù)據(jù)透視表和數(shù)據(jù)透視圖向?qū)В?/p>
多重合并計(jì)算數(shù)據(jù)區(qū)域并下一步 -
選擇“多重合并計(jì)算取數(shù)據(jù)區(qū)域”并點(diǎn)擊“下一步”按鈕;
創(chuàng)建單頁(yè)字段并下一步 -
選擇“創(chuàng)建單頁(yè)字段”,并“下一步”;
選定區(qū)域并添加 在“選定區(qū)域”中選擇需要進(jìn)行逆透視的數(shù)據(jù)區(qū)域,并添加。需要注意的一點(diǎn)是,通過(guò)這種方法進(jìn)行逆透視,只能包含一個(gè)標(biāo)題行和一個(gè)標(biāo)題列,如果有多個(gè)標(biāo)題行(列),需要保留不重復(fù)的一行(列)作為逆透視的標(biāo)題列,在逆透視結(jié)束后,再通過(guò)其他函數(shù)進(jìn)行查找匹配。執(zhí)行“完成”
在上一步之后,我們將得到一個(gè)數(shù)據(jù)透視表,雙擊透視表右下角的行列總計(jì)值,就可以得到逆透視的數(shù)據(jù),再借助 VLOOKUP 和 HLOOKUP 函數(shù),補(bǔ)全數(shù)據(jù)源的必要信息。

借助查詢功能(僅 Excel 2016 版本)
-
在“數(shù)據(jù)”選項(xiàng)卡下,選擇“從表格”新建查詢;
數(shù)據(jù) - 從表格 -
在創(chuàng)建表的窗口中,選擇數(shù)據(jù)來(lái)源;
選擇數(shù)據(jù)來(lái)源 -
選擇需要進(jìn)行逆透視的列,按住 Ctrl 選取多個(gè),右擊選擇內(nèi)容,選擇“逆透視列”選項(xiàng),就可以在查詢中得到逆透視后的數(shù)據(jù),點(diǎn)擊左上角的“關(guān)閉并上載按鈕,即可將逆透視后的數(shù)據(jù)傳回到 Excel 當(dāng)中。需要說(shuō)明的是,這種方法能夠支持多個(gè)標(biāo)題列,但是不能包含多個(gè)標(biāo)題行,因此也需要對(duì)標(biāo)題行進(jìn)行提前處理。
逆透視
借助 VBA
利用 VBA 對(duì)數(shù)據(jù)進(jìn)行逆透視是最靈活的方式,可以根據(jù)數(shù)據(jù)源的差異而調(diào)整程序,這里提供一種解決方案供有能力的用戶進(jìn)行嘗試。
Option Explicit
Sub 逆透視()
Dim i, j As Integer
' i, j 為值矩陣
Dim line As Long
' line 為逆透視之后的行
Application.ScreenUpdating = False
' 關(guān)閉屏幕更新,提高運(yùn)行效率
line = 1
For i = 2 To 20
' 按行循環(huán)
For j = 2 To 20
' 按列循環(huán)
If Sheets(1).Cells(i, j) <> "" Then
' 逆透視忽略空值單元格
Sheets(2).Cells(line, 1) = Sheets(1).Cells(i, 1)
' 讀取列標(biāo)題
Sheets(2).Cells(line, 2) = Sheets(1).Cells(1, j)
' 讀取行標(biāo)題
Sheets(2).Cells(line, 3) = Sheets(1).Cells(i, j)
' 讀取值
line = line + 1
End If
Next
Next
Application.ScreenUpdating = True
' 一定記住要打開(kāi)屏幕更新,否則結(jié)果無(wú)法顯示
End Sub





