簡體   English   中英

如果條件不起作用,索引與數組公式匹配嗎?

[英]Index match array formula with if condition not working?

我在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

在我的另一張紙上,“ Home”我試圖使用索引匹配(數組公式)從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

當使用此公式將日期輸入為15/12/2016時,F列中的我的周數公式會產生值錯誤。 沒有周數產生。 同樣,如果將日期鍵入為15/12/2016,則在F列中會出現值錯誤,並且不會生成周數。

但是,如果我在E列中手動輸入我的日期為2016年12月15日,則不使用公式將其顯示為2016年12月15日,在F列中顯示為50的星期數。

然后在我的主頁上,J列的日期格式為DD / MM / YYYY(對於英國),我必須在j列中輸入日期為12/15/2016,這將呈現為15/12/2016,然后通過這種方式我得到一個結果。 我想E列中的公式一定有問題嗎?

用戶將在首頁的“ J”列中輸入日期為15/12/2016,而不是12/15/2016。 那么,我該怎么做才能解決此問題?

看來您需要為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)函數是否返回了正確的星期數。
因為WEEKNUM(Home!$ J10)沒有return_type = 21,所以生成的周數是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")}

在此處輸入圖片說明 在此處輸入圖片說明

即使數據是美國格式並以英國格式輸入,也可以正確匹配數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM