Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Цикл в цикле - ускорить работу. - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: китин, _Boroda_  
Цикл в цикле - ускорить работу.
alex77755 Дата: Воскресенье, 28.01.2018, 12:32 | Сообщение № 21
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Очепятка!
надо так:
[vba]
Код
arr1(q, 8) = IIf(Len(arr1(q, 8)) = 0, r, arr1(q, 8) & ", " & r)
[/vba]
было:
[vba]
Код
arr1(q, 8) = IIf(Len(arr1(q, 8)) = 0, r, arr2(q, 8) & ", " & r)
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru


Сообщение отредактировал alex77755 - Воскресенье, 28.01.2018, 12:33
 
Ответить
СообщениеОчепятка!
надо так:
[vba]
Код
arr1(q, 8) = IIf(Len(arr1(q, 8)) = 0, r, arr1(q, 8) & ", " & r)
[/vba]
было:
[vba]
Код
arr1(q, 8) = IIf(Len(arr1(q, 8)) = 0, r, arr2(q, 8) & ", " & r)
[/vba]

Автор - alex77755
Дата добавления - 28.01.2018 в 12:32
ovechkin1973 Дата: Воскресенье, 28.01.2018, 14:31 | Сообщение № 22
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
без заливки, но быстро.

alex77755, очень быстро, можно сказать, что мгновенно. Только что проверил.. попробую по разбираться в коде..


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
 
Ответить
Сообщение
без заливки, но быстро.

alex77755, очень быстро, можно сказать, что мгновенно. Только что проверил.. попробую по разбираться в коде..

Автор - ovechkin1973
Дата добавления - 28.01.2018 в 14:31
ovechkin1973 Дата: Воскресенье, 28.01.2018, 14:35 | Сообщение № 23
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Очепятка!
надо так:

код поправил.. пока отличий в результате не увидел. Прошу прощения за то, что не сразу отвечаю.. дежурным по кухне сегодня меня сделали.. :D


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
 
Ответить
Сообщение
Очепятка!
надо так:

код поправил.. пока отличий в результате не увидел. Прошу прощения за то, что не сразу отвечаю.. дежурным по кухне сегодня меня сделали.. :D

Автор - ovechkin1973
Дата добавления - 28.01.2018 в 14:35
alex77755 Дата: Воскресенье, 28.01.2018, 14:40 | Сообщение № 24
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

результаты изменились на листе НКУ в 30 колонке


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщениерезультаты изменились на листе НКУ в 30 колонке

Автор - alex77755
Дата добавления - 28.01.2018 в 14:40
ovechkin1973 Дата: Воскресенье, 28.01.2018, 15:27 | Сообщение № 25
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
alex77755, что нужно в коде поменять в коде, чтобы в 30 столбец ставились данные из столбца 23 другого листа? И Вы не против, что я создам другую тему, чтобы по последнему вашему макросу поспрашивать. По правилам форума, одна тема - один вопрос.. а у меня уже наверно перебор. Если да, то ссылку в последнем посту сделаю на новую тему..


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
 
Ответить
Сообщениеalex77755, что нужно в коде поменять в коде, чтобы в 30 столбец ставились данные из столбца 23 другого листа? И Вы не против, что я создам другую тему, чтобы по последнему вашему макросу поспрашивать. По правилам форума, одна тема - один вопрос.. а у меня уже наверно перебор. Если да, то ссылку в последнем посту сделаю на новую тему..

Автор - ovechkin1973
Дата добавления - 28.01.2018 в 15:27
alex77755 Дата: Воскресенье, 28.01.2018, 16:29 | Сообщение № 26
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Цитата
чтобы в 30 столбец ставились данные из столбца 23 другого листа?

ну так просто поменять 2 строчки в макросе!
те где назначается значение arr#(#, 8)
Цитата
По правилам форума, одна тема - один вопрос

по ходу это не разные вопросы, а уточнение
я не совсем понял что надо получить. Предложил вариант. Надо поправить


Могу помочь в VB6, VBA
Alex77755@mail.ru


Сообщение отредактировал alex77755 - Воскресенье, 28.01.2018, 16:31
 
Ответить
Сообщение
Цитата
чтобы в 30 столбец ставились данные из столбца 23 другого листа?

ну так просто поменять 2 строчки в макросе!
те где назначается значение arr#(#, 8)
Цитата
По правилам форума, одна тема - один вопрос

по ходу это не разные вопросы, а уточнение
я не совсем понял что надо получить. Предложил вариант. Надо поправить

