使用 INDEX/MATCH 从一组表中返回一个值

使用 INDEX/MATCH 从一组表中返回一个值

我很难编写INDEX/MATCH公式。我需要公式来查看多行以找到与我的查找值匹配的行。我有不同月份的多个标题。

我单元格中的当前公式B2是:

=INDEX($D5:$M5,MATCH($B$1,$D$4:$M$4,0))

如您所见,如果我输入JanuaryB1B2显示a。如果我输入 ,February我希望它显示99

截屏

答案1

看看你之前的问题,看起来你正在尝试提取给定特定列的数据查找条件——月份和分支。

为了简单起见,我还假设每个子表的分支完全相同,即它们都存在并且顺序相同。

您的工作表修改如下,

动画工作表屏幕截图显示正在修改查找月份、正在修改查找分支,以及正在向右侧填充的公式

在中输入以下公式B3

=INDEX(D4:D16,MATCH($B$1,$D$4:$D$16,0)+MATCH($B$2,$C$4:$C$16,0)-1)

解释:

该公式不是索引到行,而是索引到所需的数据列,即D4:D16

第一个MATCH()查找匹配的 Month 行,而第二个查找匹配的 Branch 的偏移量。需要-1将第二个返回的从一开始的索引转换MATCH()为从零开始的偏移量。(是的,MATCH($B$2,$C$4:$C$16,0)-1可以用 代替,但用 更容易理解。)MATCH($B$2,$C$5:$C$16,0)-1

笔记:

  • 公式的编写方式意味着向右填充公式会提取下一列的值。这就是为什么D4:D16是相对引用。
  • 或者,要获取另一列的数据,只需用适当的引用替换。(如果使用单个月份标题,则D4:D16绝对引用需要保持不变,如下所述。)$D$4:$D$16
  • 即使从第一列以外的列中提取数据,也不需要每个月有多个标题。只有第一个数据列需要一个标题,或者可以使用合并标题。(这就是为什么是$D$4:$D$16绝对引用。)

答案2

我的答案有两种选择:

  1. 使用屏幕截图中显示的数据集。

  2. 使用修改后的数据集的解决方案。

选项1:

我想建议一种方法,其中包含一个简单的技巧,可以根据月份管理不同的数据集。

在此处输入图片描述

怎么运行的:

  • 你需要创建辅助细胞B41,这反映了月份名称在 单元格B42
  • 单元格中的公式B42

=IF(OR(B41=1,B41=2,B41=3,B41=4,B41=5,B41,6),CHOOSE(B41,"January","February","March","April","May","June"))

  • 单元格中的公式B43,将其向下拖动。

=IF($B$41=1,INDEX($B34:$L34,MATCH(B$42,$B$33:$L$33,0)),IF($B$41=2,INDEX($B38:$L38,MATCH(B$42,$B$37:$L$37,0)),""))

笔记:

  • 一旦包含了本月剩余的数据,第二个公式就需要扩展。

选项 2:

在此处输入图片描述

  • 在单元格中输入此公式B51并向下填充

    =INDEX($B47:$G47,MATCH($B$50,$B$46:$G$46,0))

根据需要调整公式中的单元格引用。

相关内容