Excel formula 具有多个条件和多个匹配类型的Excel索引匹配:变量2

Excel formula 具有多个条件和多个匹配类型的Excel索引匹配:变量2,excel-formula,Excel Formula,这个问题类似于,但变量不同 我想使用数据A中的两个标准(“活动日期”和“机会名称”)从数据B中提取“阶段”;数据A中的两个条件将具有不同的匹配类型。我试图回答的问题是,“活动发生在什么阶段?”并且相信某种形式的索引匹配是答案的一部分 如果数据A中的两个条件都是match type=exact,我知道我可以使用数组公式: =匹配(查找值\u 1和查找值\u 2,查找数组\u 1和查找数组\u 2,匹配类型) 不幸的是,“活动日期”需要使用“少于”匹配类型,“商机名称”需要使用“精确”匹配类型 数据

这个问题类似于,但变量不同


我想使用数据A中的两个标准(“活动日期”和“机会名称”)从数据B中提取“阶段”;数据A中的两个条件将具有不同的匹配类型。我试图回答的问题是,“活动发生在什么阶段?”并且相信某种形式的索引匹配是答案的一部分

如果数据A中的两个条件都是match type=exact,我知道我可以使用数组公式:

=匹配(查找值\u 1和查找值\u 2,查找数组\u 1和查找数组\u 2,匹配类型)

不幸的是,“活动日期”需要使用“少于”匹配类型,“商机名称”需要使用“精确”匹配类型

数据A

Assigned|Date of Activity|Type of Activity|Opportunity Name
-----------------------------------------------------------
John    |11/15/2016      |CheckIn         |Ford
Peter   |11/15/2016      |Review          |Chevy
数据B

Last Modified|Opportunity Name|Stage
------------------------------------
11/1/2016    |Ford            |0
11/1/2016    |Chevy           |0
11/10/2016   |Ford            |1
11/10/2016   |Chevy           |1
11/20/2016   |Ford            |2
11/20/2016   |Chevy           |2
...

这可以通过一个公式来完成,使用一个匹配将其中一个参数限制在一个范围内。对于上次修改的日期,这似乎是不可能的,但可以使用opportunity名称来完成。如果数据B表按Opportunity Name排序,则此公式将提取活动日期小于或等于上次修改日期的该Opportunity Name的阶段

=INDEX(INDEX(Table1[Stage],MATCH(H2,Table1[Opportunity Name],0))
      :INDEX(Table1[Stage],MATCH(H2,Table1[Opportunity Name],1)),
       MATCH(F2,
            INDEX(Table1[Last Modified],MATCH(H2,Table1[Opportunity Name],0))
            :INDEX(Table1[Last Modified],MATCH(H2,Table1[Opportunity Name],1))))
该公式对表引用使用结构化引用,这有助于提高可读性,但您当然可以将其替换为常规引用

同样,A列到C列中的数据表必须按Opportunity name升序排序,才能正常工作


预期结果是什么?如果日期标准为“小于”,则将有多个匹配项,甚至与Opp.Name上的精确匹配项相结合。我试图回答的问题是,“活动是在什么阶段发生的?”。例如,John的“签入”活动发生在第2阶段。根据我对数据B的理解,在我的用例中,我无法知道是否会有重复的数据。但是,如果按照我理解的匹配函数的工作方式,将日期从最早排序为最新,则应该可以(但我会在用例中进行验证)。。。在本例中,John的“签入”活动发生在第1阶段(而不是第2阶段),因为11/15小于11/20。我想我看到了您所指的内容:多个匹配。。。但是,首先要努力与公式进行验证。正如我所提到的,预期结果示例将返回John于2016年11月15日进行的“签入”活动的“阶段1”。为什么上次修改与活动日期之间存在如此大的差异?难道你不能把数据整理出来,而不是尝试创建一个不可能的公式吗?最后一个参数为1的MATCH()与“小于或等于”一起工作,因此MATCH()不能仅获得“小于”。我看不到在数据B中只使用参数“小于x日期”来限定日期范围的句柄。最初的一瞥看起来像是“成功”!注意,如果“活动日期”小于任何一个“上次修改的”日期(这意味着有人在事件发生后进入并在更早的日期记录了一个活动),那么该实现还具有将输出标记为“N/A”的副作用。