Excel VBA用于计算具有一定经过秒数的记录

时间:2012-06-19 14:26:12

标签: excel excel-vba vba

我正在尝试报告"经过的秒数"在这些休息时间:小于15分钟,15至19分钟,20至24分钟,25至29分钟,30至45分钟,45至60分钟和60分钟或更长时间。

我有一个显示已用秒数的字段,我可以获得我想要的休息时间 - 总计 - 使用以下公式:

= SUMPRODUCT(!(ABS(TestTable的$ AF $ 2:$ AF $ 50)> = 0)*(ABS(TestTable的$ AF $ 2:$ AF $)< = 899))

(其中' TestTable'是数据所在的工作表,而Col AF是存储经过的秒数)。问题?

我需要通过另一个领域削减每个分解。同样在' TestTable'是一个包含PRODx或PRODz的字段(它是Col H)。

所以我需要说"如果Col H = PRODx,那么计算少于15分钟的记录数并将其放入某个单元格---那么---如果Col H = PRODz则计算如何许多记录不到15分钟,并将结果放在不同的单元格中。

有人知道写这个的方法吗?

2 个答案:

答案 0 :(得分:1)

如果你有excel 2007或更高版本,COUNTIFS应该适合你 =COUNIFS(H:H,AF:AF,"<900",H:H,"PRODx")不到15分钟,和PRODx
=COUNIFS(H:H,AF:AF,"<900",H:H,"PRODz")不到15分钟,PRODz
然后为范围扩展选择
=COUNIFS(H:H,AF:AF,">=900",AF:AF,"<1200",H:H,"PRODx")为15-19分钟,PRODx为 =COUNIFS(H:H,AF:AF,">=900",AF:AF,"<1200",H:H,"PRODz") 15-19分钟,和PRODz

对所有需要的时间/ PROD范围重复此操作

答案 1 :(得分:0)

在单元格A1中,键入:

=COUNT(IF(H:H="PRODx",IF(AF:AF="Less Than 15 Seconds",M1:M5)))
M is just another random column

在单元格A2中,键入相同的内容,但将PRODx更改为PRODz。

确保输入所有公式作为数组公式,方法是在键入后按CTRL + SHIFT + ENTER,而不是只输入。

有关详情,请参阅此链接:Count If WIth Multiple Criteria

编辑

如果您必须拥有VBA解决方案,请与我们联系。否则,您不需要VBA。此外,如果您运行的是Excel 2007或更高版本,则可以使用CountIfs函数,该函数比上面的Array公式更清晰,资源更少。