首頁 > 軟體

利用Excel宏表函數Get.cell()實現按照單元格顏色進行統計

2021-05-15 01:00:04

首先解釋一下什麼是宏表函數。很早以前的Excel並沒有VBA,那時候是通過「宏表」來實現現在VBA的部分功能,雖然如今「宏表」已經被VBA取代,但出於相容的考慮,Excel仍保留有「宏表」功能,所謂「宏表函數」就是在「宏表」中使用的函數,它可以通過定義名稱應用在工作表中。

Get.cell()便是一個較常用的宏表函數,功能是返回單元格的屬性,其語法結構為:Get.cell(type_num,reference)。其中:

參數type_num表示返回單元格屬性的類型,主要包括:2-單元格行數;3-單元格列數;5-引用內容;6-引用公式;7-文字形式的單元格的數字格式(如「m/d/yy」);24-單元格第一個字元字型顏色;62-當前表的檔名(如[Book1]Sheet1);63-單元格填充色;64-單元格圖案顏色;66-工作簿名(如:Book1.XLS)等,共計約66個類型。

參數reference表示返回屬性的單元格或者單元格區域,如果省略,則預設活動單元格。

接下來演示如何利用Get.cell()函數實現按照單元格顏色統計。

因為宏表函數不能直接使用,需要把函數公式創建在名稱中,所以,首先創建一個名稱,關於名稱的使用,請參閱Excel中越用越香的「名稱」工具

點選「公式」選項卡,點選「名稱管理器」,在對話方塊中點選「新建」按鈕。

在「新建」對話方塊中,名稱框鍵入「顏色值」作為名稱,引用位置鍵入公式「=GET.CELL(63,B2)」。公式第一個參數「63」表示需要返回單元格填充色,第二個參數「B2」是需要返回填充色的單元格地址,使用的是相對引用,要注意新建名稱時游標選中的單元格位置,該名稱在工作表中使用時將以此單元格為基準相對位移,本例中游標在單元格D2。

在單元格D2鍵入公式「=顏色值+RAND()*0」並複製,其中「顏色值」即剛剛新建的名稱,「+RAND()*0」等於0,不影響顏色值結果,加上它是希望利用Rand()函數的易失性,在填充色發生變化時,重新整理公式後能得到新的結果。(宏表函數不能自動更新,需要重新錄入公式才會重算。)

然後就可以通過顏色值輔助列,按照單元格顏色進行各種統計,譬如用Countif()函數計數,在單元格鍵入公式「=COUNTIF(E2:E11,顏色值)」。

解釋一下為什麼會在表格最左邊插入一個空列,是因為根據新建名稱時游標的位置,「顏色值」返回的是公式所在單元格左邊位移兩列所在單元格的填充色,不插入一列,計劃1前面就只有一列,無法使用「顏色值」名稱。當然解決方法有很多,這只是其中之一。同時,再次強調在名稱中使用相對引用時,游標一定要放在合適的位置。

或者求和,鍵入公式「=SUMIF(E2:E11,顏色值,C2:C11)」。

如果有興趣,還可以試一試Get.cell()函數其它參數的妙用。


IT145.com E-mail:sddin#qq.com