![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
![]()
Имеем вот такой макрос
Код:
просматриваем файл allwork_2009_year.xlsm ищем в 5 столбце значение равное 202. Смотрим этот же файл столбец 7 - это дата, запоминаем. Переходим в файл Materialy_2009_add203.xlsm просматриваем столбец 1 - это тоже дата, находим соответствие. Смотрим по строке столбец 10, если пусто вставляем значением из столбца 12 файла allwork_2009_year.xlsm . Если не пусто, спускаемся на строку ниже, если пусто - вставляем, если нет - спускаемся ещё на строку вниз. Так вот , желаю добавить ещё одно условие. Кроме поиска значения 202 в файле allwork_2009_year.xlsm , осуществить поиск значения 203 |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Пример бы увидеть...
На массивах аналогичный код будет работать в 38 раз быстрее. Но правда если в промежутке на листе нужны формулы - массивы не годятся. Кроме того, можно сделать код на Find - я тут недавно alexey_nv86 примеры приводил http://www.programmersforum.ru/showthread.php?t=119802
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
![]() Цитата:
А вот и пример |
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Только заменил обращение к листу на массив (ну и пересчёт перенёс в конец):
Код:
1.296875 0.21875 1.296875 0.265625 Отключил это условие - массивы отработали за 29 секунд, Ваш код 822: 29.23438 822.2539 Забыл про главный вопрос: If (Sht2.Cells(i, 5).Value = 202 Or Sht2.Cells(i, 5).Value = 203) And Sht2.Cells(i, 7).Value <> "" Then 'просматриваем столбец 5 "allwork_2009_year.xlsm" КРЕДИТ ищем 202, просматриваем столбец 7 дата скобки можно не ставить, но так понятнее. Или в моём коде If b(i, 1) = 202 Or b(i, 1) = 203 Then или через Select Case: Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 03.11.2010 в 15:55. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
![]()
Спасибо за ответ, однако небольшая просьба.
Соедините Ваш макрос с Вашими же дополнениями, чтобы выбирались значения и 202 и 203 |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Но проверьте внимательно результат.
Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
![]()
Первое испытание - полёт нормальный
Спасибо |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
![]() |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Вот это
b = Range(Sht2.Cells(3, 5), Sht2.Cells(5000, 12)) значит, что берём в массив с 5-ого по 12-ый столбец, но в массиве они будут с 1-го по 8-й элемент. Вот исходя из этого и меняйте размер и соответственно всюду обращение к элементам массива. Можно отдельно создать массив именно только для 23-го столбца, как я сделал массив aa для дат.
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 625
|
![]() Цитата:
Я только начинаю изучать VB. Всё же попрошу Вас помочь мне, вытащитьзначение 23 столбца, вместо 12 |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вытащить данные из бинарного файла | Sanprof | Общие вопросы Delphi | 21 | 25.06.2010 10:37 |
Как "вытащить" данные из 1С 7.07.1 | Феска | БД в Delphi | 2 | 18.03.2009 23:39 |
Вытащить данные из MySQL | Droid | PHP | 3 | 22.12.2008 23:23 |
Помогите вытащить из строки нужные данные! | Romashkaz | Общие вопросы C/C++ | 0 | 22.11.2008 13:30 |
Как вытащить данные из Excel в бд dephi, а потом (после работы с данными) сформировать новый файл excel. | Геля | БД в Delphi | 1 | 10.04.2007 15:11 |