索引匹配数组公式,if条件不起作用?

时间:2016-12-28 00:33:20

标签: arrays excel indexing match

我在excel工作簿中有2个工作表。 表'数据'和表' Home'。

数据:

Column B (Lookup Value)          Column C (Criteria)         Column D (Criteria)      COLUMN E (Criteria)         Column F
329115121601                     3291                        5555                     15/12/16                    50 <---- Week Number from date

在我的另一张纸上,&#39; Home&#39;我试图使用索引匹配(数组公式)从列B中查找数字,其中值与列C和D以及E或F中的值匹配。

主页:

Column H      Column I      Column J                   Column K
3291          5555          15/12/2016 or Week 50      {=IFERROR(INDEX(Data!$B:$B,MATCH(1,(Home!$H10=Data!$C:$C)*(Home!$I10=Data!$D:$D)*(IF(Home!$J10<55,Home!$J10,WEEKNUM(Home!$J10))=Data!$F:$F),0)),"No Po Found")}

我在索引匹配中嵌套if语句,尝试允许用户输入该日期的特定日期或周数。用户应该能够输入周数或特定日期并获得结果。

出于某种原因,如果用户输入周数,则此公式有效,但如果他们输入特定日期则不行。请有人告诉我我哪里出错了?感谢

修改

我正在约会&#39; 151216&#39;来自B栏中的字符串,如下所示:

数据:(公式视图)

Column B            Column E (UK Date Formatted as DD/MM/YYYY)              Column F (Week Num) 
329115121601       =DATE("20"&MID(B8,9,2),MID(B8,7,2),MID(B8,5,2))         =IF(F8<>"",WEEKNUM(F8,21),"") 

数据:(价值观)

Column B            Column E (UK Date Formatted as DD/MM/YYYY)     Column F (Week Num) 
329115121601        15/12/2016                                     50

当使用此公式输入日期为15/12/2016时,F列中的我的周数公式会产生值错误。没有生成周数。同样,如果日期输入为15/12/2016,我会在F列中收到值错误,并且不会生成周数。

但是,如果我在E列中手动输入我的日期为12/15/2016,没有公式,则呈现为15/12/2016,第50列显示周数为50。

然后在我的主页上,J列是英国的日期格式DD / MM / YYYY,我必须在2016年12月15日输入第j列的日期,这将呈现为15/12/2016然后这样我得到一个结果。所以E列中的公式一定存在问题吗?

用户将在主页上的第J列中输入日期为2016年12月15日而非2016年12月15日。那么我该怎么做才能解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

您似乎需要为Gregorian Calendar和ISO 8601标准设置正确的return_type。包含在Excel 2010中。
WEEKNUM(主页!$ J10,21)

{=IFERROR(INDEX(Data!$B:$B,MATCH(1,(Home!$H10=Data!$C:$C)*(Home!$I10=Data!$D:$D)*(IF(Home!$J10<55,Home!$J10,WEEKNUM(Home!$J10,21))=Data!$F:$F),0)),"No Po Found")}

enter image description here

对我来说很奇怪,这个功能似乎很好用。您是否检查了分离的WEEKNUM(Home!$ J10,21)函数是否返回正确的周数。
 因为没有return_type = 21的WEEKNUM(Home!$ J10)所产生的周数是51而不是我们想要的50。

也试试这个。

{=IFERROR(INDEX(Data!$B:$B,MATCH(1,(Home!$H10=Data!$C:$C)*(Home!$I10=Data!$D:$D)*(IF(Home!$J10<55,Home!$J10,ISOWEEKNUM(Home!$J10))=Data!$F:$F),0)),"No Po Found")}

enter image description here enter image description here

即使数据是美国格式并以英国格式输入,它也能正确匹配数据。