none
Excel Lookup函數發生#N/A錯誤 RRS feed

  • 問題

  • System: Windows XP professional
    Version: Excel 2003 SP1
    問題描述:Lookup函數,特定數值會產生#N/A
    我Lookup一個範圍,該範圍的值是由公式產生,我有嘗試使用過小數點以下多位數來確認該值是否有問題。
    Ex:
    Lookup(0.14,某個範圍)
    某個範圍的資料如下(由公式產生)
    0.14
    0.15
    0.16
    0.17
    0.18
    理論上應該要出現0.14
    但是傳回值是#N/A
    我有嘗試的步驟如下:

    1.將"某個範圍"的值用小數點以下5個位數去表示,發現該值為0.14000,因此,應該不是小數點位數的問題。

    2.若將"某個範圍"的0.14使用手動Key in數值,該值就能夠被正確找到。

    3.因"某個範圍"的資料是經由公式產生,調整該公式所對應前導欄位的值,但是仍舊讓"某個範圍"的第一個值為0.14可以被正確找到。

    請問這是什麼問題?

    2009年5月4日 上午 07:25

解答

  • 所以說詳見:計算機概論 浮點數

    問題在於你的 Step 0.01 非整數,當累積一定程度會變大,你這個區塊一直拉大時,就會變成0.xx00000000001或0.xx9999999999,而這個差異的累積是呈線性,而非忽然跳過去的。

    倍精度中,0.14 直接打,在記憶體中為 EC51B81E85EBC13F ,但是 FD51B81E85EBC13F ~ DA51B81E85EBC13F 都會顯示 0.14 。
    FD51B81E85EBC13F > EC51B81E85EBC13F > DA51B81E85EBC13F

    但是顯示出來都是 0.14

    你要很明確的比就要拿記憶體中的值來比。

    註:
    FE51B81E85EBC13F 顯示 0.140000000000001
    D951B81E85EBC13F 顯示 0.139999999999999


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年5月4日 下午 12:37

所有回覆

  • 就是你 1 所稱的問題。

    原因或理論部份:請閱讀 計算機概論 浮點數

    解決方法只能配合進位公式去處理,或是用整數去拖拉範圍後,在除以 100 。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年5月4日 上午 08:47
  • 感謝你的回覆,我有使用Trunc Function去解決這個問題了。

    只是說,我可以用什麼方法證明就是這樣的問題?

    因為我有嘗試將小數點後面拉到8位數仍舊是0。

    因為我需要向人家說明,原因,所以我要讓他看到這樣的差異。

    感謝!

    2009年5月4日 上午 09:38
  • 所以說詳見:計算機概論 浮點數

    問題在於你的 Step 0.01 非整數,當累積一定程度會變大,你這個區塊一直拉大時,就會變成0.xx00000000001或0.xx9999999999,而這個差異的累積是呈線性,而非忽然跳過去的。

    倍精度中,0.14 直接打,在記憶體中為 EC51B81E85EBC13F ,但是 FD51B81E85EBC13F ~ DA51B81E85EBC13F 都會顯示 0.14 。
    FD51B81E85EBC13F > EC51B81E85EBC13F > DA51B81E85EBC13F

    但是顯示出來都是 0.14

    你要很明確的比就要拿記憶體中的值來比。

    註:
    FE51B81E85EBC13F 顯示 0.140000000000001
    D951B81E85EBC13F 顯示 0.139999999999999


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年5月4日 下午 12:37