2016-11-30 86 views
1

我有一個二維數組Dim Line_Qty(6, 2)其值在它類似如下:查找空白項指數中的二維數組的Excel VBA

**Date  Line_No Quantity** 

2016-11-15 1  5856 

2016-11-15 2  5451 

2016-11-15 3  5499 

2016-11-15  

2016-11-15  

2016-11-15  

什麼,我想找到的第一個空是Line_Qty(4, 1)指數

這樣做的目的是我粘貼這些值在Excel表中,我想停止粘貼,直到數量的最後一項。

我粘貼代碼是這樣

For i = 0 To 6 
For j = 0 To 2 

Worksheets("DY_SET").Cells(i + 1, j + 1).Value = Line_Qty(i, j) 
Worksheets("DY_SET").Range("A" & i + 2).NumberFormat = "yyyy-mm-dd" 

Next j 
Next i 

希望我自己清楚,並在此先感謝

+0

您想退出這兩個循環? – tjb1

+0

是的,我想退出兩個循環,因爲我不想只有沒有lineno和數量的日期。所以循環應該以最終數量值退出。 – Tahmaseeb

回答

1

你可以先「截斷」的數組,然後粘貼倖存的值,比如如下:

Dim Line_QtyCopy(0 to 6, 0 to 2) As Variant 

' search Line_Qty first row with empty qty 
For i = 0 To 6 
    If Line_Qty(i, 2) = "" Then Exit For 
Next i 

With Worksheets("DY_SET").Range("A1") '<--| reference target range 
    If i <7 Then '<--| if found empty qty before reaching array end 
     i = i - 1 '<--| update row index to last not emoty one 
     ReDim Line_QtyCopy(0 to i, 0 to 2) '<--| size a new array to the number of rows 
     ' fill it up to last not empty qty in Line_Qty 
     For i = 0 To i 
      For j = 0 To 2 
       Line_QtyCopy(i,j) = Line_Qty(i, j) 
      Next 
     Next 
     .Resize(i).Value = Line_QtyCopy '<--| write it down from cell A1 
    Else 
     .Resize(6).Value = Line_Qty 
    End If 
End With 
+0

非常感謝,它完美的作品,我在想索引的角度來看,這就是爲什麼我被卡住了,截斷陣列甚至在我的腦海中。再次感謝。 – Tahmaseeb

+0

不客氣 – user3598756

1

此代碼逃脫循環時,陣列的某些值爲空。那是你需要的嗎?

For i = 0 To 6 
    For j = 0 To 2 
     If Line_Qty(i, j) = "" Then Exit For 
     Worksheets("DY_SET").Cells(i + 1, j + 1).Value = Line_Qty(i, j) 
    Next j 
    Worksheets("DY_SET").Range("A" & i + 2).NumberFormat = "yyyy-mm-dd" 
Next i 
+0

謝謝@Limak,我有點搗碎你的答案user3598756得到我自己的答案。感謝您的幫助:) – Tahmaseeb