我对VBA和编程很新。我需要计算值从MS Access coloumn中的行中的前一个值减少的次数。我创建了一个Access窗体,其中包含一个显示VBA代码输出的对话框。以下是该计划的一个例子:
所以对于下面带有条目的coloumn的快照:[23,34,22,55,65,34,77,24,30,29]。此coloumn的预期程序的输出(在表单对话框中)为4,因为coloumn中的值比前一个值减少了4倍。
答案 0 :(得分:0)
我能想到的唯一方法是假设你知道行的正确排序,这涉及(在逻辑意义上)一些单调增加的列。假设是Field1,主键。那么这样的事情就可以了:( lv = left-val,rv = right-val)
--no-single-branch
如果您没有单调的Field1,您必须添加一个排名字段(排名1,2,3,4 ......),以确定数据的正确顺序,并且这样做没有间隙。
答案 1 :(得分:0)
通常我尽量不回答OP
没有尝试任何问题的问题,但在这种情况下我会例外:
Option Explicit
Public Sub TestMe()
'2
Debug.Print CountDecrements(Array(1, 2, 3, 2))
'-1,-3, 5
Debug.Print CountDecrements(Array(1, -1, -3, 100, 101, 5))
End Sub
Public Function CountDecrements(myArray As Variant) As Long
Dim k As Double
Dim previousValue As Double
Dim result As Long
For k = LBound(myArray) To UBound(myArray)
If k = LBound(myArray) Then
previousValue = myArray(k)
Else
If previousValue > myArray(k) Then result = result + 1
previousValue = myArray(k)
End If
Next k
CountDecrements = result
End Function
CountDecrement()
函数只计算前一个值小于当前值的次数。结果保存在result
变量中。