我在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日。那么我该怎么做才能解决这个问题呢?
答案 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")}
对我来说很奇怪,这个功能似乎很好用。您是否检查了分离的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")}
即使数据是美国格式并以英国格式输入,它也能正确匹配数据。