Автор - alex77755
Дата добавления - 28.01.2018 в 16:29
ovechkin1973 Дата: Воскресенье, 28.01.2018, 18:15 | Сообщение № 27
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
я не совсем понял что надо получить. Предложил вариант. Надо поправить

не удивительно.. сам не совсем понял, что в 25 посту попросил сделать... трезвый, отдохнувший.. а бредовые вопросы задаю. Долго до меня доходило.. Ваш макрос похоже все сравнивает нормально.. Но я не правильно описал то, что хочу получить в 30 столбцах. Попробую еще раз, если у Вас терпение еще есть..
Допустим на листе "остальные сборочки" в столбце 23 берет название города и ищет его на листе НКУ в столбце 23. Так сейчас и работает. Дак вот... город на листе "остальные сборочки" берется в начала таблицы со строки 3 столбца 23 и мне нужно в 30 столбцах обоих листов поставить число 1, если этот город нашелся на обоих листах в столбце 23. Далее берем город с 4 строки и повторяем поиск.. если он находиться, то в 30-х столбцах ставим 2 и т.д. Мне нужна в 30х столбцах последовательная нумерация.. В приложенном примере выделил зеленым столбы, как хотелось бы видеть результат работы макроса
К сообщению приложен файл: 4_1_.xlsm (30.4 Kb)


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
 
Ответить
Сообщение
я не совсем понял что надо получить. Предложил вариант. Надо поправить

не удивительно.. сам не совсем понял, что в 25 посту попросил сделать... трезвый, отдохнувший.. а бредовые вопросы задаю. Долго до меня доходило.. Ваш макрос похоже все сравнивает нормально.. Но я не правильно описал то, что хочу получить в 30 столбцах. Попробую еще раз, если у Вас терпение еще есть..
Допустим на листе "остальные сборочки" в столбце 23 берет название города и ищет его на листе НКУ в столбце 23. Так сейчас и работает. Дак вот... город на листе "остальные сборочки" берется в начала таблицы со строки 3 столбца 23 и мне нужно в 30 столбцах обоих листов поставить число 1, если этот город нашелся на обоих листах в столбце 23. Далее берем город с 4 строки и повторяем поиск.. если он находиться, то в 30-х столбцах ставим 2 и т.д. Мне нужна в 30х столбцах последовательная нумерация.. В приложенном примере выделил зеленым столбы, как хотелось бы видеть результат работы макроса

Автор - ovechkin1973
Дата добавления - 28.01.2018 в 18:15
bmv98rus Дата: Воскресенье, 28.01.2018, 21:27 | Сообщение № 28
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4112
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
Просто интересно, как поведет себя на реальных данных простой формульный вариант.
К сообщению приложен файл: Copy_of_4_1_.xlsm (26.4 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 28.01.2018, 21:27
 
Ответить
СообщениеПросто интересно, как поведет себя на реальных данных простой формульный вариант.

Автор - bmv98rus
Дата добавления - 28.01.2018 в 21:27
ovechkin1973 Дата: Воскресенье, 28.01.2018, 21:31 | Сообщение № 29
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Просто интересно, как поведет себя на реальных данных простой формульный вариант.

bmv98rus, а если в реальной таблице на обоих листах по 25000 строк.... комп не уснет в нирване расчетов? и так с таким файлом после каждого действия жду по 5-10 минут %)


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
 
Ответить
Сообщение
Просто интересно, как поведет себя на реальных данных простой формульный вариант.

bmv98rus, а если в реальной таблице на обоих листах по 25000 строк.... комп не уснет в нирване расчетов? и так с таким файлом после каждого действия жду по 5-10 минут %)

Автор - ovechkin1973
Дата добавления - 28.01.2018 в 21:31
bmv98rus Дата: Воскресенье, 28.01.2018, 21:37 | Сообщение № 30
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4112
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
Дайте данные , я сам свой комп буду баюкать :-). 25000 строк по современным меркам не много, а вот то что встроенные функции, написанные на C и оптимизированные и работают быстро - это факт.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 28.01.2018, 21:38
 
Ответить
СообщениеДайте данные , я сам свой комп буду баюкать :-). 25000 строк по современным меркам не много, а вот то что встроенные функции, написанные на C и оптимизированные и работают быстро - это факт.

