有個網友問了一個 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,往下各列貼上。
文章標籤
全站熱搜

公式修改如下是否就可以 D2:=IF(round(MOD(A2*100,10),0),C2,B2)
答案還是錯的,問題是出在MOD函數造成的錯誤。謝謝你一起來研究。
*****
*****
*****
A B C 1 116 4.7 0.79 2 39.4 5.96 3.26 3 40 1.37 0.99 4 81.6 3.56 2.48 (1) 如A 是整數 小數點後數字要符合23457 任2 個 或4 個 取小數點的 1. 7/79 (2) A 是小數點一位, B C 只要符合23457 任何一個數即可 3 37/99 (3) 如果 B C 是1.37 的 1 出現反 白 B C 是 3.58 的 3 出現反白 B C 是4.04 的04 出現反 白
1 116 , 4.7 , 0.79 2. 39.4 , 5.96 , 3.26 3. 40 , 1.37 , 0.99 4. 81.6 , 3.56 , 2.48 很抱歉,數字對不齊,所以再傳一次 希望你幫我解決這個難題 謝謝