Добрый день! Таблица не поместилась на один лист, разбил на два. Данные вперемешку, не по алфавиту (и на первом и на втором листах есть и "А" и "Я"). Вопрос: каким способом можно сделать сортировку всех данных? Столбцов не больше 10.
Добрый день! Таблица не поместилась на один лист, разбил на два. Данные вперемешку, не по алфавиту (и на первом и на втором листах есть и "А" и "Я"). Вопрос: каким способом можно сделать сортировку всех данных? Столбцов не больше 10.Vinkelman
Sub sortbigdata() Dim Dict As Object, a(), i&, ii&, x&
Set Dict = CreateObject("System.Collections.ArrayList") For i = 1 To 2 a = Sheets(i).UsedRange.Columns(1).Value For ii = 1 To UBound(a) If Len(a(ii, 1)) Then Dict.Add CStr(a(ii, 1)) Next Next Dict.Sort With Workbooks.Add(1) ReDim a(1 To Dict.Count / 2, 1 To 1) For i = 1 To UBound(a) a(i, 1) = Dict.Item(i - 1) Next x = i: ii = 0 .Sheets(1).[a1].Resize(UBound(a), 1) = a .Sheets.Add after:=.Worksheets(1) ReDim a(1 To Dict.Count / 2, 1 To 1) For i = x To Dict.Count ii = ii + 1 a(ii, 1) = Dict.Item(i - 1) Next .Sheets(2).[a1].Resize(UBound(a), 1) = a End With End Sub
[/vba] Должен быть установлен .NET Framework Сортируется один первый столбец. Если их 10 - код нужно усложнять (по задаче непонятно, что с ними вообще делать). P.S. Чуть подправил - числа в первой версии не сортировало...
Попробуйте: [vba]
Код
Sub sortbigdata() Dim Dict As Object, a(), i&, ii&, x&
Set Dict = CreateObject("System.Collections.ArrayList") For i = 1 To 2 a = Sheets(i).UsedRange.Columns(1).Value For ii = 1 To UBound(a) If Len(a(ii, 1)) Then Dict.Add CStr(a(ii, 1)) Next Next Dict.Sort With Workbooks.Add(1) ReDim a(1 To Dict.Count / 2, 1 To 1) For i = 1 To UBound(a) a(i, 1) = Dict.Item(i - 1) Next x = i: ii = 0 .Sheets(1).[a1].Resize(UBound(a), 1) = a .Sheets.Add after:=.Worksheets(1) ReDim a(1 To Dict.Count / 2, 1 To 1) For i = x To Dict.Count ii = ii + 1 a(ii, 1) = Dict.Item(i - 1) Next .Sheets(2).[a1].Resize(UBound(a), 1) = a End With End Sub
[/vba] Должен быть установлен .NET Framework Сортируется один первый столбец. Если их 10 - код нужно усложнять (по задаче непонятно, что с ними вообще делать). P.S. Чуть подправил - числа в первой версии не сортировало...Hugo