【发布时间】:2020-09-17 11:10:06
【问题描述】:
我有一些数据,存储在数组中,例如
Dim arrA, arrB, arrC, arrAi, arrBi
Dim i as integer, x as integer
for i = 1 to 100
if cells(i,1).value = "criteria" then ' just add value to array when it meets some criteria
x = x + 1
arrA(x) = cells(i,1).value
arrB(x) = cells(i,2).value
arrC(x) = cells(i,3).value
end if
next i
redim preserve arrA(1 to x)
redim preserve arrB(1 to x)
redim preserve arrC(1 to x)
数据看起来像
arrA:26.1 40.2 80.3 26.0 41.3 78.7 25.8 40.8 80.0
arrB:10 11 10 66 67 64 32 32 33
arrC: 1 2 3 1 2 3 1 2 3
由于 arrA 26.1、26.0、25.8(位置 1、4、7)中的值属于第 1 组(引用 arrC 中相同位置的值),我想将 26.1 26.0 25.8 存储到 arrAi 和 10 66 32到 arrBi 进行后续计算。
如上所述,我如何遍历这 3 个数组并将值存储到另一个数组?
提前致谢。
【问题讨论】:
-
因此,如果您的 arrC 具有重复值,则找到它们各自位置的索引并交换 ArrayA 和 ArrayB 的值
-
那么2,5,8位置它也属于同一个组(组2)?
-
请注意,
Dim arrA不会为数组提供维度。所以你应该先做一个Dim arrA(100)然后把数据放进去。之后的Redim是没有用的。 -
@PaulOgilvie 感谢您的提醒。我将整理我的代码。数组很新。
-
我认为您只需要使用 1 个数组而不是三个数组来存储数据..(数组维度将为 2)然后从数组(来自第三列)中找到唯一数据,然后使用该唯一数据并检查数组(第三列是否相等,然后将其存储在 ArrI 中...实际上您只需要对数组进行排序..