有個網友問了一個 Excel 中很普通的問題,但我卻發現了很特殊的結果。參考下圖,想要依照A欄中的數值小數點位數,如果是一位數則顯示B欄的內容,如果是二位數則顯示C欄的內容,該如何處理?

我很直覺的使用了以下的公式:

儲存格D2:=IF(INT(MOD(A2*100,10)),C2,B2)

MOD(A2*100,10):求出小數點的內容。因為A欄中的數值,不是一位數,就是二位數,所以將數值乘以100,再求除以10的餘數。如果為 0,表示為小數點後為一位數;如果不為 0,表示小數點後為二位數。

複製儲存格D2,往下各列貼上。

參觀下圖紅色字的部分,很明顯的出現了我無法理解的錯誤!

所以,被迫修改公式:

儲存格D2:
=IF(LEN(MID(TEXT(A2,"0.##"),FIND(".",TEXT(A2,"0.##"))+1,2))=2,C2,B2)

TEXT(A2,"0.##"):將儲存格A2的內容,由數值改為字串。

FIND(".",TEXT(A2,"0.##")):找出小數點的位置。

MID(TEXT(A2,"0.##"),FIND(".",TEXT(A2,"0.##"))+1,2):找出小數點後的文字。

LEN(MID(TEXT(A2,"0.##"),FIND(".",TEXT(A2,"0.##"))+1,2))=2:判斷小數點後的文字是否為二個字。

複製儲存格D2,往下各列貼上。

arrow
arrow
    全站熱搜

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