簡體   English   中英

Excel-查找-跨多個工作表的多個結果

[英]Excel - Lookup - Multiple result across multiple worksheets

我正在做一個工作日歷,該日歷應根據一周中的某天或每月的某天自動填充。 含義:

我有每周的家務(每個星期平均)和每月的家務(每個月每個特定工作日都一樣)。

這個想法是每次我更改日歷的月份時,都會充滿每天要做的瑣事。

這是我正在做的日歷(手動填寫紅色單元格,其余的自動用下面的公式填充): 日歷

周雜務表Sheet ToDos周

月雜務表Sheet ToDos Month

我已經自動填寫了每周的瑣事:

=IFERROR(INDEX('ToDos Week'!$C$3:$C$98;SMALL(IF((WEEKDAY($C$3;2)='ToDos Week'!$B$3:$B$98);ROW('ToDos Week'!$B$3:$B$98)-MIN(ROW('ToDos Week'!$B$3:$B$98))+1;"");ROWS($L$1:L3)));"")

奇跡般有效

但是我現在的困難是增加每月的瑣事

我試圖添加

=IFERROR(IFERROR(INDEX('ToDos Week'!$C$3:$C$98;SMALL(IF((WEEKDAY($F$3;2)='ToDos Week'!$B$3:$B$98);ROW('ToDos Week'!$B$3:$B$98)-MIN(ROW('ToDos Week'!$B$3:$B$98))+1;"");ROWS($L$1:L1)));INDEX('ToDos Month'!$C$3:$C$91;SMALL(IF((NETWORKDAYS(F$5-DAY(F$5)+1;F$5;holidays)='ToDos Month'!$B$3:$B$91);ROW('ToDos Month'!$B$3:$B$91)-MIN(ROW('ToDos Month'!$B$3:$B$91))+1;"");ROWS($L$1:L1))));"")

當然是行不通的,因為公式中的“ ROWS($ L $ 1:L1)”部分會延伸,並且不會給我第一次出現的月份瑣事(以防在同一天有星期的瑣事),但是第三或第四

你能幫我嗎?

{大編輯}好的,我剛剛意識到我忽略了一個非常簡單的解決方案-如早期編輯中所示,我們可以使用COUNTIF來獲取工作日的每日任務數。 因此,我們可以從“每月任務”計數中減去此數字以更正此數字。

簡化:任務是每周還是每月? (您可能需要從ROWS添加/減去才能使其排列)

=IF(COUNTIF('ToDos Week'!$B$3:$B$98,WEEKDAY($C$3,2))>=ROWS($L$1:L3), "Weekly", "Monthly")

使用現有的每周代碼。 對於每月,只需從COUNTIF('ToDos Week'!$B$3:$B$98,WEEKDAY($C$3,2))減去COUNTIF('ToDos Week'!$B$3:$B$98,WEEKDAY($C$3,2))即可刪除所有每周任務:

IFERROR(INDEX('ToDos Month'!$B$3:$B$98;SMALL(IF((DAY($C$3;2)='ToDos Month'!$A$3:$A$98);ROW('ToDos Month'!$A$3:$A$98)-MIN(ROW('ToDos Month'!$A$3:$A$98))+1;"");ROWS($L$1:L3)))-COUNTIF('ToDos Week'!$B$3:$B$98,WEEKDAY(C$3,2))>=ROWS($L$1:L3);"")

替換上面的IF"Weekly""Monthly" ,您將獲得:

=IF(COUNTIF('ToDos Month'!$B$3:$B$98,WEEKDAY(C$3,2))>=ROWS($L$1:L3),IFERROR(INDEX('ToDos Week'!$C$3:$C$98;SMALL(IF((WEEKDAY($C$3;2)='ToDos Week'!$B$3:$B$98);ROW('ToDos Week'!$B$3:$B$98)-MIN(ROW('ToDos Week'!$B$3:$B$98))+1;"");ROWS($L$1:L3)));""),IFERROR(INDEX('ToDos Month'!$B$3:$B$98;SMALL(IF((DAY($C$3;2)='ToDos Month'!$A$3:$A$98);ROW('ToDos Month'!$A$3:$A$98)-MIN(ROW('ToDos Month'!$A$3:$A$98))+1;"");ROWS($L$1:L3)))-COUNTIF('ToDos Week'!$B$3:$B$98,WEEKDAY(C$3,2))>=ROWS($L$1:L3);""))

下面的舊答案


好的,我在這里有2種可能的解決方案...第一種也是最簡單的解決方案,僅當您的每周任務和每月任務的格式不同時(例如,每月任務都可能以“ [M]”開頭,例如“ [[ M]文件發票“)在這種情況下,用COUNTIF替換ROWS(L$1:L3)以計算每月任務(例如COUNTIF(L$1:L3;"[M]*") ))

如果您沒有每周/每月檢查的簡單方法,那么下一個選擇是在數組公式中使用SUM來比較$L1:L3中的每個條目與ToDos Month列表(例如SUM(COUNTIF('ToDos Month'!$B$3:$B$91;L$1:L3)) ,利用兩個參數均為數組的COUNTIF本身將返回數組的事實)

對於SMALL函數的k ,這2個選項應為您提供一天中每月任務的數量

{編輯:刪除“空白”列} 這需要每周/行重做。 它基於我的測試表,其中單元格A14是2018年5月2日,單元格E14是2018年2月9日,並將數組公式放到A15中,並一直向下填充到E23

=IF(COUNTIF('ToDos Week'!$B$3:$B$98,WEEKDAY(A$14,2))>=ROWS(A$14:A14),IFERROR(INDEX('ToDos Week'!$C$3:$C$98,SMALL(IF((WEEKDAY(A$14,2)='ToDos Week'!$B$3:$B$98),ROW('ToDos Week'!$B$3:$B$98)-MIN(ROW('ToDos Week'!$B$3:$B$98))+1,""),ROWS(A$14:A14))),""),IFERROR(INDEX('ToDos Month'!$B$3:$B$98,SMALL(IF((DAY(A$14)='ToDos Month'!$A$3:$A$98),ROW('ToDos Month'!$A$3:$A$98)-MIN(ROW('ToDos Month'!$A$3:$A$98))+1,""),COUNTIF(A$14:A14,"Month*")+1)),""))

首先,它會檢查當天有多少個每周任務。 如果該數目大於已完成的任務數,則查找“每周”任務,否則查找“每月”任務-將現有的“每月”任務計數為以“月”開頭

暫無
暫無

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

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