回覆列表
  • 1 # 使用者9555269305865

    朋友,是不是兩張表的人名是一樣的呢?人名是否有重複,如果有重複的先把這些重複的先隔離出來,然後用函式vlookup輕鬆解決問題。

    vlookup函式

    在表格或數值陣列的首列查詢指定的數值,並由此返回表格或陣列中該數值所在行中指定列處的數值。

    這裡所說的“陣列”,可以理解為表格中的一個區域。陣列的列序號:陣列的“首列”,就是這個區域的第一縱列,此列右邊依次為第2列、3列……。假定某陣列區域為b2:e10,那麼,b2:b10為第1列、c2:c10為第2列……。

    語法:

    vlookup(查詢值,區域,列序號,邏輯值)

    “查詢值”:為需要在陣列第一列中查詢的數值,它可以是數值、引用或文字串。

    “區域”:陣列所在的區域,如“b2:e10”,也可以使用對區域或區域名稱的引用,例如資料庫或資料清單。

    “列序號”:即希望區域(陣列)中待返回的匹配值的列序號,為1時,返回第一列中的數值,為2時,返回第二列中的數值,以此類推;若列序號小於1,函式vlookup返回錯誤值#value!;如果大於區域的列數,函式vlookup返回錯誤值#ref!。

    “邏輯值”:為true或false。它指明函式vlookup返回時是精確匹配還是近似匹配。如果為true或省略,則返回近似匹配值,也就是說,如果找不到精確匹配值,則返回小於“查詢值”的最大數值;如果“邏輯值”為false,函式vlookup將返回精確匹配值。如果找不到,則返回錯誤值#n/a。如果“查詢值”為文字時,“邏輯值”一般應為false。另外:

    ·如果“查詢值”小於“區域”第一列中的最小數值,函式vlookup返回錯誤值#n/a。

    ·如果函式vlookup找不到“查詢值”且“邏輯值”為false,函式vlookup返回錯誤值#n/a。

    下面舉例說明vlookup函式的使用方法。

    假設在sheet1中存放小麥、水稻、玉米、花生等若干農產品的銷售單價:

    ab

    1農產品名稱單價

    2小麥0.56

    3水稻0.48

    4玉米0.39

    5花生0.51

    …………………………………

    100大豆0.45

    sheet2為銷售清單,每次填寫的清單內容不盡相同:要求在sheet2中輸入農產品名稱、數量後,根據sheet1的資料,自動生成單價和銷售額。設下表為sheet2:

    abcd

    1農產品名稱數量單價金額

    2水稻10000.48480

    3玉米20000.39780

    …………………………………………………

    在d2單元格里輸入公式:

    =c2*b2;

    在c2單元格里輸入公式:

    =vlookup(a2,sheet1!a2:b100,2,false)。

    如用語言來表述,就是:在sheet1表a2:b100區域的第一列查詢sheet2表單元格a2的值,查到後,返回這一行第2列的值。

    這樣,當sheet2表a2單元格里輸入的名稱改變後,c2裡的單價就會自動跟著變化。當然,如sheet1中的單價值發生變化,sheet2中相應的數值也會跟著變化。

    其他單元格的公式,可採用填充的辦法寫入。

    vlookup函式使用注意事項

    說到vlookup函式,相信大家都會使用,而且都使用得很熟練了。不過,有幾個細節問題,大家在使用時還是留心一下的好。

    一.vlookup的語法

    vlookup函式的完整語法是這樣的:

    vlookup(lookup_value,table_array,col_index_num,range_lookup)

    1.括號裡有四個引數,是必需的。最後一個引數range_lookup是個邏輯值,我們常常輸入一個0字,或者false;其實也可以輸入一個1字,或者true。兩者有什麼區別呢?前者表示的是完整尋找,找不到就傳回錯誤值#n/a;後者先是找一模一樣的,找不到再去找很接近的值,還找不到也只好傳回錯誤值#n/a。這對我們其實也沒有什麼實際意義,只是滿足好奇而已,有興趣的朋友可以去體驗體驗。

    2.lookup_value是一個很重要的引數,它可以是數值、文字字串、或參照地址。我們常常用的是參照地址。用這個引數時,有兩點要特別提醒:

    a)參照地址的單元格格式類別與去搜尋的單元格格式的類別要一致,否則的話有時明明看到有資料,就是抓不過來。特別是參照地址的值是數字時,最為明顯,若搜尋的單元格格式類別為文字,雖然看起來都是123,但是就是抓不出東西來的。

    而且格式類別在未輸入資料時就要先確定好,如果資料都輸入進去了,發現格式不符,已為時已晚,若還想去抓,則需重新輸入。

    b)第二點提醒的,是使用時一個方便實用的小技巧,相信不少人早就知道了的。我們在使用參照地址時,有時需要將lookup_value的值固定在一個格子內,而又要使用下拉方式(或複製)將函式新增到新的單元格中去,這裡就要用到“$”這個符號了,這是一個起固定作用的符號。比如說我始終想以d5格式來抓資料,則可以把d5弄成這樣:$d$5,則不論你如何拉、複製,函式始終都會以d5的值來抓資料。

    3.table_array是搜尋的範圍,col_index_num是範圍內的欄數。col_index_num不能小於1,其實等於1也沒有什麼實際用的。如果出現一個這樣的錯誤的值#ref!,則可能是col_index_num的值超過範圍的總欄位數。

    二.vlookup的錯誤值處理。

    我們都知道,如果找不到資料,函式總會傳回一個這樣的錯誤值#n/a,這錯誤值其實也很有用的。比方說,如果我們想這樣來作處理:如果找到的話,就傳回相應的值,如果找不到的話,我就自動設定它的值等於0,那函式就可以寫成這樣:

    =if(iserror(vlookup(1,2,3,0))=true,0,vlookup(1,2,3,0))

    這句話的意思是這樣的:如果vlookup函式返回的值是個錯誤值的話(找不到資料),就等於0,否則,就等於vlookup函式返回的值(即找到的相應的值)。

    這裡面又用了兩個函式。

    第一個是iserror函式。它的語法是iserror(value),即判斷括號內的值是否為錯誤值,如果是,就等於true,不是,就等於false。

    第二個是if函式,這也是一個常用的函式的,後面有機會再跟大家詳細講解。它的語法是if(條件判斷式,結果1,結果2)。如果條件判斷式是對的,就執行結果1,否則就執行結果2。舉個例子:=if(d2=””,”空的”,”有東西”),意思是如d2這個格子裡是空的值,就顯示文字“空的”,否則,就顯示“有東西”。(看起來簡單吧?其實程式設計序,也就是這樣子判斷來判斷去的。)

    三.含有vlookup函式的工作表檔案的處理。

    一般來說,含有vlookup函式的工作表,如果又是在別的檔案裡抓取資料的話,檔案往往是比較大的。尤其是當你使用的檔案本身就很大的時候,那每次開啟和存檔都是很受傷的事情。

    有沒有辦法把檔案壓縮一下,加快開啟和存檔的速度呢。這裡提供一個小小的經驗。

    下面詳細的說一下它的原理。

    1.含有vlookup函式的工作表,每次在儲存檔案時,會同時儲存一份其外部連結的檔案。這樣即使在單獨開啟這個工作表時,vlookup函式一樣可以抓取到數值。

    2.在工作表開啟時,微軟會提示你,是否要更新遠端參照。意思是說,你要不要連線最新的外部檔案,好讓你的vlookup函式抓到最新的值。如果你有足夠的耐心,不妨試試。

    3.瞭解到這點,我們應該知道,每次單獨開啟含有vlookup函式的工作表時,裡面抓取外部檔案的數值,只是上次我們存檔時儲存的值。若要連結最新的值,必須要把外部檔案同時開啟。

  • 中秋節和大豐收的關聯?
  • 紋眉顏色怎麼選擇?