循环通过不同大小的数组

时间:2014-12-23 23:30:10

标签: arrays vba loops

嗨,我让imagen 3阵列

ArrayA = {1,2,3}
ArrayB = {4,5,6,7}
ArrayC = {8,9,10,11,12}

我想循环使用这些,但按顺序如下

打印ArrayA,B,C第一个值
打印ArrayA,b,C第二个值
打印ArrayA,B,C第三个值
打印ArrayA,b,C第四值
... ... ...

所以它会输出

-1,4,8-
-2,5,9-
3,6,10

此时阵列A需要环绕,所以下一个输出将是

1,7,11-
2,4,12
... ...

如果阵列中我可以做10个相同大小的项目

x = 0到9
print ArrayA {x}
print ArrayB(x)
print ArrayC(x)
下一个x

但是对于不同长度的数组,我仍然可以将它们放在同一个循环中,我想我可以在每次循环运行时增加数组,例如

X = X + 1 如果x>数组最大值然后x = 0

但可以以更有效的方式完成吗?

我正在考虑在perl中执行此操作,我知道上面的代码与perl完全不同,所以实际代码在下面,但目前我正在使用VBA。

stars是一个199维的单维数组,这个数组中的每个项目都是一个720长3宽的二维数组。 SO星(个体恒星)(指向轨道,x坐标,y坐标)

所以star(1)包含的数组具有0.5度分辨率的恒星轨道的x,y坐标。但有些需要有不同的分辨率,所以尺寸会有所不同。但我仍然希望能够不断地循环它们并根据需要包装每个数组。

For h = 0 To 720
'Application.ScreenUpdating = False
For st = 0 To 199
Cells(st + 10, 2).Value = stars(st)(h, 1)
Cells(st + 10, 3).Value = stars(st)(h, 2)

Next

'calls chart to update
'Application.ScreenUpdating = True
DoEvents

Next

干杯

1 个答案:

答案 0 :(得分:4)

如果你想要回头看,你可以使用' mod',就像在'指数mod大小'

[ADDENDUM - FreeBasic示例]

const aSize=5
const bSize=3
dim a(0 to aSize-1) as integer
dim b(0 to bSize-1) as integer

a(0)=0
a(1)=1
a(2)=2
a(3)=3
a(4)=4

b(0)=0
b(1)=10
b(2)=20

for i=0 to 20
  print "[";a(i mod aSize);" ";b(i mod bSize);"]"
next

sleep