Excel 当ID=某个值时,根据ID求两个值之和

Excel 当ID=某个值时,根据ID求两个值之和,excel,vba,excel-formula,Excel,Vba,Excel Formula,该文件可以出现多次。当文件#=52,56,67和注册小时数和O/T小时数时。另外,52、56、67的净运行/测试时间 数据: 我曾尝试按单元格位置计算,但每次导出新报告时,我意识到位置并不是固定的 Sub Calculation() If range ("C2:C14")=52,56,67 THEN Range("G48").Formula = "=Sum(h48:i48)" Range("I48").Clear Range("G68").Formula = "=S

该文件可以出现多次。当文件#=52,56,67和注册小时数和O/T小时数时。另外,52、56、67的净运行/测试时间

数据:

我曾尝试按单元格位置计算,但每次导出新报告时,我意识到位置并不是固定的

Sub Calculation()
  If range ("C2:C14")=52,56,67 THEN
    Range("G48").Formula = "=Sum(h48:i48)"
    Range("I48").Clear
    Range("G68").Formula = "=Sum(h68:i68)"
    Range("i68").Clear
    Range("G8").Formula = "=Sum(h8:i8)"
    Range("I8").Clear
  End If
End sub

我的实际结果清除了计算前的O/T小时。而且它与文件无关#

欢迎使用SO<代码>如果语句不能像那样工作

如果范围(“C2:C14”)=52,56,67,则

如果范围(“C2:C14”)=52或范围(“C2:C14”)=56或范围(“C2:C14”)=67,则应为

但为了获得良好的实践,您应该始终限定您的范围。。请参阅下面的一种方法,以及其他注释:

子计算()
将ws设置为工作表:设置ws=ActiveWorkbook.ActiveSheet'声明和分配工作表,更好地使用.Sheets(“工作表名称”)
Dim lRow只要长:lRow=ws.Cells(ws.Rows.Count,“C”).End(xlUp)。Row'获取列C中的最后一行
变暗,变长
对于R=2到lRow,遍历所有行
与ws
选择大小写单元格(R,“C”).值
案例52、56、67
.Cells(R,“G”)=.Cells(R,“H”)+.Cells(R,“I”)求和并分配值
.单元格(R,“I”).清除“清除”值
结束选择
以
下一个R
端接头

使用
Pivot
表格获得预期结果。