2015年7月17日 星期五

Excel-依小數是2位數或1位數來決定顯示內容(INT,MOD,TEXT,FIND)

有個網友問了一個 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,往下各列貼上。

沒有留言:

張貼留言

好康東東