網友問到:在 Excel 中,如果有一個頭尾是文字、中間是數字的儲存格內容,如何取出其中的數字?
參考下圖,例如:在AB1234ED字串中取出數字1234。
【公式設計與解析】
1. 找出數字第一位的位置
儲存格B5:{=MIN(IF(ISNUMBER(MID(A5,ROW($1:$20),1)*1),ROW($1:$20)))}
(1) MID(A5,ROW($1:$20),1)*1)
在陣列公式中,以 ROW(1:20)產生 1,2,3,4,…,20的數值陣列。
以 MID 函數取出儲存格A5內容的第1個至第20個字。
因為 MID 函數傳回的結果為文字,「*1」的用意為將文字型的數字改為數值型的數字。
以「a24680b」為例,傳回「"a", 2", 4", 6", 8", 0", b", ", ", ", ", ", ", ", ", ", ", ", ", ",」。
(2) ISNUMBER(第(1)式)
在陣列公式中,利用 ISNUMBER 函數判斷第(1)式傳回的內容是否為數字,並傳回 TRUE/FALSE。
以「a24680b」為例,傳回「False, TRUE, TRUE, TRUE, TRUE, TRUE, False, False, False, False, False, False, False, False, False, False, False, False, False, False」
(3) IF(第(2)式,ROW($1:$20))
以「a24680b」為例,傳回「False, 2, 3, 4, 5, 6, False, False, False, False, False, False, False, False, False, False, False, False, False, False」
(4) MIN(第(3)式)
取第(3)式的最小值,以「a24680b」為例,傳回「2」。
2. 找出數字末一位的位置
儲存格C5:{=MAX(IF(ISNUMBER(MID(A5,ROW($1:$20),1)*1),ROW($1:$20)))}
以 MAX 函數取第(3)式的最大值,以「a24680b」為例,傳回「6」。
3. 取出數字
儲存格D5:=MID(A5,B5,C5-B5+1)
MID(A5,B5,C5-B5+1)=MID(A5,2,6)=「24680」。
【延伸閱讀】
* Excel-依分隔符號取出數字來運算(SUBSTITUTE,LEFT,MID,RIGHT)
* Excel-從字串中取出數字並轉換為日期(MID,DATE,TEXT)
* Excel-取出字串中的數字(MID,ISNUMBER,陣列公式)
留言列表