Автор - bmv98rus
Дата добавления - 28.01.2018 в 21:37
ovechkin1973 Дата: Понедельник, 29.01.2018, 18:19 | Сообщение № 31
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Уважаемые Экселеводы.. Уважаемый alex77755, или не выдержал моих глупых вопросов (переделок задания) или занят и не до форума ему.. но я сам не смогу подправить макрос, что он сделал так, как я написал в посту 27..
Есть рабочий макрос от bmv98rus, , но он к сожалению работает на моем файле час почти.. То, что сделал alex77755, работает 3-4 минуты..


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
 
Ответить
СообщениеУважаемые Экселеводы.. Уважаемый alex77755, или не выдержал моих глупых вопросов (переделок задания) или занят и не до форума ему.. но я сам не смогу подправить макрос, что он сделал так, как я написал в посту 27..
Есть рабочий макрос от bmv98rus, , но он к сожалению работает на моем файле час почти.. То, что сделал alex77755, работает 3-4 минуты..

Автор - ovechkin1973
Дата добавления - 29.01.2018 в 18:19
bmv98rus Дата: Понедельник, 29.01.2018, 18:48 | Сообщение № 32
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4112
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
Але. Это не мой макрос. Я его тока чуть подправил.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеАле. Это не мой макрос. Я его тока чуть подправил.

Автор - bmv98rus
Дата добавления - 29.01.2018 в 18:48
ovechkin1973 Дата: Понедельник, 29.01.2018, 18:58 | Сообщение № 33
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Але. Это не мой макрос. Я его тока чуть подправил.

bmv98rus, Прошу прощения.. макрос в первые я написал, но вы его очень сильно оптимизировали в части производительности.


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
 
Ответить
Сообщение
Але. Это не мой макрос. Я его тока чуть подправил.

bmv98rus, Прошу прощения.. макрос в первые я написал, но вы его очень сильно оптимизировали в части производительности.

Автор - ovechkin1973
Дата добавления - 29.01.2018 в 18:58
nilem Дата: Понедельник, 29.01.2018, 19:23 | Сообщение № 34
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
ovechkin1973, привет
попробуйте вот так:


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеovechkin1973, привет
попробуйте вот так:

Автор - nilem
Дата добавления - 29.01.2018 в 19:23
bmv98rus Дата: Понедельник, 29.01.2018, 19:41 | Сообщение № 35
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4112
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
Черт , все время забываю, что с мобилы смайлы ставить нельзя. Мало того, что серьезно получилось, так еще и вторая часть пропала.
Ну с формулами понятно, медленно и не подойдет. А принципиально VBA или например можно посомтреть в сторону PowerQuery?


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеЧерт , все время забываю, что с мобилы смайлы ставить нельзя. Мало того, что серьезно получилось, так еще и вторая часть пропала.
Ну с формулами понятно, медленно и не подойдет. А принципиально VBA или например можно посомтреть в сторону PowerQuery?

Автор - bmv98rus
Дата добавления - 29.01.2018 в 19:41
ovechkin1973 Дата: Понедельник, 29.01.2018, 20:22 | Сообщение № 36
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
попробуйте вот так:

nilem, у меня просто нет слов.... ну и понимания в Вашем коде тоже.. но он сделал свою работу за 127 секунд.. проверял 4 раза.. Один раз в Ваш код добавлял отключение обновления экрана и прочее.. судя по полному отсутствию увеличению работы кода это лишнее.
Наивная просьба.. можно сделать закраску найденных повторов в ячейке первой на обоих листах? Я могу маркорекодером макрос сделать, чтобы в строках, где есть число после Вашего кода в первом столбце красил.. но думаю работать это будет дольше вашего кода...


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
 
Ответить
Сообщение
попробуйте вот так:

nilem, у меня просто нет слов.... ну и понимания в Вашем коде тоже.. но он сделал свою работу за 127 секунд.. проверял 4 раза.. Один раз в Ваш код добавлял отключение обновления экрана и прочее.. судя по полному отсутствию увеличению работы кода это лишнее.
Наивная просьба.. можно сделать закраску найденных повторов в ячейке первой на обоих листах? Я могу маркорекодером макрос сделать, чтобы в строках, где есть число после Вашего кода в первом столбце красил.. но думаю работать это будет дольше вашего кода...

Автор - ovechkin1973
Дата добавления - 29.01.2018 в 20:22
ovechkin1973 Дата: Понедельник, 29.01.2018, 20:25 | Сообщение № 37
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
А принципиально VBA или например можно посомтреть в сторону PowerQuery

bmv98rus, VBA принципиально.. народ на работе Эксель на нужном уровне освоить не может, поэтому и "расхлебывать" кодом написанными профиссионалами приходиться всякие базы данных и прочее.


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
 
