|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
||||||
Ускорить работу макроса30.11.2017, 16:27. Показов 5830. Ответов 117
Метки нет (Все метки)
Как ускорить работу скрипта?
0
|
||||||
| 30.11.2017, 16:27 | |
|
Ответы с готовыми решениями:
117
Как ускорить работу макроса Можно ли ускорить работу макроса
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 01.12.2017, 15:24 [ТС] | |
|
fever brain, да, работает быстро. Но метод не годный, с ним работать невозможно. Гибкость нулевая, вывести конечный результат тоже невозможно.Просмотр имеющихся данных в коллекции невозможен.
0
|
|
|
oh my god
|
|
| 01.12.2017, 15:42 | |
|
Наверное просто не умееш
в моем примере посмотреть данные в коллекции можно в окне locals window там будет список items это те самые ячейки из большой таблицы просмотреть так-же можно в цикле For Each...next For Each item In collect item это элемент коллекции, тоже может быть либо вариантом либо объектом Добавлено через 3 минуты Пару дней помучаешся, потом понятно будет как с коллекцией работать, еще искать меня будешь чтобы поблагодарить
0
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|||
| 01.12.2017, 18:02 [ТС] | |||
|
fever brain,
Наивный) меня 2 месяца обучали массивам, и я до сих пор в них средненько волоку. И это при условии того что представляю это визуально. То есть открываю таблице экселя это передо мной двумерный массив. А словарь, коллекция с чем можно ассоциировать?
С английским тоже косяк - не помню я его. Да да, так и живу. Добавлено через 1 минуту Hugo121, кто то просил вчера данные Ускорить работу макроса Листы подписаны, что надо получить тоже имеется.
0
|
|||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 01.12.2017, 18:11 | |
|
Так то вчера просил, вчера и нужно было давать
![]() Ну может вечером посмотрю, если буду свободен.
0
|
|
| 01.12.2017, 18:19 [ТС] | |
|
Не по теме: Hugo121, ну я чисто физически не мог предоставить вчера, тк пример на работе,а я уже дома был...
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 01.12.2017, 20:48 | |
|
Не по теме: Ну а я чисто физически днём не могу взять файл, т.к. на работе :( Добавлено через 1 час 55 минут Файл глянул - толку 0. Как сравнивать то? По коду не прогнать - нет того музобоза... и мне кажется в коде много лишнего... Если нужно сравнивать по первым двум элементам массива "сплит по точкам" и + три символа третьего (по результату вроде так, только странно что для Жг8.612.739 пара не подобрана) - так и скажите, тогда можно и на словаре, и коллекции быстро получить точно такой же результат. Добавлено через 32 минуты Ну или примерно такой результат - ибо там на листе "Итго" какая-то компиляция из данных файла и базы, на поддающаяся логике... Ни к листу подтянуто из базы, ни к базе из листа...
0
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 01.12.2017, 20:51 [ТС] | |
|
Hugo121, что значит как сравнивать? Есть лист 1 на нем исходные данные, второй лист это база. Надо сравнить есть ли в базе номера с первого листа. Для этого я беру базу и всю её прогоняю по одному номеру из листа исходных данных. Ищу именно входимость если нет точного совпадения, и так по каждому номеру. Отсюда и номер с жг...-08 не нашел пару, ТК он не входит жг без -08
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 01.12.2017, 21:02 | |
|
Не, там каша:
Лист База ЭС25.267.001.Ц1 ЭС25.267.001 ЭС25.266.001 ЭС25.266.001СБ ЭС25.265.001 ЭС25.278.005СБ ЭС25.278.005 ЭС25.278.001 ЭС25.278.001 Жг8.612.739-08 Жг8.612.739 ЭС25.265.001-03 Результаты Обозначение Карточки ЭС25.267.001.Ц1 ЭС25.267.001 такого номера в базе нет ЭС25.266.001-01 ЭС25.266.001СБ такого номера в базе нет ЭС25.278.005 ЭС25.278.005СБ ЭС25.278.001 ЭС25.278.001 Жг8.612.739 такой номер есть! ЭС25.265.001-03 ЭС25.265.001-03 Добавлено через 1 минуту Почему для ЭС25.278.005 пара нашлась, а для Жг8.612.739 нет? Добавлено через 29 секунд Откуда в результате взялось ЭС25.266.001-01? Добавлено через 47 секунд Почему есть пара для ЭС25.267.001.Ц1?
0
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|||
| 01.12.2017, 21:21 [ТС] | |||
То есть ЭС25.278.005СБ(из базы)=ЭС25.278.005+"СБ", поэтому и нашлась пара. Для Жг8.612.739: Жг8.612.739-08 <>Жг8.612.739 или Жг8.612.739-08 <>Жг8.612.739+"СБ"
А .Ц1, скопировалось по работе( как раз этот номер обсуждали..) Косячок, однако.
0
|
|||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||
| 01.12.2017, 21:29 | ||
|
Только два таких варианта? Тогда делаем на каждое значение два ключа, которым в item кладём индекс массива куда нужно копировать совпадение и всё. Ну или в коллекцию... с словарём просто код проще. Т.е набили при одном проходе по листу в словарь пары ЭС25.278.005 итем=5 ЭС25.278.005СБ итем=5 Затем при одном проходе по базе когда проверяем ЭС25.278.005СБ из словаря получим информацию, что это значение нужно копировать в строку 5 массива листа. Всё.
0
|
||
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 01.12.2017, 21:35 [ТС] | |
|
Hugo121, не берите за пример самый простой вариант. Возьмите с чертовой, там где надо сначало проверить 2 варианта, если они оба не подошли, откинуть все что после чёрточки и повторить. При всем этом надо ещё сравнивать значения столбцов если они равны то писать, если не равны писать надпись.
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 01.12.2017, 21:38 | |
|
Про чёртову не понял, ну да ладно - добавьте ещё ключ "откинуть все что после чёрточки". Ну будет чуть дольше словарь пополняться, ну или ключ для проверки чуть дольше собираться... Не понял последовательность какая нужна.
Добавлено через 20 секунд Всё, я пошёл Голос смотреть...
0
|
|
|
oh my god
|
|
| 01.12.2017, 22:00 | |
|
Немного изменил свой аттач чтобы нагляднее увидеть что получается у меня
0
|
|
|
oh my god
|
||||||
| 01.12.2017, 22:12 | ||||||
|
То что в первой колонке это что уже найденно с ключем из 3-х знаков
во второй колонке найденно по совпадению с ключем из 4-х знаков в третей колонке найденно по совпадению с ключем из 5-х знаков почему разное число знаков ? потомучто в коллекцию нельзя добавить одинаковый ключ поэтому в название ключа дописывается следующий знак чтоб коллекция это значение добавила а уже при поиске делается несколько попыток проверок. Есть ли ключ с тремя знаками?, есть ли с четырьмя?, и тд если нет то переход к следующему элементу просматриваемой таблицы Добавлено через 4 минуты Кликните здесь для просмотра всего текста
0
|
||||||
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 04.12.2017, 14:51 [ТС] | |
|
fever brain, а запросом можно хотя бы половину?
0
|
|
|
oh my god
|
|
| 05.12.2017, 10:51 | |
|
Как ты получал двумерный массив запросом, так и сделай
в моем примере что я дал, это двумерный массив и есть .cells(i,j) Можеш сразу перенести данные в проверяемый лист и использовать так: With Sheets("Полученные данные") 'Заполняем коллекцию для искомых данных...
0
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
||||||
| 05.12.2017, 16:00 [ТС] | ||||||
|
fever brain, начал писать так
Кликните здесь для просмотра всего текста
Как сделать запросом перенести таблицу из базы сервера в свою базу?
0
|
||||||
| 06.12.2017, 12:23 | |
|
Не по теме: Жгёте! Подпишусь на тему!
0
|
|
|
34 / 31 / 1
Регистрация: 06.01.2017
Сообщений: 300
|
|
| 06.12.2017, 17:14 | |
|
Тут надо применить более мощный поиск, хотя бы методом половинного деления.
Т.е. при отыскании элемента #j из массива Arr1 не перебирать все #i во втором массиве, а взять для сравнение значение из середины таблицы. Если это значение "больше", значит искомый номер находится в верхней половине - смотрим середину верхней половины, если меньше - идём на середину нижней половины. Ну и так далее, пока верхняя и нижняя границы не совпадут. Слышал я, что есть методы и посильнее, на основе чисел Фиббоначчи, но не пользовался. Для этого надо индексировать массивы, т.е. каждому его элементу приписать некое значения, так, чтобы их можно было "сравнивать".
0
|
|
|
oh my god
|
||
| 06.12.2017, 17:23 | ||
|
сказанно было что массив неупорядочен. Вы тему то почитайте Человек чтото черпает с базы данных ему надо сравнить с имеющимеся значениями в таблице, получает он эти данные в виде двумерного массива но элементы взаимосвязанны такчто упорядоченность отпадает а значит единственный верный способ использовать коллекцию которая отвечает поставленной задаче ускорения работы макроса. Сейчас автор темы ставит уже другие задачи
0
|
||
| 06.12.2017, 17:23 | |
|
Помогаю со студенческими работами здесь
100
Ускорить код макроса Ускорить действие макроса переноса данных на другой лист
Как ускорить работу пользовательской функции с диапазонами Как прекратить работу макроса? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера»
Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит.
Придуман Биллом Госпером в 1970-х, опубликован в. . .
|
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb">
<style>
<!]>
</ style>
<g id="bush">
</ g>
</ svg>
function fn(){
let rost;/ / высота древа
let xx=165,yy=210,w=256;
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|