讀者根據這篇:Excel-計算間隔列的和(SUPRODUCT,MOD,ROW),詢問了進階的做法。如下圖,如果數值清單中包含了文字,則原公式會出錯,如何能加上防錯機制,應該如何處理?
原先的公式是以 SUMPRODUCT 為主,現在要改為陣列公式來處理。
【公式設計與解析】
選取儲存格B1:B25,按 Ctrl+Shift+F3 鍵,勾選「頂端列」,定義名稱:數值。
儲存格E2:{=SUM(IF(ISNUMBER(數值),(MOD(ROW(數值)-1,2)=1)*數值))}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 自動加上「{}」。
(1) ISNUMBER(數值)
在陣列公式中,利用 ISNUMBER 函數判斷數值陣列裡是否為數字。結果會傳回 TRUE/FALSE 陣列。
(2) MOD(ROW(數值)-1,2)=1
公式中的參數『2』:這是要間隔多少列的數值。
MOD(ROW(數值)-1,2)=1:其中的「-1」,乃因數值陣列是由第2列開始,即項次1在第2列,項次2在第3列,...,都是差 1。利用 MOD 函數來求得列號除以2所得的結果,並判斷是否結果為 1,產生 1,0,1,0,1,0, ...。
(3) IF(ISNUMBER(數值),(MOD(ROW(數值)-1,2)=1)*數值)
利用 IF 函數只將數值陣列中是數字者,才計算(MOD(ROW(數值)-1,2)=1)*數值。
(4) SUM(IF(ISNUMBER(數值),(MOD(ROW(數值)-1,2)=1)*數值))
最後,利用 SUM 函數將第(3)式的傳回值予以加總,即為所求。
如果你的數值陣列只會出現數字,則可以參考:
留言列表