Arrays 如何在数组中存储循环数?
我有一个程序,可以循环一张表中的每一行数据。这些行包含数字。我想存储在数组变量中找到的所有数字,然后将每个数字与最高值和最低值进行比较Arrays 如何在数组中存储循环数?,arrays,excel,vba,Arrays,Excel,Vba,我有一个程序,可以循环一张表中的每一行数据。这些行包含数字。我想存储在数组变量中找到的所有数字,然后将每个数字与最高值和最低值进行比较 但我不知道如何自动将数字存储在数组中。不要将数字存储在数组中,而是动态检查最小/最大的数字 Sub test() dim max As Double, min As Double dim r As Range, rng As Range Set rng = Range("A1","A10")' Set this to the appropriate rang
但我不知道如何自动将数字存储在数组中。不要将数字存储在数组中,而是动态检查最小/最大的数字
Sub test()
dim max As Double, min As Double
dim r As Range, rng As Range
Set rng = Range("A1","A10")' Set this to the appropriate range
min = rng(1).Value
max = rng(1).Value
For each r in rng
If r.Value > max Then
max = r.Value
Elseif r.Value < min Then
min = r.Value
End If
Next r
Range("B1").Value = max ' store where ever you want
Range("B2").Value = min 'same as above
End Sub
子测试()
最大尺寸为双精度,最小尺寸为双精度
变暗r为范围,rng为范围
设置rng=范围(“A1”、“A10”)'将其设置为适当的范围
最小值=rng(1)。数值
最大值=rng(1)。数值
对于rng中的每个r
如果r.值>最大值,则
最大值=r.值
Elseif r.值<最小值
最小值=r.值
如果结束
下一个r
范围(“B1”)。值=最大值,可任意存放
范围(“B2”)。值=最小值,同上
端接头
获取一行空格、文本和数字中的最小值和最大值有更简单的方法,但下面是一个将一行中的数字收集到变量数组中的示例
Sub minmax()
Dim r As Long, c As Long, n As Long, vNUMs As Variant
Dim mn As Double, mx As Double
With Worksheets("Sheet2")
For r = 2 To .Cells(Rows.Count, 2).End(xlUp).Row
'you can do this the easy way
mx = Application.Max(.Rows(r))
mn = Application.Min(.Rows(r))
Debug.Print mn & " to " & mx
'or the hard way
n = 0
ReDim vNUMs(Application.Count(.Rows(r)) - 1)
For c = 1 To .Cells(r, Columns.Count).End(xlToLeft).Column
If IsNumeric(.Cells(r, c)) And Not IsEmpty(.Cells(r, c)) Then
vNUMs(n) = .Cells(r, c).Value2
n = n + 1
If n > UBound(vNUMs) Then Exit For
End If
Next c
mx = -2 ^ 20
mn = 2 ^ 20
For n = LBound(vNUMs) To UBound(vNUMs)
If vNUMs(n) < mn Then mn = vNUMs(n)
If vNUMs(n) > mx Then mx = vNUMs(n)
Next n
Debug.Print mn & " to " & mx
Next r
End With
End Sub
Sub-minmax()
尺寸r为长,c为长,n为长,vNUMs为变体
尺寸mn为双精度,mx为双精度
带工作表(“表2”)
对于r=2到.Cells(Rows.Count,2).End(xlUp).Row
“你可以用简单的方法做到这一点
mx=应用程序.Max(.Rows(r))
mn=Application.Min(.Rows(r))
调试。打印mn&“to”&mx
“还是艰难的道路
n=0
ReDim vNUMs(Application.Count(.Rows(r))-1)
对于c=1到.Cells(r,Columns.Count).End(xlToLeft).Column
如果是数值(.Cells(r,c))而不是空(.Cells(r,c)),则
vNUMs(n)=.单元(r,c).值2
n=n+1
如果n>UBound(vNUMs),则退出
如果结束
下一个c
mx=-2^20
mn=2^20
对于n=LBound(vNUMs)到UBound(vNUMs)
如果vNUMs(n)mx,则mx=vNUMs(n)
下一个
调试。打印mn&“to”&mx
下一个r
以
端接头
如果您的最终目的是查找一行中的最大值,那么Application.Max(.Rows(i))
就足够了。同样适用于Application.Min
。