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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 09:22   #11
Deison
 
Регистрация: 01.02.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Не экономьте слова. Объясните подробнее: что значит "с таблицы в таблицу"? Что значит "универальней"?
Каждое утро приходит подобный отчет. В нем нужно посчитать всякие ремонты и прочую лабудень, при помощи данного макроса выполнить сверку и замену местонахождения. После чего переслать дальше. Причем без формул и макросов.
Так вот, хотелось бы сделать перемещение макроса попроще. Хотя бы тупо копировать, и после выполнения удалять.

з.ы. я реально в вопросах программирования дуб.
Deison вне форума Ответить с цитированием
Старый 02.02.2011, 09:25   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Есть универсальный, и на Find
Но на больших объёмах работает не быстро. Но тут ведь не большие объёмы.
Для данной задачи можно использовать так - на листе тракций один столбец заполняем словом "Тракционный", затем макросом копируем это слово в другой лист в нужное место совпадающих по станции строк. В свободный столбец параллельно можно ставить пометку о совпадении, подсчитав которые получим количество. Хотя сами пометки нумерованные, т.е. количество уже и так будет в последней пометке.
Ссылка (15 раз бесплатно):
для 2007:
http://www.excelworld.ru/index/comparefiles_find/0-25
две версии, для 2000 Экселя тоже:
http://hugo.nxt.ru/CompareFiles.Find.rar

P.S. Макрос в этом файле так и остаётся, в обрабатываемые никакого кода не пишется.

Вот настройки под Ваш файл (в столбец третьего листа Т записал "Тракционный", нашлось 118 совпадений):

Файл - приёмник: C:\temp\Deison\остаток 31.01.2011 (1).xls
Файл - источник: C:\temp\Deison\остаток 31.01.2011 (1).xls
Столбцы сравнения в приёмнике: a
Столбцы сравнения в источнике: b
Лист - приёмник (№): 1
Лист - источник (№): 3
Столбцы - приёмники данных копирования: c
Столбцы - источники данных копирования: t
Столбец для пометок в приёмнике: t
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 02.02.2011 в 09:33.
Hugo121 вне форума Ответить с цитированием
Старый 02.02.2011, 09:27   #13
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
С Exit For 2,18сек,
без 2,2сек.
А если так?
Код:
Public Sub MyCompare()
    Dim i As Long, j As Long, x As Range, n As Long, a(), b(), c()
    a = Range([A8], Cells(Rows.Count, 1).End(xlUp)).Value
    Set x = Range("C8:C" & UBound(a, 1)): b = x.Value
    With Sheets("Тракция"): c = .Range(.[B2], .Cells(Rows.Count, 2).End(xlUp)).Value: End With
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(c, 1)
            If a(i, 1) = c(j, 1) Then
                b(i, 1) = "Тракционный": n = n + 1: Exit For
    End If: Next: Next: x.Value = b
    [A6] = "К-во произведенных замен - " & n
End Sub
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 02.02.2011 в 09:30.
SAS888 вне форума Ответить с цитированием
Старый 02.02.2011, 09:30   #14
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от Deison Посмотреть сообщение
Каждое утро приходит подобный отчет. В нем нужно посчитать всякие ремонты и прочую лабудень, при помощи данного макроса выполнить сверку и замену местонахождения. После чего переслать дальше. Причем без формул и макросов.
Так вот, хотелось бы сделать перемещение макроса попроще. Хотя бы тупо копировать, и после выполнения удалять.

з.ы. я реально в вопросах программирования дуб.
Можно вообще засунуть его в Personal.xls, тогда и копировать не надо будет.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 02.02.2011, 09:38   #15
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
А если так?
[
На пару сотых долей секунды быстрей.
Не существенно:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 02.02.2011, 09:42   #16
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Странно. Из Personal.xls быстрей отрабатывает. Причем оба варианта быстрей.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 02.02.2011, 09:44   #17
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если расположение столбцов не меняется, т.е. всегда таблицы постоянны, то тогда конечно выше написанные макросы лучше и быстрей... Но при любом изменении в структуре - нужно менять код. У меня - нужно поменять настройки.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 02.02.2011, 10:09   #18
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
На пару сотых долей секунды быстрей.
Во-первых, от 2 сек. это 1 %. И чем больше таблица, тем больше будет этот %. Во-вторых, нет предела совершенству. Этот код можно еще немного ускорить. Применить, const вместо строковой переменной, вставлять на лист не весь массив, а ограничить его последней измененной строкой и т.п. Но, похоже, что это уже никому не нужно.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 02.02.2011, 10:21   #19
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Я не азартен. И к универсальности никогда не стремлюсь. Больше беспокоюсь о совместимости версий. На работе еще местами Эксель 5 стоит. Ну и: "Лучшее - враг хорошего":-) А совершенству нет предела...
С уважением, Сергей.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 02.02.2011, 11:47   #20
Deison
 
Регистрация: 01.02.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Можно вообще засунуть его в Personal.xls, тогда и копировать не надо будет.
Можно попдробней. Как это? Вложение приветствуется)
Deison вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Посогите сравнить 2 столбца в Exel zip4ik Microsoft Office Excel 8 18.08.2010 18:43
Необходимо сравнить две таблицы и внести изменения LAM Microsoft Office Excel 1 22.01.2009 12:46
Помогите пожалуйста сравнить два столбца ddimma Microsoft Office Excel 4 16.01.2009 09:01
Удалить из строки S1 первую, последнюю, все подстроки совпадающие с S2 ТРОЯН=) Паскаль, Turbo Pascal, PascalABC.NET 1 10.12.2008 23:28