0

好奇心から-連続していない配列を連続した1D配列として作成する良い方法はありますか?

Arr(9)=(2,5 ,,,, 25,14 ,,)をArr(4)=(2,5,25,14)と言います

案内してください

ありがとう

4

1 に答える 1

1
  • そもそもアレイにどのようにデータを投入しますか?範囲を配列に直接転置していない場合は、空のセルを検証してそこから削除し、後の段階で実行する必要がない可能性があります。

空のアイテムを削除するためのループベースのコードは次のとおりです。

Dim Arr as Variant , vArr2 as Variant
Dim d as Object
Dim i as integer, j as integer

Set d = CreateObject("Scripting.Dictionary")

'-- populate data array
vArr(1) = "10"
vArr(2) = "55"
vArr(3) = ""
vArr(4) = "27"
vArr(5) = ""

j = 1
For i = LBound(vArr) To UBound(vArr)
    If vArr(i) <> "" Then
       d.Add vArr(i), j
       j = j + 1
    End If
Next i

'-- pass into a new array
vArr2 = d.Keys

'-- output into sheet
    Sheets(1).Range("B4").Resize(1, _
             UBound(Application.Transpose(d.Keys))) = d.Keys
于 2012-12-23T12:53:59.383 に答える