excel - 根据单元格输入有条件地将值计入变量
问题描述
我正在执行一项任务,我在不同的温度下运行测试,但测试并不总是按顺序运行,所以我一直在跟踪温度和测试中的总时间。之后我回去手动检查在每个温度下花费了多少时间。下面的代码显示了到目前为止我已经走了多远,但我不确定如何处理周末发生的空单元格,因为我无法告诉记录时间。
在我附加的示例中,对于“测试 1”,我希望从 (13-0)+(61-13)+(221-203)+(265-221) 中获得“环境”的总数 123,但是它输出 358 . 寻找一些关于我在这里出错的地方。提前致谢!
这是我到目前为止编写的代码:
Sub Calculate_Time_at_Temp()
Dim ambient As Double, cold_neg_20 As Double, humidity As Double, hot_60 As Double, cold_neg_30 As Double, hot_80 As Double, rng As Range, cell As Range
Sheets("Sheet1").Activate
Set rng = Range("X5")
For Each cell In Sheets("Sheet1").Range("C8:W8")
'If IsNumeric(cell.Offset(-3, 0).Text) Then
If cell.Value = "Ambient" Then
ambient = ambient + (cell.Offset(-3, 0).Value - cell.Offset(-3, -1).Value)
rng.Value = ambient
End If
'End If
Next
End Sub
解决方案
我只是添加了一个移位值来获取上一列:如果是星期六/星期日,则为 -3,否则为 -1。假设您的日期位于第一行(单元格(1,x))。没有您的文件,我无法对其进行测试。
Sub Calculate_Time_at_Temp()
Dim ambient As Double, cold_neg_20 As Double, humidity As Double, hot_60 As Double, cold_neg_30 As Double, hot_80 As Double, rng As Range, cell As Range
Dim iShift As Integer
Dim rRangeDate As Range
Sheets("Sheet1").Activate
Set rng = Range("X5")
For Each cell In Sheets("Sheet1").Range("C8:W8")
Set rRangeDate = Sheets("Sheet1").Cells(1, cell.Column)
iShift = IIf(Weekday(CDate(rRangeDate.Value), vbMonday) > 5, 3, 1)
If cell.Value = "Ambient" Then
ambient = ambient + (cell.Offset(-3, 0).Value - cell.Offset(-3, -iShift).Value)
rng.Value = ambient
End If
Next
End Sub
推荐阅读
- python - 一旦向其中添加项目的函数完成执行,Python 字典就会变为空
- javascript - javascript可以判断元素是否在其他元素之上吗?
- c# - 动态对象中的 C# 异常 System.ArgumentException
- python - Python按值将列表元素分组为元组
- caching - 不同级别的缓存是否在同一频域中运行?
- javascript - 带有单选按钮的 Javascript this.form.submit()
- python - RMarkdown:Python 代码块上的 knitr::purl()?
- ruby-on-rails - Rails 5、simple_form_for、RSpec 和 Capybara - click_button 不适用于我的表单
- linux - 了解 tmpfs 大小
- docker - docker中的Webpack应用需要环境变量才能构建