在使用excel處理數據的時候,為了能更清晰的標示出滿足特定條件的單元格,對單元格添加背景色是不錯的選擇。手工處理的方式簡單快捷,但是當遇到大批量數據,就會特別的費時費力,而且不討好(容易出錯)。通過代碼來處理是個不錯的選擇,excel可以通過VBA編程來處理內部數據,在打開excel頁面后,可以通過“alt + F11”組合鍵來啟動VBA編程界面,跟VB的編程界面和語法一樣,需要注意的是如何調用excel的內容。VBA通過sheet, range和cells三個層次來調用excel中的制定區域,sheet指定要處理的表格頁,ranges制定要處理的范圍,可以是一個單元格,也可以是多個單元格,cells(i,j)通過制定行下標i和列下表j來定位制定的單元格,通過這三個層次就基本能定位excel中的任意制定位置。
關於vba和excel編程,請詳見:http://msdn.microsoft.com/zh-cn/library/ee814737.aspx
http://www.cnblogs.com/jaxu/archive/2009/04/04/1407004.html
實例:在做驗證性因子分析(Confirmed Factoe Analysis,CFA)的時候,我們通常因子載荷(factor loading)來判斷構念(construct)之間的區別效度(discriminant validity),即同一構念下的item之間correlation盡可能高,而不同構念的item之間的相關性盡可能低。所以將correlation matrix中大於沒特定閾值單元格用特定背景顏色加以區分,就可以清晰的看出item之間的相關關系。
假設我們有一個64*64的correlation matrix,那么在excel中是用vba對不同范圍的correlation值的單元格添加背景顏色的代碼如下:
1 Sub changeBgColor() 2 Dim i As Integer 3 Dim j As Integer 4 Dim r As Integer 5 Dim c As Integer 6 7 8 r = 67 '最后一行是第67行 9 c = 66 '最后一列是第66列 10 11 For i = 3 To r '迭代,從第3行開始,一直到最后一行 12 For j = 2 To c '迭代,從第2列開始,一直到最后一列 13 14 If Cells(i, j) > 0.5 And Cells(i, j) < 0.6 Then '如果單元格Cells(i,j)的值大於0.5下於0.6,那么背景顏色代碼為42 15 Cells(i, j).Interior.ColorIndex = 42 16 End If 17 18 If Cells(i, j) > 0.6 And Cells(i, j) < 0.7 Then 19 Cells(i, j).Interior.ColorIndex = 43 20 End If 21 22 If Cells(i, j) > 0.7 And Cells(i, j) < 0.8 Then 23 Cells(i, j).Interior.ColorIndex = 6 24 End If 25 26 If Cells(i, j) > 0.8 And Cells(i, j) < 1 Then 27 Cells(i, j).Interior.ColorIndex = 3 28 End If 29 Next 30 Next 31 32 End Sub
結果如下所示:
附1:excel中的顏色代碼(colorIndex)