1. 程式人生 > 資訊 >WPS 新增支援重磅功能,告訴你 XLOOKUP 有多強

WPS 新增支援重磅功能,告訴你 XLOOKUP 有多強

WPS 官微釋出公告,說是自即日起 WPS 開始正式支援 XLOOKUP 函式。很多人就奇怪了,作為一款辦公軟體,增加個函式不是太正常了?這有啥可激動的?其實能讓 WPS“激動”自然是有些道理,理由就是這個 XLOOKUP 實在太強了!

示例 1. 反向查詢

目的:通過“姓名“反查“工號“

公式:=XLOOKUP (G6,B:B,A:A)

日常工作中我們經常會遇到用姓名查工號的情況,由於原始資料中,“工號”欄位通常是位於“姓名”之前,因此直接使用 VLOOKUP 肯定無法得到結果。通常的辦法,是藉助 IF 函式建立一個虛擬陣列”IF ({1,0},B:B,A:A)”,將“工號”與“姓名”臨時對調一下,以滿足 VLOOKUP 的操作需求。不過它的問題就是,對於新手童鞋來說,這個陣列太難理解了。

如果換作 XLOOKUP 呢?很簡單,直接輸入“=XLOOKUP (G6,B:B,A:A)”就行。整個語法基本參照了 VLOOKUP 的習慣,先確定好要查詢的內容(G6),然後告訴表格去哪裡查詢(B:B),最後返回對應列的結果就可以了(A:A)。相比之下,XLOOKUP 的邏輯是不是就清晰多了!

示例 2. 出錯處理

目的:當查詢無結果時,顯示“查無此人“

公式:=XLOOKUP (G6,B:B,A:A,"查無此人")

為了防止 LOOKUP、VLOOKUP 等函式意外出錯,我們通常會在函式外圍包裹一層 IFERROR,用於手工控制出錯資訊的顯示。不過這種做法一來會讓公式變長,二來也不怎麼高效。而 XLOOKUP 的處理方法絕對是簡單粗暴,直接將出錯資訊標在了函式裡。高效的同時,也讓公式更加簡練,就像下面這樣:“=XLOOKUP (G6,B:B,A:A,"查無此人")”。

示例 3. 批量化查詢

目的:通過“工號“查詢該員工所有資訊

公式:=XLOOKUP (G8,A:A,B:E)

編寫搜尋器時,會在原始資料中批量查詢所需的內容。通常有兩種解決方法,一是藉助 VLOOKUP 手工確定要查詢的列,二是通過 COLUMN 函式配合 VLOOKUP 做一個半自動查詢器。

那麼 XLOOKUP 有沒有更簡單的辦法呢?答案是有的,方法就是直接填寫“=XLOOKUP (G8,A:A,B:E)”。語法上依舊沿用了 VLOOKUP 的邏輯,先是確定好要查詢的內容(G8),然後告訴表格去哪裡查詢(A:A),接下來返回 B:E 列裡的對應資訊即可。由於函式的“溢位效應”,相鄰幾個單元格(性別、職務、部門)也會自動填好結果,連拖拽這一步都省去了。

示例 4. 多條件查詢

目的:通過“姓名”和“性別”兩組條件查詢員工資訊

公式:=XLOOKUP (G7&H7,B:B&C:C,D:D)

現實中重名的情況並不少見,當一個條件無法確定一個人時,就要載入第二組條件。比如本例中,小編就使用了“姓名”+“性別”的雙重條件驗證。對於此類需求,傳統的 VLOOKUP 需要藉助 IF 函式生成一個虛擬陣列。而在 XLOOKUP 之下,上述公式可以直接簡化為“=XLOOKUP (G7&H7,B:B&C:C,D:D)”。

示例 5. 模糊查詢

目的:根據分值為每個人標註等級。

公式:=XLOOKUP (D2,$H$2:$H$5,$I$2:$I$5,,-1)

熟悉 VLOOKUP 的小夥伴,大多知道這個函式最後有一個“精確匹配 FALSE”和“近似匹配 TRUE”的小引數。其中的“近似匹配”,就是我們常說的模糊查詢。通常來講,模糊查詢主要用作區域數值的界定,比如 90-100 分為“優秀”、70-89 分為“良好”,類似這樣的分數段篩選,就很適合使用模糊查詢。不過它有一個前提,那就是數值源必須提前使用升序排列,否則無法得到準確結果。

而使用 XLOOKUP 就不用這麼麻煩了,它的第五個引數(輸入公式時會有提示)直接提供了“0”、“-1”、“1”、“2”四種不同匹配條件。以本例使用的“-1”為例,它的含義就是當搜尋結果達不到目標值 499 時,會自動向下查詢(小於 499)。正是藉助這樣一個選項,我們就輕鬆配置出了一個業績等級設定表。

示例 6. 橫向查詢

目的:輸入產品名稱查詢該產品的銷量、銷售額、利潤、利潤率

公式:=XLOOKUP (B7,B1:E1,B2:E2)

在 Excel 中,除了縱向搜尋的 VLOOKUP 外,還有一個支援橫向搜尋的 HLOOKUP。這兩組函式雖然作用不一,但語法卻基本相同。區別是一個在列中查詢,一個在行中查詢。而我們的 XLOOKUP 其實也集合了縱向和橫向兩種查詢機制,除了上面講到的縱向查詢外,你還可以通過變換查詢區域來實現橫向搜尋。具體效果,如上圖所示。

示例 7. 搜尋最後記錄

目的:快速查詢某商品的最新入庫價格

公式:=XLOOKUP (F4,B:B,C:C,,,-1)

很多出入庫表格,都需要查詢最後一次出入記錄。這個看似簡單的要求,實現起來卻不容易。通常我們都是使用 LOOKUP 建立一個虛擬陣列,然後再對其進行查詢。但正如前面所言,這一類東東一來不適合新手理解,二來過多的陣列函式對於系統性能也是拖累。特別在一些大型表格中,頻繁地使用陣列函式,會讓表格變得異常緩慢。

而 XLOOKUP 的加入,讓這個問題變得簡單多了。它的解決方法很簡單,直接用一個引數來搞定。依舊以上文為例,如果想查詢某商品的最近一次入庫價格,只要在它的第 6 引數位中,輸入引數值“-1”。而返回的結果,正是該商品的最後一次入庫價。

寫在最後

怎麼樣?看完上面這些案例,是不是有種豁然開朗的感覺?其實在日常使用中,XLOOKUP 還有邏輯清晰、語句簡練等優勢。

舉個最簡單例子,以往在使用 VLOOKUP 時,查詢範圍後面的列數常常要我們手工去數,而 XLOOKUP 由於直接使用了列標作為返回列,因此也就省掉了這個步驟。

同時由於 XLOOKUP 還是一個全能型選手,特別對於新手來說更加友好,再不用勞神記憶各種複雜的函式和陣列,一個 XLOOKUP 統統就搞定了!