2013-10-25 4 views
0

Я начинаю с какого-то заимствованного кода, который просматривает один массив столбцов (ANALYSIS_S1_V1) с тысячами записей, деактивирует и сортирует их, а затем заполняет список с помощью результат.Перемещение элементов из списка в диапазон Excel VBA

Теперь мне нужно перечислить все предметы в коллекции (по порядку) на другом листе в моей электронной таблице Excel.

Я новичок в VBA и на этом форуме, надеюсь, я не пропустил ответ, который уже есть. Я нашел один вопрос, который казался похожим, но я недостаточно опыт, чтобы применить его к проекту, над которым я работаю. Вот что я уже нашел: How to write a VBA collection to an Excel sheet

Я также искал Microsoft и нашел то, что выглядит как решение, но я не могу заставить его работать в своем коде (я имею в виду это работает только в более сложные языки программирования, хотя упоминается VB): http://msdn.microsoft.com/en-us/library/83h9yskw.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

Любая помощь будет оценена по достоинству.

Sub RemoveDuplicates2() 
    Dim AllCells As Range, Cell As Range 
    Dim NoDupes As New Collection 
    Dim i As Integer, j As Integer 
    Dim Swap1, Swap2, Item 

' The items are in a range named ANALYSIS_S1_V1 
    Set AllCells = Sheets("Data").Range("ANALYSIS_S1_V1") 

' The next statement ignores the error caused 
' by attempting to add a duplicate key to the collection. 
' The duplicate is not added - which is just what we want! 
    On Error Resume Next 
    For Each Cell In AllCells 
      NoDupes.Add Cell.Value, CStr(Cell.Value) 
'  Note: the 2nd argument (key) for the Add method must be a string 
    Next Cell 

' Resume normal error handling 
    On Error GoTo 0 

' Sort the collection 
    For i = 1 To NoDupes.Count - 1 
     For j = i + 1 To NoDupes.Count 
      If NoDupes(i) > NoDupes(j) Then 
       Swap1 = NoDupes(i) 
       Swap2 = NoDupes(j) 
       NoDupes.Add Swap1, before:=j 
       NoDupes.Add Swap2, before:=i 
       NoDupes.Remove i + 1 
       NoDupes.Remove j + 1 
      End If 
     Next j 
    Next i 

    For Each Item In NoDupes 
     BasicReportForm1.ReportSubject_Index.AddItem Item 
    Next Item 

End Sub 

ответ

0

У вас уже есть все ваши хорошие вещи в коллекции, так, чтобы скопировать хороший материал для столбца в другом листе, вставить это в самом низу подразделы:

For N = 1 To NoDupes.Count 
    Sheets("SheetNew").Range("B" & N).Value = NoDupes.Item(N) 
Next N 
Смежные вопросы