0

配列 A1(6)=(45,25,,36,88),A2(6)=(14,25,11),A3(6)=(11,21,20,25,48) があるとします。ここでは、すべての行を Excel の範囲に割り当てるように、行に単一の配列を代入するような単一のステートメントを使用して、これらの配列値を配置できます。たとえば、「C1:R3」範囲とします。

Dim R
R = Split(Join(A1, ",") & "," & Join(A2, ",") & "," & Join(A3, ","), ",")
Range("C5:T5").Value = R

ディクショナリ アイテム (配列) を 1D 配列に結合して、範囲に割り当てることはできますか?

For Each ChilID In ChildIDs

    Redim ChildDetailArray(ArrIndex)
    ChildMatchNum=objExcel1.Application.WorksheetFunction.Match(ChilID, ob3.Columns(1), 0)
    ChildDetailArray=ob1.Range(ob1.Cells(ChildMatchNum,1),ob1.Cells(ChildMatchNum,ArrIndex+1)).Value
    ChildDic.Add ChilID,ChildDetailArray '(ChildDetailArray is an array)

Next

編集1

      suppose a process#20 has 2 child processes say #12,#13. now i used a dictionary object Dic

        Dic(12)=Arr(10,11,,,18) 'child details
        Dic(13)=Arr(5,8,9,,,) ' child details

    ***Output:***  `1D array say ArrMerger()=(10,11,,,18,5,8,9,,,)`

上記For Loopは同じことを行っています.今、Loop終了するときに、Dic(12) と Dic(13) のアイテムである子の詳細を 1D 配列に収集する必要があります

アップデート

      strJoin = ","
For ChildKey In ChildDic.Keys

    strJoin=Join(ChildDic(ChildKey),",") & strJoin

Next

ありがとう

4

1 に答える 1

5

単一のステートメントで辞書項目(配列)を Range に入れることはできますか?? はい、すべての辞書項目を範囲に入れることができます。

このコードを試して、明確に説明するか、必要な変更をコメントしてください。

コード:

Option Explicit

Sub getMerged1DItems()
Dim d As Object, d2 As Object
Dim vArr As Variant
Dim vArr2 As Variant
Dim strJoin As String

    Set d = CreateObject("Scripting.Dictionary")
    Set d2 = CreateObject("Scripting.Dictionary")

    '-- assume you have items in your dictionary
    d.Add "Names", 1
    d.Add "Titles", 2
    d.Add "Jobs", 3
    d.Add "Education", 4
    d.Add "Experience", 5

    '-- add dictionary items into an 1D array
    vArr = d.Keys

    '-- add 1D arryas into d2 dictionary as items
    d2("v" & 1) = vArr
    d2("v" & 2) = vArr

    '-- join multiple 1D array items into one string delimitted by comma
    strJoin = Join(d2("v" & 1), ", ") & "," & Join(d2("v" & 2), ", ")

    '-- split the string by comma delimiter
    vArr2 = Split(strJoin, ",")

    '-- output to sheet using first 1D Array
    Sheets(1).Range("B2").Resize(1, _
             UBound(Application.Transpose(vArr))) = vArr

    '-- output to sheet using dictionary
    Sheets(1).Range("B4").Resize(1, _
             UBound(Application.Transpose(d.Keys))) = d.Keys

    'output to sheet using mergeed 1D array
    Sheets(1).Range("B7").Resize(1, _
             UBound(Application.Transpose(vArr2))) = vArr2

    Set d2 = Nothing
    Set d = Nothing

End Sub

出力:

ここに画像の説明を入力

于 2012-12-23T10:33:35.847 に答える