【问题标题】:What is the best way to use Index Match in this case?在这种情况下使用索引匹配的最佳方法是什么?
【发布时间】:2019-06-11 13:19:34
【问题描述】:

在主工作表中,我在 A 列中有一个员工列表,从列 D:ZZ 我基本上在第 11 行有一个日历。在这些相交的地方,我为每个员工分配了一个任务代码以说明他们是什么受雇做那天。我想根据第 11 行中的日期和输入的列中的代码为编码单元格动态着色。在我的第二张表中,我有一个沿 A 列的代码表。从 B:AM 列中,在第 2 行(在标题下)我有另一个代码,说明它是什么类型的工作,在办公室,在路上,等等。这是我试图用索引匹配查找的代码。在带有任务代码的行中,在每个标题下,我都有一个预定日期,该特定工作将进入或退出或没有。

我可以很容易地为任务列建立索引,我的问题是如何获取从中获得的行,然后仅在该行中搜索我将代码应用于员工以从第 2 行返回结果的日期,然后该日期出现的列?

在查找多个项目以返回结果时,我对索引/匹配有很好的理解。我在从结果中创建范围以查找我想要的数据时遇到问题。

我已经尝试过 Indirect 和 Address 以及 Offset,但我不希望它不稳定,因为它被用于数千个单元格的条件格式。

任务代码计划工作表

DAY     1   2   3   4   ...
CODE    A   S   A   F   ...
96T003  03 May  04 May  05 May  06 May  ...
96T004  05 May  06 May  07 Jun  10 Jun  ...
96T005  05 May  19 Jul  22 Jul  23 Jul  ...

主要工作表

            SAT SUN MON TUE WED
     DATE   01  02  03  04  05                  
     JONES  OFF OFF 96T003  96T003  96T004
     DAVIS  OFF OFF 96T003  96T003  96T005

这个公式有效,但“不稳定”,我很想在条件格式函数中使用它。有没有办法让它不那么不稳定?

 =INDEX(CMP_FLYCODE,1,MATCH(F11,INDIRECT("'CMP'!"&ADDRESS(MATCH(F19,CMP_ADP,0),1)&":"&ADDRESS(MATCH(F19,CMP_ADP,0),40)),0))

CMP_FLYCODE 是对 A、S 和 F 代码行的引用

期望根据日期和代码返回字母代码 A、S 或 F

编辑:将标题添加到代码计划中,该标题是任务 1、2、3...当天的唯一编号。

【问题讨论】:

  • 所以您将一个 INDEX/MATCH 包装到另一个?另请注意,您的日期不匹配。如果您尝试匹配这些值,您将返回 #N/A
  • 你有 2 个“A”吗?如果您尝试匹配相同的键,那么您辨别使用哪个键的逻辑是什么? [我正在查看您的第一个示例,其中标题是“A”、“S”、“A”、“F”、“...”]
  • 所以这是逻辑,每个任务(即 96T003)需要 39 天才能完成。每一天都安排在一个日历日。任务 96T003 的第 1 天是 5 月 3 日,这是一个 (A) 学习日,没有旅行,第 2 天是 5 月 4 日,这是一个 (S) 模拟日,依此类推。我试图包装 INDEX/MATCH,但我无法将找到我的代码 (96T003) 的行转换为在不生成错误或不使用 INDERECT 或 ADDRESS (volatile) 的情况下查找日期的范围
  • 已编辑以显示带有 INDERECT/ADDRESS 的工作公式。我正在寻找没有它们的解决方案?我将在 3 个条件格式规则中使用这个公式来根据 3 个代码 A、S 和 F 对单元格进行颜色编码。仅将其应用于一个几乎会使 Excel 崩溃,XD

标签: excel indexing match formula


【解决方案1】:

我不认为这太糟糕了,您可以使用索引从任务表中的二维数组 B3:E5 中获取整行,并在行参数中匹配任务代码,在列参数中匹配 0,然后匹配其中的日期并再次使用索引来获取所需的字母代码。

这是我的公式的样子:

=IF(C3="OFF","",INDEX(Tasks!$B$2:$E$2,MATCH(C$2,INDEX(Tasks!$B$3:$E$5,MATCH(C3,Tasks!$A$3:$A$5,0),0),0)))

这是我的主要工作表:

这是我的任务表:

因此,要在条件格式中使用它,您需要三个使用自定义公式的规则

=INDEX(Tasks!$B$2:$E$2,MATCH(C$2,INDEX(Tasks!$B$3:$E$5,MATCH(C3,Tasks!$A$3:$A$5,0),0),0))="A"

=INDEX(Tasks!$B$2:$E$2,MATCH(C$2,INDEX(Tasks!$B$3:$E$5,MATCH(C3,Tasks!$A$3:$A$5,0),0),0))="S"

=INDEX(Tasks!$B$2:$E$2,MATCH(C$2,INDEX(Tasks!$B$3:$E$5,MATCH(C3,Tasks!$A$3:$A$5,0),0),0))="F"

使用适当的填充颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2010-10-29
    相关资源
    最近更新 更多