【VBA研究】計算時碰到單元格值是#N/A怎麼處理

作者:iamlaosong

一個應用中需要用VBA連接單元格的值(字符串連接:tmpstr = tmpstr & "  " & Cells(i, j)),如果碰到#N/A就會報錯,提示類型不匹配,如下圖所示:

實際上,參與計算的單元格的值,不僅僅是#N/A,其它的錯誤標識(如#VALUE!、#DIV/O!等等)也會報同樣的錯誤。這些符號都是由公式產生的,如果公式得不到正確的結果,就會產生這些符號。哪怕是按值複製到新的工作表,原來的公式已經不存在,這些看似字符串的符號依然是錯誤標誌,比如#N/A就是Error 2042(在單元格手輸一個#N/A效果相同)。

想要避免報錯,只要事先判斷一下,剔除錯誤標識就行了,如下面的代碼:

附:Excel錯誤標識及解決方法

經常使用Excel的朋友可能都會遇到一些看起來似懂非懂的錯誤值信息:例如# N/A!、#VALUE!、#DIV/O!等等,出現這些錯誤的原因有很多種,你真的瞭解它們嗎,熟練掌握解決這些錯誤的方法嗎?以下爲大家介紹幾種常見的錯誤及其解決方法。

  1.#####!

  如果單元格所含的數字、日期或時間比單元格寬,或者單元格的日期時間公式產生了一個負值,就會產生#####!。這個看起來比較簡單,大家應該都瞭解吧。 

  解決方法:如果單元格所含的數字、日期或時間比單元格寬,可以通過拖動列表之間的寬度來修改列寬。如果使用的是1900年的日期系統,那麼Excel中的日期和時間必須爲正值。如果公式正確,也可以將單元格的格式改爲非日期和時間型來顯示該值。 

  2.#VALUE! 

  當使用錯誤的參數或運算對象類型時,或者當公式自動更正功能不能更正公式時,將產生錯誤值#VALUE!。這其中主要包括3點原因。 

  1)在需要數字或邏輯值時輸入了文本,Excel不能將文本轉換爲正確的數據類型。 

  解決方法:確認公式或函數所需的運算符或參數正確,並且公式引用的單元格中包含有效的數值。例如:如果單元格A1包含一個數字,單元格A2包含文本,則公式="A1+A2"將返回錯誤值#VALUE!。可以用SUM工作表函數將這兩個值相加(SUM函數忽略文本):=SUM(A1:A2)。 

  2)將單元格引用、公式或函數作爲數組常量輸入。 

  解決方法:確認數組常量不是單元格引用、公式或函數。 

  3)賦予需要單一數值的運算符或函數一個數值區域。 

  解決方法:將數值區域改爲單一數值。修改數值區域,使其包含公式所在的數據行或列。 

  3.#DIV/O! 

  當公式被零除時,將會產生錯誤值#DIV/O!。在具體操作中主要表現爲以下兩種原因。 

  1)在公式中,除數使用了指向空單元格或包含零值單元格的單元格引用(在Excel中如果運算對象是空白單元格,Excel將此空值當作零值)。 

  解決方法:修改單元格引用,或者在用作除數的單元格中輸入不爲零的值。 

  2)輸入的公式中包含明顯的除數零,例如:公式=1/0。 

  解決方法:將零改爲非零值。 

  4.#N/A 

  當在函數或公式中沒有可用數值時,將產生錯誤值#N/A。注意,這個標識後面沒有感嘆號。 

  解決方法:如果工作表中某些單元格暫時沒有數值,請在這些單元格中輸入"#N/A",公式在引用這些單元格時,將不進行數值計算,而是返回#N/A。 

  5.#REF! 

  刪除了由其他公式引用的單元格,或將移動單元格粘貼到由其他公式引用的單元格中。當單元格引用無效時將產生錯誤值#REF!。 

  解決方法:更改公式或者在刪除或粘貼單元格之後,立即單擊"撤消"按鈕,以恢復工作表中的單元格。 

  6.#NUM!

  當公式或函數中某個數字有問題時將產生錯誤值#NUM!。 

  1)在需要數字參數的函數中使用了不能接受的參數。 

  解決方法:確認函數中使用的參數類型正確無誤。 

  2)由公式產生的數字太大或太小,Excel不能表示。 

  解決方法:修改公式,使其結果在有效數字範圍之間。 

  7.#NULL!

  使用了不正確的區域運算符或不正確的單元格引用。當試圖爲兩個並不相交的區域指定交叉點時將產生錯誤值#NULL!。 

  解決方法:如果要引用兩個不相交的區域,請使用聯合運算符逗號(,)。公式要對兩個區域求和,請確認在引用這兩個區域時,使用逗號。如果沒有使用逗號,Excel將試圖對同時屬於兩個區域的單元格求和,由於A1:A13和c12:c23並不相交,它們沒有共同的單元格所以就會出錯。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章