我是新来的excel VBA,我有一个任务需要使用VBA来完成。我正在寻找比较同一列中的值。我想开始与最后一行的比较并向上移动。筛选标准是,如果当前和最后一个数字之间的差异百分比大于3%,则将该值复制并粘贴到另一行。一旦复制并粘贴一个值,当检查3%的差异时,应该将数据中的值与先前的复制和粘贴值进行比较。下面的例子。提前致谢。Excel VBA - 比较同一列中的行
例如,如果我的数据范围如下所示
1100
1285
1290
3005
1500
2020
2030
2040
2050
2060
2070
2080
2100
2500
3000
这应该是我的结果:
1100
1290
1500
2030
2100
2500
3000
结果我已现在在那里(3000和3005之间的差具有3005小于3%(3005/3000),因此3005不应在列表中),当它不应该在列表中。
1100
1290
3005
1500
2030
2100
2500
3000
这是我现在的代码。提前致谢。
Sub main2()
Dim row_a As Long
Dim row_b As Long
Dim l_2
row_b = Range("D5000").End(xlUp).Row
Cells(row_b, "d").Copy Cells(row_b, "P")
l_2 = row_b - 1
For i = row_b To 3 Step -1
a = Cells(row_b, "d").Value
For j = l_2 To 3 Step -1
If a/Cells(j, "d") <= 0.97 Or a/Cells(j, "d") >= 1.03 Then
Cells(j, "d").Copy Cells(j, "p")
a = Cells(j, "d").Value
End If
Next j
Next i
End Sub
按您自己的规范,3005应该是在名单上,因为3005和1290和3005和1500之间的差异之间的差异都较大比3%...请重新审视您的规定 – jsotola
@ Jonathon-Sidwell,它wou ld对这篇文章的任何读者都有帮助,如果你至少可以描述你使用你的查询的内容。因为指定通缉方法似乎有些困难。 –