【问题标题】:INDEX MATCH based on two criteriaINDEX MATCH 基于两个标准
【发布时间】:2018-11-26 22:32:17
【问题描述】:

我有一个 ID 列表和相应的计划。

ID              Plan
123456          Ca1
456789          Ca2
456789          Ca3
34567           Ca1
67899           Ca1
67899           Ca5

我需要编写一个查找来检查 ID 是否存在,如果存在,请检查计划是否等于列标题,即计划(Ca1、Ca2 等)。如果是,则查找返回 1,否则返回 0。

所以,我的最终结果看起来像......

ID          Ca1     Ca2   Ca3   Ca5
123456      1       0      0     0
456789      0       1      1     0
34567       1       0      0     0
67899       1       0      0     1

我当前的查找如下,其中$B$1 是列名。但是,它仅适用于列表中的最后一个 ID,并为具有该特定计划的其他 ID 返回 0。

=IF(INDEX([Combined.xlsx]IDs!$A:$C,MATCH($B2,[Combined.xlsx]IDs!$A:$A,0),MATCH("Plan",[Combined.xlsx]IDs!$A$1:$N$1,0))=$B$1,1,0)

我如何调整我的公式以对具有指定计划的所有 ID 返回 1?建议的公式不适用于我想要的解决方案。

【问题讨论】:

标签: excel match


【解决方案1】:

SUMPRODUCT 是最简单的解决方案。

使用列表对象甚至更好:

【讨论】:

  • 这很好用,谢谢。我对 SUMPRODUCT 不太熟悉,你能解释一下这个特定的实现是如何工作的吗?
  • @n8_ - 它比较两个矩阵,当它们中的值都由变量指定时,它们返回 TRUE,它被转换为 1 并显示为 TRUE。谷歌搜索更多示例应该没有问题。
  • 谢谢@Michal Rosa。谷歌搜索不是问题,但要找到足够熟练的人来解释它是如何工作的。感谢您的帮助。
【解决方案2】:

您也可以使用Countifs() 公式。

=COUNTIFS($A$2:$A$7,$D2,$B$2:$B$7,E$1)

【讨论】:

    猜你喜欢
    • 2021-01-21
    • 2020-09-07
    • 2022-09-23
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多