Board logo

標題: [發問] 請問Vlookup+left 巢狀函數 值出不來 出現 #N/A 怎麼辦? (已解決) [打印本頁]

作者: sax868    時間: 2012-4-16 18:09     標題: 請問Vlookup+left 巢狀函數 值出不來 出現 #N/A 怎麼辦? (已解決)

本帖最後由 sax868 於 2012-5-8 23:05 編輯

[attach]10466[/attach][attach]10466[/attach][attach]10465[/attach][attach]10465[/attach]

各位大大晚安!

如附件。請問我用兩個函數分開寫 再把第一個=LEFT(B3,7)複製、貼上且轉換成數字則第二個函數值vlookup 就有答案,但是當我把兩個函數寫在一起時(^=VLOOKUP(LEFT(B2,7),Vlookup!A:B,2,FALSE)怎麼就出現#N/A了呢??(改通用/數字/文字都沒有用...)

拜託麻煩請高手救我這個呆瓜...謝謝!!:'(

弱女子留
作者: register313    時間: 2012-4-16 18:25

回復 1# sax868

J2=VLOOKUP(--LEFT(B2,7),Vlookup!A:B,2,FALSE)
作者: sax868    時間: 2012-4-16 20:08

回復 2# register313


出現了!!感謝您的大恩大德~讓我總算解脫了!!感恩感恩~~
作者: ajagow    時間: 2012-4-16 20:39

EXCEL 解釋
LEFT()  &  LEFTB()
LEFT 傳回一文字字串中第一個字元或字元組,以您指定字元組的數值為準。
LEFTB 傳回一文字字串中第一個字元或字元組,以您指定字元組的數值為準。這個函數是使用在二位元的字元組。
語法
LEFT(text,num_chars)
LEFTB(text,num_bytes)
Text    為含有所要選錄文字之字串。
Num_chars 指定您要 LEFT 選錄的字元數。
num_chars 必須大於或等於零。
如果 num_chars 大於文字的長度,LEFT 將傳回所有的文字。
如果 num_chars 被省略了,則假定其值為 1。
Num_bytes 指定您要 LEFTB 選錄的字元數 (依據位元組)。

VLOOKUP()
在一陣列或表格的最左欄中尋找含有某特定值的欄位,再傳回同一列中某一指定儲存格中的值。如果用來比對的數值位於您所要尋找的資料之左邊欄時,就必須使用到 VLOOKUP 函數,而非 HLOOKUP 函數。
VLOOKUP 中的 V 表示「Vertical」之意。
語法  VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
Lookup_value    是您打算在陣列的最左欄中搜尋的值。Lookup_value 可以是數值、參照位址或文字字串。
Table_array    是要在其中搜尋的資料表格。通常是儲存格範圍的參照位址或類似資料庫或清單的範圍名稱。
如果 range_lookup 為 TRUE,則 table_array 第一欄的值必須以遞增次序排列:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE;否則 VLOOKUP 無法給予正確的值。如果 range_lookup 為 FALSE,則 table_array 不須事先排序。
您可以選擇 [資料] 功能表上的 [排序] 命令,選取 [遞增],讓值依遞增順序排列。
Table_array 第一欄裡的值,可以是文字、數字或邏輯值。
字母的大小寫被視為是相同的。
Col_index_num    是個數值,代表所要傳回的值位於 table_array 中的第幾欄。如果 col_index_num 引數值為 1,傳回在 table_array 第一欄的值,如果 col_index_num 引數值為 2,傳回 table_array 第二欄的值,依此類推。如果 col_index_num 小於 1,則 VLOOKUP 傳回錯誤值 #VALUE!;如果 col_index_num 超過 table_array 總欄數,則 VLOOKUP 傳回錯誤值 #REF!。
Range_lookup    是個邏輯值,用來指定 VLOOKUP 要尋找完全符合或部分符合的值。當此引數值為 TRUE 或被省略了,會傳回部分符合的數值;也就是說,如果找不到完全符合的值時,會傳回僅次於 lookup_value 的值。當此引數值為 FALSE 時,VLOOKUP 函數只會尋找完全符合的數值,如果找不到,則傳回錯誤值 #N/A。
註解
如果 VLOOKUP 函數找不到 lookup_value,且 range_lookup 為 TRUE 時,則使用僅次於 lookup_value 的值。
如果 lookup_value 比 table_array 第一欄中的最小值還小,則 VLOOKUP 傳回錯誤值 #N/A。
如果 VLOOKUP 函數找不到 lookup_value,且 range_lookup 為 TRUE 時,則 VLOOKUP 傳回錯誤值 #N/A。
作者: Hsieh    時間: 2012-4-16 22:00

回復 4# ajagow

問題重點在於搜尋值得資料型態必須與表格資料型態相同才能正確比對。
LEFT得到的是字串型態,所以加上--強制轉成數值,才能與表格中的資料型態一致。
作者: sax868    時間: 2012-5-6 18:56

回復 4# ajagow
好受用!好受用!!感謝分享!!
作者: sax868    時間: 2012-5-6 18:59

回復 5# Hsieh


  原來如此~感謝超級版主指點!!
作者: ajagow    時間: 2012-5-16 06:38

回復 6# sax868
大家一起貢獻己能
EXCELVBA 會越來越貼近
前天去沙鹿區李眼科檢查視力,李英麒醫師,空檔時也自己以寫多頁VBA 
他的程式我喵了一下,程式每行指令 後面督有註解
功能作業交代非常清楚
真的好厲害,我聽說這位醫師是台大醫院眼科頂尖醫師群裡的一員,回鄉照顧鄉民。
那個精神只得學習
作者: norafang    時間: 2014-1-26 17:51

回復 5# Hsieh
剛遇到VLOOKUP的類似問題,後來用搜索找到這篇文章,再看到Hsieh大下面的關健說明,才解決了我的問題
"LEFT得到的是字串型態,所以加上--強制轉成數值,才能與表格中的資料型態一致。"

在這裡舉出我的例子,以提供後續若有人遇到和我一樣的問題時可以得救

我原本的A1儲存格為公式=LEFT(AA3,4)
當我在B1儲存格想帶出參照表中一樣數值時,產生N/A的回傳
原來公式=LEFT(AA3,4)帶出來的不是一個數值,改用公式=--LEFT(AA3,4)就解決了

雖然解決了我的問題,但我仍有個小小的疑問是,為何我用手動改儲存格格式為"數值",仍然呈獻#N/A,這和我用=--LEFT(AA3,4)不同嗎?????
作者: Hsieh    時間: 2014-1-26 23:01

回復 9# norafang

雖然解決了我的問題,但我仍有個小小的疑問是,為何我用手動改儲存格格式為"數值",仍然呈獻#N/A,這和我用=--LEFT(AA3,4)不同嗎?????
你是說A1仍然是公式=LEFT(AA3,4),只是更改格式設定嗎?
這樣仍然得到字串。
作者: norafang    時間: 2014-1-26 23:49

回復 10# Hsieh

感謝H大的回覆,

所以結論是不用=--LEFT(AA3,4)公式帶是帶不出數值?

我想起有時在比對時,會因為比對值和參照值的數值或字串對不起來而無法使用vlookup




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)