对于区间中的行和列的Sumif

时间:2017-12-19 15:30:52

标签: excel vba excel-formula

我正在尝试在excel中编写一个公式,该公式将根据几个标准从表中获取值。表看起来像这样:

+------------+----+----+----+-----+----+----+----+----+
| Month/Hour | 1  | 2  | 3  |  4  | 5  | 6  | 7  | 8  |
+------------+----+----+----+-----+----+----+----+----+
|          1 | 93 | 21 | 32 |  42 | 55 | 30 | 98 | 97 |
|          2 | 41 | 73 | 25 |  58 | 48 | 10 | 19 | 20 |
|          3 | 87 | 17 | 92 | 100 |  9 | 31 | 22 | 22 |
|          4 | 92 | 91 | 63 |  28 | 95 | 58 | 55 | 47 |
|          5 | 56 | 34 | 69 |  60 | 87 | 64 | 40 | 53 |
|          6 |  8 | 64 | 92 |  30 | 48 | 27 | 52 | 65 |
|          7 | 77 |  6 | 27 |  45 | 29 | 91 | 24 | 90 |
|          8 | 13 | 14 | 31 |  10 | 40 | 49 | 22 | 57 |
|          9 | 70 | 16 | 55 |  95 | 85 | 41 | 65 | 17 |
|         10 | 72 | 79 | 81 |  48 | 13 | 40 | 99 | 52 |
|         11 | 76 | 88 | 80 |  45 | 97 | 68 | 64 | 62 |
|         12 | 73 | 82 | 97 |  74 | 93 |  7 |  6 | 71 |
+------------+----+----+----+-----+----+----+----+----+

在第一栏我们有几个月(1 - 1月,2 - 2月等)在第一行,我们有1到8小时。

现在我需要一个月数< 3,8>的公式。将总和小于< 2,6>的值相加。并且对于剩余的月份(1-2,9-12),将从小时< 4,7>总和值。我尝试过使用Sumifs公式,但它似乎一次只适用于一列。

如果使用配方不可行,那么我有一些VBA知识,也欢迎这样的解决方案。

2 个答案:

答案 0 :(得分:2)

假设月份在A2:A13以及B1:I1中的小时数,您可以使用此公式

=SUMPRODUCT(ISNUMBER(MATCH(A2:A13,{3,8},0)*MATCH(B1:I1,{2,6},0))+0,B2:I13)

根据任何月/小时组合的要求变化

答案 1 :(得分:1)

列出您的月份和小时,然后在SUMPRODUCT中使用MATCH:

=SUMPRODUCT(B2:I13,ISNUMBER(MATCH(B1:I1,M:M,0))*ISNUMBER(MATCH(A2:A13,L:L,0)))

enter image description here

无论是月份还是所需时间都不需要连续。