excel - VBA:通过多列进行vlookup
问题描述
这是我的第一个问题,所以我会尽力格式化。我想vlookup
在不止一列中使用该功能。在大数据集的公式中似乎不可能做,所以也许有 VBA 知识的人可以帮助我。
在我的 excel 文件中,我有两个电子表格: Sheet1 有一列“A”,有 16868 个不同的进程 ID。Sheet2 的列从“A”到“HX”,其中“A:HW”是不同的进程 ID(每列有不同的行数),在“HX”列中,我有一个用于特定进程行的区域。
我想要实现的是vloop
对 sheet1 列“A”执行操作,该列将在表 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 列中选择一个值。
推荐阅读
- jenkins - Jenkins - Selenium:试图访问 testng failed.xml。?通过 jenkins 运行脚本时该文件将位于何处
- javascript - getStaticProps 不适用于 Nextjs 中的 getInitialProps
- html - 如何设置 MailChimp 模板的样式,以免触发 Gmail 移动优化?
- apache-flink - Flink keyBy 在选项列表上
- next.js - Vercel - TypeError:无法读取未定义的属性“系统”
- swift - 尝试从 Firebase Cloud 获取用户和名称(Swift 中的搜索栏)
- c# - HttpListener 在读取输入流时抛出 HttpListenerException (400)
- excel - 如何通过在 VBA 中引用其动态名称范围来更改单元格属性?
- python - 将数据从 csv 插入到 MongoDb
- javascript - 获取 API 未在 localhost 上使用端口号运行