使用VB在Excel中标记条件时出现问题

时间:2014-10-22 22:57:08

标签: excel vba

我正在尝试标记符合条件的记录,并且几乎已经达到'答案。有一个带有 - 和+值的列。代码将迭代直到sum = 2000 OR(sum> = 2000且下一个记录为正) - 因此最后一个连续的负记录> = 2000将被标记。下面的代码不会等到最后一个负数的结尾(即连续30个记录中带有 - 数字)。有关修复的想法吗?

 Dim homecell As Range
Set homecell = Range("I1")


Set homecell = Range("A1").EntireRow.Find("2k Flag")
homecell.Select
homecell.EntireColumn.ClearContents
homecell = "2k Flag"

Dim i As Long
i = 1
Dim a As Long
a = 0
Dim pos As Boolean
Dim sum As Double
Dim sfrom As Double
sfrom = 1
i = 1
Dim wforp As Boolean

Do Until sfrom > Range("A1").End(xlDown).Row

If Range("A1").Offset(sfrom, 0) = Range("A1").Offset(sfrom + a, 0) Then

Do Until a = 2000 Or (sum <= -200 And pos = False) Or pos = True
sum = sum + homecell.Offset(sfrom + a, -1)
If homecell.Offset(sfrom + a, -1) > 0 Then
pos = True
wforp = False
End If

a = a + 1
Loop

If pos = False And sum <= -200 And wforp = False Then
homecell.Offset(sfrom + a - 1, 0) = "yes"
wforp = True
sfrom = sfrom + a - 1

End If

sum = 0
pos = False
a = 0

Else
wforp = False

End If

sfrom = sfrom + 1
Loop

1 个答案:

答案 0 :(得分:0)

更改行

Do Until a = 2000 Or (sumneg <= -200 And pos = False) Or pos = True

Do Until a = 2000 Or (sumneg <= -2000 And pos = False) Or pos = True

即。 sumneg&lt; = -2000

请注意,我已更改了您的变量&#39; sum&#39;到了&#39; sumneg&#39;避免与VBA保留关键字混淆。

可能是一个好主意,并且可以更灵活地将此值声明为变量本身。

没有确定标记组中的最后一个值,但是如果你想要这个,那么替换

sfrom = sfrom + a - 1

使用以下代码:

 sfrom = (sfrom + a - 1) + 1

        Do While homecell.Offset(sfrom, -1) < 0

            sfrom = sfrom + 1
        Loop

    homecell.Offset(sfrom - 1, 0) = "last neg in group"