如何用Excel的SUMIF()仅求和小时数?Excel2007加班计算需求
解决Excel 2007中加班时长取整与SUMIF求和问题
嘿,针对你在Excel 2007里遇到的两个加班时长处理问题,我给你整理了具体的解决方法:
一、忽略分钟,仅保留加班时长的小时数
你的需求是把类似0.18(对应约10分钟)的结果转成0.0,本质就是舍去分钟对应的小数部分,只保留整数小时,分两种情况处理:
如果你的加班时长是小数格式(比如0.18代表0.18小时)
直接用INT()函数,它会自动舍去小数部分,只保留整数:
- 假设加班时长在单元格
A1,输入公式:=INT(A1) - 效果:0.18→0,1.45→1,2.9→2,完美忽略所有分钟部分。
如果你的加班时长是时间格式(比如显示为00:10)
用HOUR()函数更直接,它会提取时间中的小时数,完全忽略分钟:
- 假设时间在单元格
A1,输入公式:=HOUR(A1) - 效果:
00:10→0,1:30→1,2:59→2,刚好符合你的需求。
二、用SUMIF(或替代函数)对处理后的小时数求和
Excel 2007的SUMIF()函数不能直接在求和区域嵌套函数,所以给你两种方案:
方案1:用辅助列先转换,再SUMIF求和
- 新增一列(比如B列),在B1输入
=INT(A1)(或=HOUR(A1),根据你的数据格式选),下拉填充所有行; - 假设员工姓名在C列,要统计"SANIA SARWER"的总加班小时数,输入公式:
=SUMIF(C:C, "SANIA SARWER", B:B)
这样就会只对符合姓名条件的、已经处理好的小时数求和。
方案2:不用辅助列,用SUMPRODUCT直接计算
如果不想加辅助列,用SUMPRODUCT()可以一步到位,它支持条件判断+计算求和:
- 假设A列是加班时长,C列是员工姓名,输入公式:
=SUMPRODUCT((C:C="SANIA SARWER")*INT(A:A)) - 原理:先判断C列是否等于目标姓名,得到TRUE/FALSE的数组,再乘以INT(A:A)的结果(TRUE转1,FALSE转0,只有符合条件的行才会被计入求和),最后自动求和。
- 注意:如果是时间格式,把
INT(A:A)换成HOUR(A:A)就行。
内容的提问来源于stack exchange,提问作者Waqar Yousufzai
相关产品推荐
相关产品推荐

