मेरे पास एक d = CreateObject("Scripting.Dictionary") है कि इसके आइटम श्रेणियां हैं। मैं उन वस्तुओं को एक रिक्त वर्कशीट में पेस्ट करना चाहता हूं और यह वह कोड है जो मेरे पास अभी है:

ThisWorkbook.Sheets(2).ListObjects(1).DataBodyRange.Clear

    With LatestRevisions
        ThisWorkbook.Worksheets(2).Range("A1").Resize(.Count, 1) = Application.Transpose(.keys)
        ThisWorkbook.Worksheets(2).Range("B1").Resize(.Count, 21) = Application.Transpose(.Items)
    End With

जिसमें LatestRevisions मेरे डिक्शनरी नाम d के लिए एक वैरिएबल सेट है और मैं B1 से 21 की सीमा का आकार बदलता हूं क्योंकि यह मेरी आइटम श्रेणियों का आकार है।

मेरी समस्या यह है कि आइटम गलत दिशा में हैं (कॉलम डेटा पंक्तियों में है और पंक्ति डेटा कॉलम में है), लेकिन अगर मैं Application.Transpose में नहीं डालता तो कुछ भी चिपकाया नहीं जाता है।

कोई विचार?

शुक्रिया

संपादित करें: यहां बताया गया है कि मेरा शब्दकोश कैसे बनाया और भरा जाता है

 Set d = CreateObject("Scripting.Dictionary")
If SearchRng.Columns.Count > 1 Then Exit Function

For Each Cell In SearchRng

    If Not d.Exists(Cell.Value) Then
        d.Add Cell.Value, Cell.Offset(0, 1).Resize(1, 21) 'fetch data from column B:V
    Else
        RevisionInDict = ConvertTextToNumeric(d(Cell.Value).Cells(1).Value)
        Revision = ConvertTextToNumeric(Cell.Offset(0, 1))
        If Revision > RevisionInDict Then
            Set d(Cell.Value) = Cell.Offset(0, 1).Resize(1, 21)
                End If
        End If
    Next

    Set GetLatestRevisions = d
End Function
0
Victor Lalonde 31 जुलाई 2019, 16:06

1 उत्तर

सबसे बढ़िया उत्तर

चाल दोहरा हस्तांतरण करने के लिए है

निम्नलिखित "शीट 2" की कल्पना करें, जिसे मैंने श्रेणियों से पढ़ा है

यहां छवि विवरण दर्ज करें छवि 1: "शीट2" में आइटम भरने के लिए उदाहरण डेटा है।

निम्नलिखित कोड…

Option Explicit

Public Sub TestDictionary()
    Dim Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")

    Dic.Add "key1", Worksheets("Sheet2").Cells(1, 1).Resize(1, 21)
    Dic.Add "key2", Worksheets("Sheet2").Cells(2, 1).Resize(1, 21)
    Dic.Add "key3", Worksheets("Sheet2").Cells(3, 1).Resize(1, 21)
    Dic.Add "key4", Worksheets("Sheet2").Cells(4, 1).Resize(1, 21)
    Dic.Add "key5", Worksheets("Sheet2").Cells(5, 1).Resize(1, 21)
    Dic.Add "key6", Worksheets("Sheet2").Cells(6, 1).Resize(1, 21)


    'output in column A and B
    Worksheets("Sheet1").Range("A1").Resize(Dic.Count, 1).Value = Application.Transpose(dic.keys)
    Worksheets("Sheet1").Range("B1").Resize(Dic.Count, 21).Value = Application.Transpose(Application.Transpose(Dic.items))
End Sub

... निम्नलिखित आउटपुट उत्पन्न करता है:

यहां छवि विवरण दर्ज करें छवि 2: कॉलम A में कुंजियों के आउटपुट के लिए "Sheet1" और कॉलम B से V तक के आइटम।

3
Pᴇʜ 31 जुलाई 2019, 16:42