Vlookup中的动态查找数组和列索引

时间:2018-08-13 19:05:14

标签: excel vlookup

我有一本名为12月的工作簿,名为1月,2月至12月。在每张纸上,我每个月的每一天都有员工出席。现在的挑战是,我想在一个工作表中编译列表,该工作表的A列中有雇员的姓名,而在行中,我的日期是1月1日至12月31日。

我可以使用单个Vlookup()还是Match()Index()公式得出结果吗?我已经尝试过了,最终得到了公式:

=VLOOKUP($A:$A,'Jan '!A:AK,COLUMNS($B1:B1)+1,0)

但是,我希望在31次出现后将工作表名称更改为Feb,依此类推,列$B1:B1的范围也会在31次出现后从相同的位置重新开始。

我希望我的查询清楚。请帮忙。

1 个答案:

答案 0 :(得分:1)

如果您每个月都有单独的工作表,则等价于您的公式

=VLOOKUP($A2,INDIRECT(TEXT($B$1+COLUMNS($B:B)-1,"mmmm")&"!A:AK"),DAY($B$1+COLUMNS($B:B)-1)+1,FALSE)

从B2开始,并假设您在B1是一年中的第一天。

但是,如果您在一年中的每个日期的工作表的第一行中都有标题,则可以简化操作

=VLOOKUP($A2,INDIRECT(TEXT(B$1,"mmmm")&"!A:AK"),DAY(B$1)+1,FALSE)

这适用于称为一月,二月等的工作表。如果名称为一月,二月等,则将“ mmmm”更改为“ mmm”。