【问题标题】:Index match array formula with if condition not working?如果条件不起作用的索引匹配数组公式?
【发布时间】:2017-05-12 06:08:03
【问题描述】:

我在 Excel 工作簿中有 2 个工作表。 工作表“数据”和工作表“主页”。

数据:

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

在我的另一张表“主页”上,我正在尝试使用索引匹配(数组公式)从列 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 语句,以尝试允许用户输入特定日期或该日期的周数。用户应该能够输入周数或特定日期并获得结果。

由于某种原因,如果用户输入周数,则此公式有效,但如果输入特定日期则无效。请问有人可以告诉我我哪里出错了吗?谢谢

编辑

我从 B 列中的字符串中获取日期“151216”。如下所示:

数据:(公式视图)

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

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

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

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

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

【问题讨论】:

    标签: arrays excel indexing match


    【解决方案1】:

    您似乎需要为公历和 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")}
    

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

    【讨论】:

    • 谢谢你,但这似乎没有解决任何问题。当用户输入周数时,我的公式已经找到匹配项,当用户出于某种原因输入确切日期时,它只是找不到匹配项。
    • 这似乎与单元格格式有关。 Excel 希望它采用美国格式,例如 mm/dd/YYYY 而不是 dd/mm/yyyy。
    • 那么您需要将日期转换为正确的格式。您可以通过选择列并转到“更多数字格式 -> 日期 -> 区域设置(位置)并将其设置为英语(美国)”,将数据电子表格的日期格式更改为美国。当单元格格式正确时,Excel 应该能够识别用户输入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2018-11-21
    • 2017-11-04
    • 2020-01-15
    • 1970-01-01
    相关资源
    最近更新 更多