網友問到:若要對 Excel 的工作表中儲存格內的數字,將其每個位元數字予以加總,該如何處理?(參考下圖,注意:每個儲存格內的數字有不同的位數)
【公式解析】
儲存格B2:=SUMPRODUCT(1*MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))
複製儲存格B2,貼至儲存格B2:B16。
(1) LEN(A2)
利用 LEN 函數求得儲存格A2中的數字長度(幾個位元),例如:8位元數傳回「8」。
(2) ROW(INDIRECT("1:"&LEN(A2)))
將字串「1:」和第(1)式傳回的數字串接,並利用 INDIRECT 函數將其轉成儲存格位址。例如,第(1)式傳回「8」,則將「1:8」轉成位址置於 ROW 函數中使用。
例如,在 SUMPRODCUT 函數中,本公式中ROW(1:8)代表數字「1, 2, 3, 4, 5, 6, 7 ,8」。
(3) MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)
將第(2)式的傳回值置入 MID 函數中,依序由左至右取出儲存格A2內數字的每個位元。
(4) SUMPRODUCT(1*MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))
最後,透過 SUMPRODUCT 函數將每個位數予以加總,即為所求。其中公式中的「1*」運算乃是將 MID 函數的傳回結果(文字),轉換為數值。
【延伸學習】
如果儲存格內的數位是位元數相同者,可以採用以下公式:(假設位元數8)
儲存格B2:=SUMPRODUCT(1*MID(A2,ROW(1:8),1))
【延伸閱讀】
參考:本部落格中其他關於 Excel SUMPRODUCT 函數的應用
留言列表