不知道你采集的次序如何:
如果是采集完一个通道(100个值)再处理下一个通道,只要在 for i=0 to 99 外面再套一个按通道的循环;
如果是所有通道取完第一个值再处理下个值,如下修改:
Type data
a(100 - 1) As Long
End Type
Sub Main()
Dim channels(32 - 1) As data
Dim i As Long, j As Long, c As Long
For i = 0 To 99
For c = 0 To 31
channels(c).a(i) = 采集数据(c)
For j = i + 1 To 99 '用以采集的数循环填充满 100 个成员
channels(c).a(j) = channels(c).a(j Mod (i + 1))
Next
cell("R1C" & c) = Avg(channels(c).a)
Next
Next
End Sub
Dim a(1 To 3200) As Long, i As Integer, j As Integer
Dim sum As Double, avg(1 To 32) As Double
For i = 1 To 32
List1.Clear
For j = i To 3200 Step 32
List1.AddItem Right("0000000" & Hex(a(j)), 8)
Next j
sum = 0
For j = 10 To 89
sum = sum + Val("&H" & List1.List(j))
Next j
avg(i) = sum / 80
Next i
dim a(100-1) as long
dim i as long, j as long
for i=0 to 99
a(i) = 采集数据
for j=i+1 to 99 '用以采集的数循环填充满 100 个成员
a(j) = a(j mod i)
next
cell("A1") = AVG(a)
next
function AVG(a() as long) as double
dim b() as long
dim i as long
dim sum as long
b = sort(a) '复制一个数组并排序
for i= 20 to 79
sum = sum + b(i)
next
avg = sum / 80
end function