Excel工作日计算

时间:2016-02-01 14:46:42

标签: excel vlookup

我正在使用以下公式进行工作日计算,其中GB银行假日列在工作日“银行假期”单元格范围B13:Z13中。

=IF(F2<E2,IF(L2="GB",WORKDAY(E2,2,'Bank Holidays'!B13:Z13)),IF(L2="GB",WORKDAY(F2,2,'Bank Holidays'!B13:Z13)))

在“银行假期”表格中,我列出了31个国家/地区的银行假日行,列A列出了国家/地区代码,列B到Z表示假日日期。

在我的有效工作表('所有数据')中,我有一系列订单发货,包括国家/地区代码(L列)。

我想要做的是在计算工作日时我想排除与国家/地区代码相关的假期。

实际上,我需要使用“所有数据”列L上的国家/地区代码执行vlookup,以查看在“银行假期”列A上针对相同国家/地区代码列出的假日天数。

但是vlookup只返回找到的第一个值。是否有一种类型的vlookup会根据相关的国家/地区代码返回所有日期(范围:B列:Z列)。

我相信索引匹配会起作用,但是我对此并不熟悉,我无法让它发挥作用。

1 个答案:

答案 0 :(得分:2)

我实际上OFFSETMATCH对于这个特定情况会更容易(但也许它只是我认为关于Excel中的事情):

=OFFSET('Bank Holidays'!A1,MATCH(L2,'Bank Holidays'!A:A,0)-1,1,1,24)

将在L2表格的Bank Holidays中为您提供国家/地区代码的具体假期。

所以整个公式变成:

=IF(F2<E2,WORKDAY(E2,2,OFFSET('Bank Holidays'!A1,MATCH(L2,'Bank Holidays'!A:A,0)-1,1,1,24)),WORKDAY(F2,2,OFFSET('Bank Holidays'!A1,MATCH(L2,'Bank Holidays'!A:A,0)-1,1,1,24)))

24列宽度参数假定任何给定国家/地区的假日日期都不超过Z列。