Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2012, 22:47   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Код:
Option Explicit

Sub CompareCopy()
    Dim a(), i&, ii&, t$, x As Byte
    With CreateObject("scripting.dictionary")
        With Sheets(1)
            a = Range(.[L7], .Range("A" & .Rows.Count).End(xlUp)).Value
        End With
        For i = 1 To UBound(a)
            t = Join(Application.Index(a, i, 0), "|")
            .Item(t) = 0&
        Next
        With Sheets(2)
            a = Range(.[L7], .Range("A" & .Rows.Count).End(xlUp)).Value
        End With

        ReDim b(1 To UBound(a), 1 To 12)

        For i = 1 To UBound(a)
            t = Join(Application.Index(a, i, 0), "|")
            If Not .exists(t) Then
                .Item(t) = 0&
                ii = ii + 1
                For x = 1 To 12: b(ii, x) = a(i, x): Next
            End If
        Next
    End With

    If ii > 0 Then
        With Sheets(1)
            With .Cells(.Rows.Count, "A").End(xlUp)(2).Resize(ii, 12)
                .Value = b
                .Interior.ColorIndex = 3
            End With
        End With
    End If
End Sub
Всёж нашёл, что изменить в прежних кодах - Application.Index вставил
Хотя говорят, что циклом слить быстрее было бы... Можно бы на 6000 строк замерить - да нету столько

P.S. Померил - 1000 прогонов каждого кода:
t = Join(Application.Index(a, i, 0), "|"): 7,28125
t = "": For x = 1 To 12: t = t & "|" & a(i, x): Next: 3,46875
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 04.09.2012 в 23:21.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синхронизация БД Bright-rider БД в Delphi 3 19.06.2012 07:32
Синхронизация с БД maryan.vetrov Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 1 25.02.2011 14:19
Сформировать из 30 таблиц 15 000 таблиц, за 15 минут. kola672 Фриланс 31 19.10.2010 01:22
Синхронизация kostyan142 Общие вопросы по Java, Java SE, Kotlin 6 13.01.2010 01:39
Синхронизация yarilo Софт 2 07.08.2009 15:50