如何使用vlookup返回表中的最後一個值?

如何使用vlookup返回表中的最後一個值?

例如,我的表(我稱之為 Table1)(我已將其定義為名稱)會在新資料進入時新增至其中。 1的?

答案1

第一列是數字還是文字?您可以使用範圍查找選項並搜尋將大於表中任何值的值。如果您的第一列包含單字,請嘗試:

=VLOOKUP("ZZZZZ", Table1, 2, TRUE)

或者,如果您的第一列是五位數字,請嘗試:

=VLOOKUP("99999", Table1, 2, TRUE)

我突然想到這也可以,但速度較慢。將 Table1 的第一列定義為 Table1Col1。

=VLOOKUP(MAX(Table1Col1), Table1, 2, TRUE)

答案2

如果您想要動態更新您選擇的資料列,可以使用 MATCH() 公式來填入 col_index_num 值。例如:

=VLOOKUP("d", Table1, 2, FALSE)

將傳回第二列中的值。然而:

=VLOOKUP("d",Table1[#All],MATCH("value2",Table1[#Headers],0),FALSE)

將傳回標題為 value2 的欄位中的值。更動態的是,你可以這樣寫:

=VLOOKUP("d", Table1, MATCH(Table1[[#Headers],[value2]],Table1[#Headers],0), FALSE)

如果您重新命名表列標題,它將自動更新

答案3

=VLOOKUP(A2,Table1,2,MAX(Table1Col2))

解釋: =VLOOKUP(**Data being looked up**,**Name of Table or data range**,**column of data being looked up**,MAX(**Name or data range of data being looked up**))

它將傳回與lookup_value相符的行的最後一個值

答案4

答案主要是為了為目前搜尋者提供現代答案(「現代」= 2021)。

你會用XLOOKUP().它不是完美的替代品,也不適合某些情況。但這是一個簡單的問題,其測試版是為了實現這一目的而重新設計的。

令人感興趣的功能是它有一個參數可以從結尾向後搜尋開頭,所以...... slamdunk。

不過,閱讀答案後,我注意到這個問題沒有明確的答案,在發佈時會起作用。中間的答案根本沒有解決問題,而第三個答案更是撒謊到了極點。它使用一些奇特的東西來產生布林值,TRUE當只是輸入時TRUE(或0對他們來說更喜歡什麼)會做完全相同的事情。幾乎給人一種印象,回答者希望一些看起來很奇特、自命不凡的東西能夠呈現出有價值的外觀。哎呀。這並不是不正確,因為雖然它可以給出不正確的答案,但這只是偶然的。不錯的機會,因為失敗的主要模式是當所需值絕對是範圍中的最後一項時,但考慮到這可能是基於日期的,所以發生這種情況的機會相當大。

第一個答案提供了一些實際的嘗試,根據您的數據,其中一個或受它們啟發的東西可能適合您。不像第三個,它是受騙子啟發的,會讓很多人對結果產生強烈的信心,當老闆大喊失敗時,他們會目瞪口呆。

然而,它們只是實際的東西,並不一定是解決方案。有一個標準方法可以在互聯網上的“許多地方”使用,並LOOKUP()以巧妙的方式使用。但是更直接、更容易理解其運作原理的東西呢? (對大多數人來說,這種LOOKUP()方法雖然聰明,非常聰明,而且實際上非常簡單,但只是令人困惑,在第一眼階段就失去了他們,所以雖然他們可以輕鬆掌握它,但他們永遠不會意識到這一點。

可以說,該INDEX()函數可用於將表格顛倒過來,因此呈現給公式其餘部分的第一行是原始(“物理”)範圍中的最後一行。這是透過為 row 參數指定產生一個從最高行號(最高「索引」)開始並下降到 1 的數字序列來完成的。

這是在 2012/2013 年完成的,使用了一個巧妙的技巧來產生序列中的行號: ROW(1:100)給出1, 2, 3, ... 98, 99, 100 的序列。認為你可以使用ROW(100:1)但是Excel 可以幫助您「修復」您的愚蠢錯誤ROW(1:100)——無論您是否喜歡。沒有辦法克服這一點。但是,如果您知道使用的最高行號,並且這不是問題,則可以向其添加 1,因此在本例中為 100 + 1,然後從中減去 Excel 為您提供的序列。因為你有 101 - 1、100 - 2、100 - 3,...,你得到 100、99、98,...一直到 101 - 100 或 1。

將其用作行參數,以便INDEX()將行反轉為最後一個到第一個。

對於專欄來說INDEX(),你必須用過去的平常經驗來思考VLOOKUP()。通常,您給它一個可能有很多列的表/範圍。所以也許A2:W900。您想要搜尋 A 列並在 T 列(或 20 列)中找到某些內容。所以你可能有類似的東西VLOOKUP("cow",A2:W900,20,false)。好吧,INDEX()讓您使用一些技巧來僅指定某些列,而不是使用給定範圍內的所有列:數組常數。

Array Constants是一種向 Excel 提供值數組的方法。它們看起來像這樣: 第三個參數(列參數)的{"a","cow",13,999,"fisherman","circu"}. So in this example, you want to have columns A and T, or 1 and 20, so you'd giveINDEX() {1,20}`。

所有這一切的要點是INDEX()建立一個虛擬表以在公式中代替真實表使用。虛擬表沒有行 2-900 和列 AW。它只有第 900 行到第 2 行以及 A 列和 T 列。對於範例來說,該函數如下所示:

INDEX( A2:W900, 900-ROW(1:899), {1,20} )

(請記住,您使用的是第2 行到第900 行,因此只有899 行,而不是900 行。因此,Excel 第2 行是範圍內的「索引」1,Excel 第900 行是索引899。 899 + 1 = 900,因此您使用900,而不是 901。 那麼公式中的數字就「有意義」。

現在您有一個僅包含 A 列和 T 列的虛擬表,首先是第 900 行,最後是第 2 行,這是您在VLOOKUP().因此,請尋找單字“cow”並獲得任何精確匹配的完整公式...從末尾開始並返回到開頭,如下所示:

=VLOOUP( "cow", INDEX( A2:W900, 900-ROW(1:899), {1,20} ), 2, false )

由於「真實」表的資料是第 2-900 行,因此這是透過使用將資料反轉為第 900-2 行的表來尋找最後一個匹配項。它只使用兩列,一列是您在 IN 中查找的一列,另一列是您從中獲取資料的列,而不是所有 23 列資料。由於只有兩列,因此傳回答案的列總是很簡單:它是第 2 列。

這永遠有效。

順便說一句,我們使用的數組常數,{1,20}...您認為反轉這些值會做什麼?如在{20,1}.它們顛倒了列的順序。因此,如果您希望使用VLOOKUP(),但本範例中的查找列是 T 列,並且您想要 A 列的結果,那麼您就不走運了。 (我在美國海軍核電計劃期間發生的那場“運氣不好的事故”。夥計,“OOL”事故......我們早幾年就非常接近創造“LOL”,但是..... .只是......沒有' t...好吧,我想反應堆事故並不是一件可笑的事情,所以也許是最好的,嗯?才能使用VLOOKUP()...不,布埃諾!

但是,由於您建立了一個反轉列的虛擬表,因此您的查找列突然位於左側!布埃諾!

另外,列(或行,但通常是列)的數組常數只能使用一些數字,可以按任何順序使用它們,如果您願意,還可以多次使用它們。

記住「現代方法」:現在我們可以SEQUENCE()直接產生從 899 到 1 的逆序列。

相關內容