复杂的条件
Complex conditional
我有以下 sheet 称为 DailyReport:
我目前正在计算 M 列:
=SUMPRODUCT(A2:A200=A2, G2:G200)
然后在第二个 sheet 我有以下第二个 sheet WeeklyReport:
现在我想要做的是,如果 WeeklyReport Column A2 == DailyReport Column A,则获取 DailyReport B 列中的日期并测试它是否落在 WeeklyReport B 列和 C 列中的日期范围内:
=IF(AND(DailyReport.B2>=B2,DailyReport.B2<=C2),1, 0)
如果是,则将每日总小时数添加到每日报告 M 列中的每周报告 D 列中的总数。
我认为对 M 列的值求和(它本身就是一个总和)不会达到目标。求和会使值太大,并且 M 列未按日期筛选,因此将包含错误日期的数字。
我更喜欢扩展您使用 SUMPRODUCT
获取列 M 编号的方式的想法。除了检查匹配名称之外,还添加了两个参数来检查晚于或等于 "Week Start Date" 和早于或等于 "Week End Date" 的日期。
所以三个 true/false
或 1/0
参数(其中乘以 1 表示 true 保留值,乘以 0 表示 false 删除值)和要求和的小时值的第四个参数:
=SUMPRODUCT(DailyReport.A:A0=A2, DailyReport.B:B0>=B2, DailyReport.B:B0<=C2, DailyReport.G:G0)
张贴者也非常接近使用 SUMIFS
的解决方案(在评论中)。默认条件测试是 =
,但对于日期比较,我们希望使用大于和小于运算符。 LibreOffice/OpenOffice 语法是将关系运算符放在双引号中,然后使用 &
将它们连接到包含测试值的单元格地址:
=SUMIFS(DailyReport.G:G0, DailyReport.A:A0, A2, DailyReport.B:B0, ">=" & B2, DailyReport.B:B0, "<=" & C2)
在这两种情况下,我都包含了 $
符号以使行号绝对化。如果公式为copy-pasted,绝对单元格地址不会改变;在这种情况下,copy-paste 可能会覆盖 WeeklyReport sheet 的多行,以获取多人的总小时数。
我有以下 sheet 称为 DailyReport:
我目前正在计算 M 列:
=SUMPRODUCT(A2:A200=A2, G2:G200)
然后在第二个 sheet 我有以下第二个 sheet WeeklyReport:
现在我想要做的是,如果 WeeklyReport Column A2 == DailyReport Column A,则获取 DailyReport B 列中的日期并测试它是否落在 WeeklyReport B 列和 C 列中的日期范围内:
=IF(AND(DailyReport.B2>=B2,DailyReport.B2<=C2),1, 0)
如果是,则将每日总小时数添加到每日报告 M 列中的每周报告 D 列中的总数。
我认为对 M 列的值求和(它本身就是一个总和)不会达到目标。求和会使值太大,并且 M 列未按日期筛选,因此将包含错误日期的数字。
我更喜欢扩展您使用 SUMPRODUCT
获取列 M 编号的方式的想法。除了检查匹配名称之外,还添加了两个参数来检查晚于或等于 "Week Start Date" 和早于或等于 "Week End Date" 的日期。
所以三个 true/false
或 1/0
参数(其中乘以 1 表示 true 保留值,乘以 0 表示 false 删除值)和要求和的小时值的第四个参数:
=SUMPRODUCT(DailyReport.A:A0=A2, DailyReport.B:B0>=B2, DailyReport.B:B0<=C2, DailyReport.G:G0)
张贴者也非常接近使用 SUMIFS
的解决方案(在评论中)。默认条件测试是 =
,但对于日期比较,我们希望使用大于和小于运算符。 LibreOffice/OpenOffice 语法是将关系运算符放在双引号中,然后使用 &
将它们连接到包含测试值的单元格地址:
=SUMIFS(DailyReport.G:G0, DailyReport.A:A0, A2, DailyReport.B:B0, ">=" & B2, DailyReport.B:B0, "<=" & C2)
在这两种情况下,我都包含了 $
符号以使行号绝对化。如果公式为copy-pasted,绝对单元格地址不会改变;在这种情况下,copy-paste 可能会覆盖 WeeklyReport sheet 的多行,以获取多人的总小时数。