愛文的撲浪

2008年8月7日 星期四

使用VLOOKUP函數時,為何無法傳回正確答案--數字格式/文字格式

在使用VLOOKUP這一類的函數時,常有使用者反映「明明輸入正確的數字,但公式無法傳回所要的結果」。

這個問題,通常是因為用來比對的條件(Lookup_value)和比對的欄位(Table_array)所使用的儲存格格式不同所造成。尤其是當比對欄位的資料是由網路上抓下來的時候更容易發生。
網頁上的資料,直接貼到EXCEL時,通常會直接用文字格式貼上。但文字格式的阿拉伯數字和數字格式的阿拉伯數字,對人眼而言,並無區別。但對電腦做運算時,就是兩種不同的資料。

EXCEL的設定中,所有數值的前置零,除非有特別設定儲存格格式,否則一律會被省略。(在數字1的左方加上再多位數的0,其值仍然是1,故無存在之必要。)
但在某些特殊需求時,例如電話號碼,我們又希望輸入[02]時,電腦也是顯示[02]。此時最快的方式,就是將儲存格設為文字格式,如此輸入的資料便會忠實的顯示在EXCEL的儲存格中。

在有上述的兩種情形時,若使用VLOOKUP這一類查詢與參照函數時,在公式中將比對條件以數字格式輸入,便會產生輸入正確,但無法得到所要的結果。

為了解決這個問題,可以在輸入比對條件時,就將數字以文字格式輸入,

l 若是直接在公式中輸入時,就在數字的前後加上「"」,例如「"02"

l 若是比對條件是抓取另一儲存格資料時,則可將該儲存格設定為文字格式,或是在輸入時,先在數字前面加上「'」,例如「'02

一般而言,完成上述動作之後,因為比對條件與比對欄位的格式相同,便不會有輸入正確數值,但無法傳回所求答案之情形。

換種方式形容,這就是古人說的「見山是山,見山不是山」。EXCEL其實是很有哲理的軟體。呵呵!

2008/08/08補充:

還有一種可能性是,比對欄位中的資料包含空白,因為空白看不見,所以人眼會認為資料是完全相同。但電腦在比對時,即使人眼看不出的空白也會拿來比較。

1 則留言:

whitefox 提到...

愛文大大又復出囉!本來也想寫一篇類似的文章,卻一直沒有時間和興緻來寫,那句「見山是山,見山不是山」真是經典,希望大家看完文章之後,能夠「見山還是山」,那就太完美了。