Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA

Модерирует : ShIvADeSt

ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Yuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
Option Explicit
Option Base 1
 
Sub MergeArt()
Dim arr As Variant
Dim ws As Integer
Dim rcnt As Long
Dim alen As Long
Dim r As Long
 
'Some optimization
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
 
ReDim arr(1)
alen = 0
For ws = 1 To 3
    rcnt = Sheets(ws).UsedRange.Rows.Count - 1
    ReDim Preserve arr(rcnt + alen)
    For r = 1 To rcnt
        arr(r + alen) = Sheets(ws).Cells(r + 1, 1).Value
    Next
    alen = alen + rcnt
Next
SortArray arr
RemoveDuplicates arr
For r = 1 To UBound(arr)
    Sheets(4).Cells(r + 1, 1).Value = arr(r)
Next
Sheets(4).Select
 
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Done"
End Sub
 
 Private Sub SortArray(ByRef a As Variant)
    Dim i As Long, j As Long
    Dim t As Variant
 
    'standard bubble sort loops
    For i = LBound(a) To UBound(a) - 1
        For j = i + 1 To UBound(a)
            If a(i) > a(j) Then 'change to < for descending order
                t = a(i)
                a(i) = a(j)
                a(j) = t
            End If
        Next j
    Next i
End Sub
 
Private Sub RemoveDuplicates(ByRef a As Variant)
    Dim i As Long, j As Long
    j = 1
    Dim t() As Variant
    ReDim t(1)
    t(1) = a(1)
    For i = LBound(a) To UBound(a) - 1
        If a(i) <> a(i + 1) Then
            j = j + 1
            ReDim Preserve t(j)
            t(j) = a(i + 1)
        End If
    Next i
    ReDim a(j)
    a = t
End Sub
 

Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 00:54 02-09-2006
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA
ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru