1. 程式人生 > >利用EXCEL自動統計實驗結果的準確率

利用EXCEL自動統計實驗結果的準確率

我們在做的實驗的時候,通常都需要計算實驗結果的準確率。當時資料量較大時,依靠人工來計算是不現實的,不僅十分慢而極易出錯。如果我們事先將實驗結果檔案進行合理的格式化,則可以利用EXCEL自動進行統計,不僅效率高,也不擔心出錯了。簡單地,利用EXCEL中的自動篩選或分類彙總功能也可實現一些統計,但是當資料量特別大時,分類彙總很卡,易導致崩潰,而且功能單一,不能靈活組合;而自動篩選則需要不停地滾來滾去或不斷地切換表,也十分不方便。所以我考慮自己寫程式來實現統計,這樣便於對統計資料進行任意操作,比如移動、製作圖表等。下面通過一個稍微複雜一點兒的例子來說明如何使用。主要使用了counif、countifs、sum

這三個函式。設定原始資料放在Sheet1中,統計結果放在Sheet2中。

任務描述:

有一張如下圖所示的實驗結果資料。該表所在的工作表名為Sheet1。

我需要根據第一列進行分類統計,要分別計算出每一類出現的行數、該類中D列被標誌為1的行數(1表示正確,0表示錯誤)。其中,A列內的RE1、RE2、RE3屬於同個大類,放到一起統計,除此之處其它各類都單獨統計;A列中為數字的都屬於noRel類;不用關心B、C兩列的具體內容,即所有統計都基於A、D兩列。每一列都要求和,作為整體結果統計。

Sheet2的結果表結構如下圖所示

結果表我放在名為Sheet2的工作表中。

實現過程:

1 計算各類對應的出現次數

1.1 計算單獨統計的類

單獨統計的類包括DependOrder、DependType、noRW,他們的統計結果分別是Sheet2表中B2、B3、B5。

在B2單元格中寫入公式:=COUNTIF(Sheet1!A:A,F2)。這個公式作用是進行條件統計,第一個引數為資料區域(因為當前統計結果表是在Shhet2中,所以Sheet1!A:A意思是引用Sheet1中的A列資料,下同),第二個引數是計數的條件。那麼完整來看這個公式的意思就是,從Sheet1!A:A(即A列)中的資料中計算F2單元格內容出現的次數,F2的內容是DependOrder,所以最終就變為了計算A中DependOrder出現的次數了。

下面B3、B5單元格所法炮製,只需要把countif公式中的第二個引數修改為對應需要查詢的單元格即可。

B3=COUNTIF(Sheet1!A:A,F3),B5=COUNTIF(Sheet1!A:A,F5)

1.2 計算需要合併統計的類

需要合併計算的數有兩種,一個把RE1、RE2、RE3合併起來統計,第二個是所有第一列為數字的行,要作為noRel類一起統計。對應的單元格位置分別是B4、B6。解決思路是多個countif相加。具體如下:

B4=COUNTIF(Sheet1!A:A,"RE1")+COUNTIF(Sheet1!A:A,"RE2")+COUNTIF(Sheet1!A:A,"RE3")。每一個countif計算某一種固定的類名出現的次數,所有countif相加,其實就求出他們的並集了。

B6=COUNTIF(Sheet1!A:A,">1")。這裡使用了一個技巧,因為從資料中可以發現A列最小的資料也大於1,而其餘各行的A列均是字母,不是數字,所以我們用">1"這個條件就可輕易地從中挑出所有的數字行了。

2 計算各類對應的正確數

其實就是在前面計算的基礎上,再參看另一個數據,就是D列是否為1,也就是多條件統計,這就要用到另一個函式countifs。

2.1 計算單獨統計的類

DependOrder、DependType、noRW三個類對應的正確數單元格分別是C2、C3、C5。這裡先講一個countifs函式引數的意義。countifs後面引數的個數不確定,但一定是偶數,兩兩一組,第一個引數表示資料區域,第二個引數統計條件,後面繼續第三個引數是第二個條件的資料區域,第四個引數是第二個條件的統計條件……

C2=COUNTIFS(Sheet1!A:A,F2,D:D,1)。意思是統計A列中單元格值為F2(即DependOrder)、且D列為1的個數。

C3=COUNTIFS(Sheet1!A:A,F3,D:D,1),C5=COUNTIFS(Sheet1!A:A,F5,D:D,1)。

2.2 計算需要合併統計的類

對比2.1和1.1可以發現,僅是簡單地修改一下對應單元格里的公式即可。根據這個思路 ,我們可以在1.2中所述的公式的基礎上,來快速寫出需要合併統計的類的正確數。

C4=COUNTIFs(Sheet1!A:A,"RE1",D:D,1)+COUNTIFs(Sheet1!A:A,"RE2",D:D,1)+COUNTIFs(Sheet1!A:A,"RE3",D:D,1)。即把countif改為countfs,然後每個countif後面再新增上“,D:D,1”這個條件新培的統計條件即可。

C6=COUNTIF(Sheet1!A:A,">1")

3、求和

需要計算出所有類的總數、正確數之和。這裡就很簡單了,一個sum函式即可搞定。

B7=SUM(B2:B6),C7=SUM(C2:C6)

4、計算正確率

前面算出了總數和其中的正確數,這時就可以輕鬆地算出正確率了。D2=C2/B2。然後利用填充柄向下拖動到I7單元格即可全部算出來了。再把資料資料設為百分數,保留兩位小數。

至此,全部都算出來了,完整結果如下。

 基於此結果,可以很快製作出統計圖