Table_array 最后一列中的 VLOOKUP

VLOOKUP in last column of Table_array

我知道 VLOOKUP 搜索 table 的第一列以查找值,然后它从同一行和不同的用户指定列中获取值。下面的代码returns数据来自第2列,B列

VLOOKUP(5,$A:B100,2)

有没有办法将 return 列设置为输入 table 的最后一列?类似于以下内容,将分别 return 来自 B、P 和 AC 列的数据。

VLOOKUP(5,$A:B100,end)
VLOOKUP(5,$A:P100,end)
VLOOKUP(5,$A:AC100,end)

或者,有没有办法获取当前列号并将其用作索引?

VLOOKUP(5,$A:B100,current_column_number)

我想编写一个 VLOOKUP 公式,然后能够将其直接拖过电子表格,以便 B100 变为 C100、D100、E100 等,并且列查找会相应地发生变化。

更新

我可以使用 COLUMN 函数执行替代方法,但它需要编程一个固定的偏移量并且看起来不那么可靠。我还是想知道是否有 "end" 选项。

您可以使用Excel COLUMN() 函数将列引用转换为数字索引到VLOOKUP table。试试这个:

VLOOKUP(5, $A:B100, COLUMN(B2))
VLOOKUP(5, $A:P100, COLUMN(P2)
VLOOKUP(5, $A:AC100, COLUMN(AC2))

实际操作中,可以直接输入我上面给出的第一个公式,然后复制到右边即可。每次复制都会自动将列号移到末尾

=VLOOKUP(5,$A:B100,COLUMNS($A:B100))

不幸的是,你不能简单地拖动它,你需要替换,因为嵌套函数中写了两个等效范围。
COLUMNS 有效地计算范围内的列,给出 VLOOKUP 的 end 变体所需的确切结果。

编辑 向 OP 展示简单的拖动功能是什么样的:

Function VLOOKUP2(Expected As Variant, Target As Range)
x = Target.Columns.Count
VLOOKUP2 = Application.WorksheetFunction.VLookup(Expected, Target, x)
End Function

您可以在保持 ($) 计数范围的一侧的同时使用计数函数,从而为您提供一个 Vlookup 可以使用的整数。

类似于:

VLOOKUP(5,$A:B100,COUNT($A:A2))

您可能需要根据范围的起始位置向计数函数添加 +- 1

它有效地完成了您已经对 vlookup 数组所做的同样的事情