有条件地使用索引匹配来指示是否

有条件地使用索引匹配来指示是否

我对 INDEX MATCH 相当熟悉,但我遇到了一个问题,我想用它解决它,但我不太确定它是否能用。我有两张工作表:第一张较小的工作表包含另一张工作表上的一小部分姓名,并且每个姓名都关联有一组日期。另一张较大的工作表与每个姓名关联有一组不同的日期。我希望能够对较大工作表上的日期进行索引,并且仅当此日期大于较小工作表上的日期且小于与该日期关联的月份的末尾时才匹配姓名。如果满足条件,我希望返回 1,而不是返回 MATCH 值。这是否可以通过 INDEX MATCH 轻松完成,或者我应该寻找另一组函数?您将如何进行此操作?

答案1

我相信您的问题围绕着根据以下标准编写 INDEX/MATCH 公式:

  • 在较大的表格上索引日期

  • 仅当此日期大于较小表格上的日期时才匹配姓名

    • 早于该日期所属月份的月底
  • 如果满足条件则返回 1。

我们可以通过在 IF 条件中嵌套 INDEX/MATCH 来实现这一点:

=IF(

    INDEX([LargerSheet!*Range with Dates*],

       MATCH(

         IF([SmallerSheet!*First Date in Range*]<[LargerSheet!*First Date in Range],
         [SmallerSheet!*Range with Dates]),

       [SmallerSheet!*Range with Dates*],0)

    )>0,1,"")

MATCH 函数将在每次找到匹配项时返回值,根据定义,该值将大于 0。因此,我们希望在每次出现这种情况时返回 1。

希望这可以帮助!

答案2

我会使用 Power Query 插件来实现这一点。查询可以从 Excel 表开始,然后逐步构建数据转换。您可以在每一步查看结果。

对于您的要求,我将使用合并命令按名称将两张工作表合并在一起,并从较大的工作表中扩展日期列。

http://office.microsoft.com/en-au/excel-help/merge-queries-HA104149757.aspx

这将产生所有可能的匹配。因此,我将使用 Filter 命令来获取范围内的日期。您可能需要为此编辑 Filter 函数。请注意,有一个 Power Query 函数可以得出月末日期:

http://office.microsoft.com/en-au/excel-help/date-endofmonth-HA104110485.aspx?CTT=5&origin=HA104122363

最后,我会将查询传送到新的 Excel 表。

相关内容