|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.02.2011, 04:07 | #1 |
Регистрация: 01.02.2011
Сообщений: 4
|
Необходимо сравнить 2 столбца и отредактировать совпадающие строки
Доброе время суток!
3-й день на работе и такая засада. Помогите моему горю. До этого с макросами не сталкивался. Есть 2 листа excel "остаток" и "тракция". Неоходимо сравнить столбец "станция" из первого листа с соответсвующим столбцом второго листа. И при совпадении заменить ячейку "местонахождение" в первом листе на "тракционный". В отдельной ячейке посчитать количество замененных. Заранее спасибо. |
02.02.2011, 04:56 | #2 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Пробуйте. В А4 количество замененных.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 Последний раз редактировалось kuklp; 02.02.2011 в 04:58. |
02.02.2011, 05:48 | #3 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Еще вариант.
Чем шире угол зрения, тем он тупее.
|
02.02.2011, 06:15 | #4 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Здравствуйте, тезка. От скуки проверил по скорости оба варианта. С Find вдвое медленней. Проверял так:
Public Sub test() Dim t As Double, i% t = Timer For i = 1 To 100 Call Main Next MsgBox Timer - t t = Timer For i = 1 To 100 Call MyCompare Next MsgBox Timer - t End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
02.02.2011, 08:16 | #5 |
Регистрация: 01.02.2011
Сообщений: 4
|
Спасибо большое. С той таблицей оба варианта работают. Но можно ли сделать макрос универальней? во вложении он уже не работает(
И как проще переносить макрос с таблицы в таблицу? |
02.02.2011, 08:53 | #6 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
А насчет универсальности... Ну, учите ВБА и возможно Вы когда-нибудь напишете универсальный макрос всех времен и народов:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
02.02.2011, 08:58 | #7 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Макрос с использованием массивов будет (хоть и очень быстро) сравнивать 10^8 раз. Т.е. каждое значение с каждым. В то время, как метод Find будет использоваться 10 000 раз. Если Вам не лень - проверьте на таблицах подобного объема. Я не берусь утверждать, какой из способов выиграет. Не экономьте слова. Объясните подробнее: что значит "с таблицы в таблицу"? Что значит "универальней"?
Чем шире угол зрения, тем он тупее.
|
|
02.02.2011, 09:07 | #8 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
К тому же, макрос с использованием массивов, предложенный уважаемым kuklp, можно существенно оптимизировать по скорости.
Чем шире угол зрения, тем он тупее.
|
02.02.2011, 09:09 | #9 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Я тоже думаю, что на больших объемах с Find будет быстрей. Но проверять уже лень. Страна проснулась:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
02.02.2011, 09:16 | #10 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
В последнем варианте я немного доработал макрос. Если бы знать что совпадение может встетиться только раз, можно было бы добавить досрочный выход из цикла, а так... Да вроде и без этого время вполне приемлемое.
Замерил. С Exit For 2,18сек, без 2,2сек.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 Последний раз редактировалось kuklp; 02.02.2011 в 09:24. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Даны строки 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 |