Ответить
Сообщение
А принципиально VBA или например можно посомтреть в сторону PowerQuery

bmv98rus, VBA принципиально.. народ на работе Эксель на нужном уровне освоить не может, поэтому и "расхлебывать" кодом написанными профиссионалами приходиться всякие базы данных и прочее.

Автор - ovechkin1973
Дата добавления - 29.01.2018 в 20:25
bmv98rus Дата: Понедельник, 29.01.2018, 21:15 | Сообщение № 38
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4112
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
но он сделал свою работу за 127 секунд

Не удивительно, словарь заполняется немного иначе.
[vba]
Код
    For r = 3 To UBound(arr1) 'заливаем в словарь
        t = arr1(r, 1)
        sl(t) = sl(t) & "|" & r ' запоминаем все строки с уникальными значениями
        arr1(r, 8) = "" 'очищаем поле результатов
    Next r
[/vba]
или
[vba]
Код
With Sheets("НКУ")
    x = .Range("W3", .Cells(Rows.Count, "W").End(xlUp)).Value
End With
ReDim yNk(1 To UBound(x), 1 To 1)
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For i = 1 To UBound(x)
        .Item(x(i, 1)) = i
    Next i
[/vba]

В первом случае заполняется без предварительной формулы на листе.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
но он сделал свою работу за 127 секунд

Не удивительно, словарь заполняется немного иначе.
[vba]
Код
    For r = 3 To UBound(arr1) 'заливаем в словарь
        t = arr1(r, 1)
        sl(t) = sl(t) & "|" & r ' запоминаем все строки с уникальными значениями
        arr1(r, 8) = "" 'очищаем поле результатов
    Next r
[/vba]
или
[vba]
Код
With Sheets("НКУ")
    x = .Range("W3", .Cells(Rows.Count, "W").End(xlUp)).Value
End With
ReDim yNk(1 To UBound(x), 1 To 1)
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For i = 1 To UBound(x)
        .Item(x(i, 1)) = i
    Next i
[/vba]

В первом случае заполняется без предварительной формулы на листе.

Автор - bmv98rus
Дата добавления - 29.01.2018 в 21:15
nilem Дата: Понедельник, 29.01.2018, 22:00 | Сообщение № 39
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Заливки можно сделать с пом-ю УФ (см. файл)
Почему 127 сек? Это оч. много, у вас там 100000 строк?
К сообщению приложен файл: _4_1_.xlsm (30.3 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеЗаливки можно сделать с пом-ю УФ (см. файл)
Почему 127 сек? Это оч. много, у вас там 100000 строк?

Автор - nilem
Дата добавления - 29.01.2018 в 22:00
ovechkin1973 Дата: Понедельник, 29.01.2018, 22:06 | Сообщение № 40
Группа: Проверенные
Ранг: Обитатель
Сообщений: 429
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Не удивительно, словарь заполняется немного иначе.
For r = 3 To UBound(arr1) 'заливаем в словарь
t = arr1(r, 1)
sl(t) = sl(t) & "|" & r ' запоминаем все строки с уникальными значениями
arr1(r, 8) = "" 'очищаем поле результатов
Next r

это вариант работает 283 секунды в моем варианте..
А вот вариант nilem, после того, как я перенес данные из одной книги в другую (видимо были какие то форматы) и она стала "весить" в полтора раз меньше стал работать меньше секунды.. ничего не понимаю... что могло раньше так тормозить? Надо делать перекур мозгу.. не рассчитан он на такие высокие технологии :)


Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.

Сообщение отредактировал ovechkin1973 - Понедельник, 29.01.2018, 22:07
 
Ответить
Сообщение
Не удивительно, словарь заполняется немного иначе.
For r = 3 To UBound(arr1) 'заливаем в словарь
t = arr1(r, 1)
sl(t) = sl(t) & "|" & r ' запоминаем все строки с уникальными значениями
arr1(r, 8) = "" 'очищаем поле результатов
Next r

это вариант работает 283 секунды в моем варианте..
А вот вариант nilem, после того, как я перенес данные из одной книги в другую (видимо были какие то форматы) и она стала "весить" в полтора раз меньше стал работать меньше секунды.. ничего не понимаю... что могло раньше так тормозить? Надо делать перекур мозгу.. не рассчитан он на такие высокие технологии :)

Автор - ovechkin1973
Дата добавления - 29.01.2018 в 22:06
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!