我有两张纸。
A
9/22/2013
9/23/2013
9/24/2013
9/25/2013
下面是我的资料2
W X Y Z
11 30.12 9/22/2013 10:54:00 PM 1.00
13 32.43 9/22/2013 10:54:00 PM 2.00
12 30.00 9/22/2013 10:54:00 PM 3.00
11 33.11 9/23/2013 10:54:00 PM 4.00
11 30.99 9/24/2013 10:54:00 PM 5.00
12 30.67 9/24/2013 10:54:00 PM 6.00
我需要公式来为sheet1生成具有以下条件的数据:
我需要在sheet1中输出如下所示。
A B c d
9/22/2013 1.00
9/23/2013
9/24/2013 5.00
9/25/2013
寻求帮助来解决这个问题。
答案 0 :(得分:1)
假设您的日期是实际的Excel序列日期/时间而其他数据是实际数字,则以下函数可以解决这个问题(为了清晰起见而添加间距):
=SUMPRODUCT(
(Sheet2!$W$1:$W$6 = 11) *
(INT(Sheet2!$X$1:$X$6) = 30) *
(DATE(YEAR(Sheet2!$Y$1:$Y$6); MONTH(Sheet2!$Y$1:$Y$6); DAY(Sheet2!$Y$1:$Y$6)) = $A1) *
(Sheet2!$Z$1:$Z$6)
)
这可以通过将许多“过滤器”应用于Z列中的数据来实现;我会一点一点地解释:
过滤器1:如果W列中的数字等于11,则返回一列TRUE / FALSE。
(Sheet2!$W$1:$W$6 = 11) -> returns
TRUE
FALSE
FALSE
TRUE
TRUE
FALSE
过滤器2:如果列X'中的数字包含'30,则返回一列TRUE / FALSE值。 取数字的整数部分,然后将它们进行比较以检查它们是否等于30。
(INT(Sheet2!$X$1:$X$6) = 30) -> returns
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
过滤器3:如果X列中的日期等于A1中的日期,则返回一列TRUE / FALSE值。 首先从Y列中提取日期(丢失时间),并比较结果以检查结果是否等于A1中的日期。
(DATE(YEAR(Sheet2!$Y$1:$Y$6); MONTH(Sheet2!$Y$1:$Y$6); DAY(Sheet2!$Y$1:$Y$6)) = $A1) -> returns
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
这是实际数据;它只返回Z列中的值:
(Sheet2!$Z$1:$Z$6) -> returns
1
2
3
4
5
6
最后,SUMPRODUCT()将所有过滤器(请记住在Excel TRUE = 1和FALSE = 0中)与数据相乘...
TRUE x TRUE x TRUE x 1 = 1
FALSE x TRUE x TRUE x 2 = 0
FALSE x TRUE x TRUE x 3 = 0
TRUE x TRUE x FALSE x 4 = 0
TRUE x TRUE x FALSE x 5 = 0
FALSE x TRUE x FALSE x 6 = 0
然后对结果求和:1 + 0 + 0 + 0 + 0 + 0 = 1。
如果您不能快速了解SUMPRODUCT()的可能性,请在Daniel Ferry的excellent article中阅读。