本篇來練習如何在 Excel 裡計算一個儲存格裡的字串中數字個數。

Excel-計算字串裡的數字個數

【設計與解析】

先理解:每個數字的 ASCII 碼是介於 48 和 57 之間。

儲存格B4:

=LET(x,CODE(MID(A4,ROW(INDIRECT("1:"&LEN(A4))),1)),SUM(IF((x<=57)*(x>=48),1,0)))

(1) INDIRECT("1:"&LEN(A4))

因為 LEN(A4) 可以取得儲存格A4裡的字串長度(字元個數),所以利用 INDIRECT 函數將 "1:"&LEN(A4) 轉換為位址。例如:「abc6def」轉換為「1:7」。

(2) ROW(INDIRECT("1:"&LEN(A4)))

本例中,根據第(1)式的傳回值得到 ROW(1:7)。因為本公式為陣列公式,所以結果會得到:1,2,3,4,5,6,7。

(3) MID(A4,ROW(INDIRECT("1:"&LEN(A4))),1))

根據第(2)式的傳回值,透過 MID 函數由第1個位置至第7個位置,各取出1個字元。得到:a,b,c,6,d,e,f。

(4) CODE(MID(A4,ROW(INDIRECT("1:"&LEN(A4))),1))

根據第(3)式的傳回值,再透過 CODE 將每一個字元轉換為 ASCII 碼。

在 LET 函數中設定:x=CODE(MID(A4,ROW(INDIRECT("1:"&LEN(A4))),1))。

(5) SUM(IF((x<=57)*(x>=48),1,0)

判斷第(4)式的傳回值若是大於 48 且小於 57,則加 1。最後再以 SUM 函數予以加總,即為所求。

【特別注意】

(1) 觀察上圖,其中最特殊的是日期中顯示的數字和計算結果不一致,此乃因為日期在儲存格中儲存的是一個數值,所以數字的數量要以數值的大小而定。

(2) 全型的數字會被視為文字。

學不完.教不停.用不盡文章列表

arrow
arrow
    文章標籤
    Excel
    全站熱搜

    vincent 發表在 痞客邦 留言(0) 人氣()