[英]Excel - Lookup - Multiple result across multiple worksheets
我正在做一个工作日历,该日历应根据一周中的某天或每月的某天自动填充。 含义:
我有每周的家务(每个星期平均)和每月的家务(每个月每个特定工作日都一样)。
这个想法是每次我更改日历的月份时,都会充满每天要做的琐事。
这是我正在做的日历(手动填写红色单元格,其余的自动用下面的公式填充): 日历
周杂务表Sheet ToDos周
我已经自动填写了每周的琐事:
=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.