【问题标题】:Vlookup on another table with multiple criteria在具有多个条件的另一个表上进行 Vlookup
【发布时间】:2016-09-05 07:02:02
【问题描述】:

嗨, 我有一张付款清单和一张表格,上面有收款员做出的承诺。

我想按 ID(和日期)将与债务人达成协议的最后一个收款员分配到付款表中。

例如:在 id 1111 上有两个承诺:由 Morticia Adams 和 Gulliver;但我选择 Gulliver 是因为他在该日期范围内做出了最后一个承诺,并考虑了付款日期。

同样,对于 id 5425,最后一个承诺是由 Marie Anne 做出的,因为 23.10.2016(付款日期)介于 12.10.2016 和 26.10.2016(承诺日期)之间。

如果有人能指导我完成这件事,我将不胜感激。

谢谢!

【问题讨论】:

  • 詹姆斯邦德不应该出现在付款 524248 中吗?卡尔的谈话是在付款后
  • 你说得对,应该是邦德;这是一个手写的例子;我的错误
  • 那我的回答有帮助吗?

标签: excel excel-formula match vlookup


【解决方案1】:

免责声明:此公式生成 OP 所描述的内容,而不是图片显示的内容。

一种方法是找到满足条件的最新对话日期:

  • promise 表中行的支付 ID 等于支付表中的支付 ID。
  • 付款日期大于或等于通话日期。
  • 付款日期小于或等于约定的付款日期。

我们可以这样做:

{=MAX(($A$3:$A$8 = A12) * (B12 >= $B$3:$B$8) * (B12 <= $C$3:$C$8) * $B$3:$B$8)}

然后将日期与付款 ID 相结合,得到一个唯一键,我们可以使用它来查找名称。

{=MAX(($A$3:$A$8 = A12) * (B12 >= $B$3:$B$8) * (B12 <= $C$3:$C$8) * $B$3:$B$8) & A12}

最后我们可以执行索引匹配,在 promises 表中的日期和付款 ID 的串联范围内查找上述公式的输出

{=INDEX(
    $D$3:$D$8,
    MATCH(
      MAX(($A$3:$A$8 = A14) * (B14 >= $B$3:$B$8) * (B14 <= $C$3:$C$8) * $B$3:$B$8) & A14,
      $B$3:$B$8 & $A$3:$A$8, 
      0))}

{} 表示您必须使用 Ctrl + Shift + Enter

输入公式

请注意,如果您命名范围,这将更具可读性和直观性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多