繁体   English   中英

VBA:通过多个列进行vlookup

[英]VBA: vlookup through multiple columns

这是我的第一个问题,所以我将尽力格式化此问题。 我想在多个栏目中使用vlookup函数。 似乎不可能在大数据集的公式中进行操作,因此也许具有VBA知识的人可以为我提供帮助。

在我的excel文件中,我有两个电子表格:具有1列“ A”和16868个不同进程ID的Sheet1。 具有从“ A”到“ HX”的列的Sheet2,其中“ A:HW”是不同的进程ID(每列具有不同的行数),在“ HX”列中,我有一个特定进程行的区域。

我想要实现的是对sheet1列“ A”进行vloop ,该列将在表sheet2中查找每个记录,并在找到它时返回“ HX”。

在示例中:我在table_array sheet2“ A:HX”中的sheet1中寻找“ A2”单元格。 如果找到,则返回同一行中的“ HX”列中的单元格。 这里的技巧是,当外观值不在sheet2列“ A”中时,则应在列“ B”中依次查找,然后在“ C”中依次类推,直到“ HW”。 有一个选项,其中查找值可能根本不在sheet2中,然后公式应返回“ 0”。 是否可以在VBA或excel公式中执行此操作?

首先,请不要使用VLOOKUP 曾经

INDEX/MATCH组合在各个方面总是更好。 它更快,更灵活,更强大,因为如果您插入列,它不会中断。 由于不需要计数列,因此(可以说)它也更易于使用。

无论如何,回到眼前的问题。 您可以为此使用INDEX/SUMPRODUCT组合:

在此处输入图片说明

=INDEX(<range of return values>),SUMPRODUCT(--MAX((<range to search in>=<value to search for>)*ROW(<range to search in>)))-(ROW(<range to search in>)-1))

SUMPRODUCT返回找到该值的最后一个行号。

最后一位-(ROW(<range to search in>)-1)只是使返回值相对于搜索范围(而不是绝对行号)。

然后,INDEX使用该值从HX列中选择一个值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM