Excel - 查找 - 跨多个工作表的多个结果

Excel - Lookup - Multiple result across multiple worksheets

我正在做一个工作日历,它应该根据星期几或每月的哪一天自动填写。含义:

我有每周的杂务(每个星期都相等)和每月的杂务(每个月的每个特定工作日都相等)。

这个想法是每次我更改日历的月份时,都充满了每天需要完成的家务。

这是我正在做的日历(红色单元格是手工填充的,其余的是用下面的公式自动填充的): Calendar

周家务 sheet Sheet ToDos week

一个月的家务sheet Sheet ToDos Month

我已经自动完成了每周的杂务:

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

工作起来很有魅力

但我现在的难点是增加每月的杂务

我试着添加

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

当然是行不通的,因为公式的 "ROWS($L:L1)" 部分会拉伸并且不会给我第一次出现的月份杂务(以防同一天有周杂务),但是第三或第四..

你能帮我解决这个问题吗?

{大编辑} 好的,我刚刚意识到我忽略了一个 真正 简单的解决方案 - 如早期编辑所示,我们可以使用 COUNTIF 来获取工作日的每日任务数。因此,我们可以从月度任务计数中减去它以更正数字。

简化:任务是每周一次还是每月一次? (您可能需要从 ROWS 到 add/subtract 才能排队)

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

使用您现有的每周代码。对于每月,只需从 ROWS 中减去 COUNTIF('ToDos Week'!$B:$B,WEEKDAY($C,2)) 即可删除所有每周任务:

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

替换上面IF中的"Weekly""Monthly",得到:

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

下面是旧答案


好的,这里我可以想到 2 种可能的解决方案...第一种也是最简单的,只有当您的每周任务和每月任务的格式不同时才有效(例如,每月任务可能都以“[M]”开头,例如“[M]File Invoices”) 在这种情况下,将 ROWS(L:L3) 替换为 COUNTIF 以计算每月任务(例如 COUNTIF(L:L3;"[M]*")

如果您没有 'easy' 方法来检查 weekly/monthly,下一个选项是在数组公式中使用 SUM 来比较 $L1:L3 中的每个条目针对 ToDos Month 列表(例如 SUM(COUNTIF('ToDos Month'!$B:$B;L:L3)),利用两个参数都是数组的 COUNTIF 本身 return 一个数组)

对于 SMALL 函数的 k

,这 2 个选项应该会为您提供当天的月度任务数

{编辑:删除 'blank' 列} 这需要为每个 week/row 重做。它基于我的测试 sheet,其中单元格 A14 是 05/02/2018,E14 是 09/02/2018 并且数组公式被放入 A15 并向下和向右填充到 E23

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

它做的第一件事是检查当天有多少每周任务。如果这大于已填写的任务数,它将查找每周任务,否则查找每月任务 - 将现有的每月任务计算为以 "Month"

开头