excel - 如何在 excel 中使用 2 个条件进行 Vlookup

标签 excel vba vlookup

我正在评估我的投资组合,并以如下形式记录下来:

excel

我希望从其中任何一个中获得这些股票的利润百分比;

  • 卖出股票:(卖出价/买入价)-1
  • 未售出的股票:(当前价格/买入价)-1

  • 对于 1),我正在考虑通过使用带有 Col B 的“Stock A”和 Col C 的“SELL”的 VLOOKUP 条件来获得股票 A 的最后价格(Col E)(然后显然再次使用带有“SELL”的 VLOOKUP条件更改为“买入”)。

    有没有办法在两个条件下查找值?任何其他建议(例如使用一点 VBA)将不胜感激。

    最佳答案

    一个 VLOOKUP实际上是 INDEX MATCH 的特殊形式(或 XLOOKUP ,从 Office365 开始)。换句话说,VLOOKUP("Value", A:C, 3, FALSE)INDEX(C:C, MATCH("Value", A:A, 0)) 相同, 和 VLOOKUP("Value", A:C, 3, TRUE)INDEX(C:C, MATCH("Value", A:A, 1)) 相同

    然后,创建一个 VLOOKUP等价于检查多列,我们需要创建一个 MATCH功能做同样的事情。幸运的是,这可能是使用数组计算。

    本质上,我们替换了 MATCH 的第二个参数。 (要查找的值列表)使用根据我们的条件创建数组的公式,然后我们在列表中搜索条件为真的位置。例如,如果我们的条件是 Column B = "Stock A"Column C = "BUY" ,那么我们的数组计算是(B:B="Stock A")*(C:C="Buy") ,以及我们的MATCH看起来像这样:

    MATCH(1, (B:B="Stock A")*(C:C="BUY"), 0)
    

    (在 bool 或按位级别,*AND 相同:TRUE*TRUE=TRUEFALSE*FALSE=FALSETRUE*FALSE=FALSE)

    通常最好限制行数,而不是使用整列(速度很慢)。您可以手动执行此操作:
    =INDEX($E$1:$E$5, MATCH(1, ($B$1:$B$5="Stock A")*($C$1:$C$5="BUY"), 0))
    

    或者您可以使用 INDEX 动态执行此操作和 COUNTA :
    =INDEX($E$1:INDEX($E:$E, COUNTA($A:$A)), MATCH(1, ($B$1:INDEX($B:$B, COUNTA($A:$A)), ="Stock A")*($C$1:INDEX($C:$C, COUNTA($A:$A)), ="BUY"), 0))
    

    最后说明:MATCH函数将从列表的顶部开始,并向下工作直到第一个匹配。如果这些是日期顺序,并且您想找到最后一个匹配项,那么 Office356 用户有 the XMATCH function可用,它有一个额外的参数,用于决定搜索是先到后 ( XMATCH(.., .., .., 1) )、后到先 ( XMATCH(.., .., .., -1) )、升序二叉搜索 ( XMATCH(.., .., .., 2) ) 还是降序二叉搜索 ( XMATCH(.., .., .., -2))

    否则,您可能必须使用 SUMPRODUCT获取 MAX符合您条件的日期,并将其包含在您的 MATCH 中条件(SUMPRODUCT(MAX(A:A*(B:B="Stock A")*(C:C="BUY")))

    关于excel - 如何在 excel 中使用 2 个条件进行 Vlookup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62298030/

    相关文章:

    sorting - Vlookup 并检查单元格是否包含其他条件

    string - 循环浏览工作簿但排除某些工作表?

    excel - 如何提取公式中使用的单元格?

    excel - 我可以通过 vlookup 在单元格中找到某个单词吗?

    excel - 在设置属性之前是否有任何理由检查它是否已设置?

    multithreading - MS Access 中的 VBA + 线程

    match - Excel : Check if Cell value exists in Column, 并在同一行但不同列中返回一个值

    java - 无法使用 Apache POI 删除空行 Excel 文件

    excel - Excel 中的单词替换宏不起作用

    excel - 如何使用另一个单元格的值参数化函数的范围参数