【发布时间】:2015-09-21 17:07:00
【问题描述】:
我有以下用 VBA 编写的代码:
For Each W In Range("B5:B15000").Cells
If W.Offset(-1, 0).Value - W.Value > 1.5 Then
W.Offset(-1, 0).EntireRow.Delete
End If
Next W
目的是向下迭代第 5 行和第 15000 行之间的“B 列”,从偏移“W”值中减去每个当前“W”值。如果等式的结果差大于 1.5,则删除后面的整个“W”(偏移)行。如果差值小于或等于 1.5,则继续下一个“W”。
为了更好地理解数据集,B 列本质上是一个时间戳系列。随着您进一步往下走,时间戳会以不同的秒数增加。我需要挑出大于 1.5 秒的间隙(可以这么说)并删除它们。
这是列数据的示例:
任务看起来很简单,但我收到“类型不匹配”错误。我对 For Each 循环比较陌生,所以我不太明白哪些部分不匹配。
【问题讨论】:
-
您的
W.Value是数字格式吗? -
@mrbungle 你好!谢谢你这么快回复。我不相信它被格式化为数字。我怎样才能有效地做到这一点?
-
@liamwilt - 编辑您的问题以显示 B 列中的数据是什么样的。
-
我的建议只是在黑暗中快速拍摄。我可以运行这段代码,无论文本或数字格式如何,它都能正常工作。但是,是的,@JasonFaulkner 说的,让我们看看数据