2016-08-04 28 views
0

我想從數組中提取奇數元素並將其分配給另一個數組。從一個數組傳遞奇數值到另一個數組時獲取類型不匹配錯誤

Dim Array2 As Variant 

n = 1 

For i To Array1 
    If n Mod 2 = 0 Then 
     Array2(i) = Array1(i) 
    End If 
    n = n + 1 
Next i 

請有人建議。

+2

什麼是'Array1'?從它的名字和後面的引用來看,它聽起來應該是一個數組,但這不是對的,因爲那麼你會試圖從'I'(一個整數可能是?)數組到數組。計算機只計算數字,所以也許你真的想'爲了我UBound(Array1)'? – Tim

回答

2

這裏是過濾到一個新的數組存在於奇數索引的值的示例的大小:

Dim Array1(), Array2(), i As Long 

Array1 = Array(1, 2, 3, 4, 5, 6) 

ReDim Array2(LBound(Array1) To UBound(Array1) \ 2) 

For i = LBound(Array1) To UBound(Array1) Step 2 
    Array2(i \ 2) = Array1(i) 
Next i 
+0

謝謝邁克爾,確實工作。 –

1

您的for循環應該從Lbound(Array1)到Ubound(Array1)。還需要聲明陣列2

Dim Array2 As Variant 
Redim Array2 (lbound(Array1) to (Ubound(Array1)/2) + 1) 
n = 1 

For i = lbound(Array1) to Ubound(Array1) 
    If n Mod 2 = 0 Then 
     Array2((i/2)-.5) = Array1(i) 
    End If 
n = n + 1 
Next i 
+0

但是當我在Console中看到輸出時。 Array2由所有奇數元素和空偶數元素組成。我只想要奇怪的元素。謝謝 –

+0

@ jamesandy見編輯。這只是數學問題。 –

+0

斯科特,這是行不通的。它仍然給我那些空的偶數元素。另外,它刪除第二個奇數元素爲2/1 - 0.5 = 0.5,並且在數組中沒有0.5的位置。可以是0,1,2 ...等等 –

相關問題