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

Вход

Регистрация

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

 

= Мир MS Excel/попарное сравнение - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » попарное сравнение (макросы)
попарное сравнение
RAN Дата: Понедельник, 24.10.2011, 15:44 | Сообщение № 21
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Michael_S, а код показать? Может что придумается...


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеMichael_S, а код показать? Может что придумается...

Автор - RAN
Дата добавления - 24.10.2011 в 15:44
Michael_S Дата: Понедельник, 24.10.2011, 21:45 | Сообщение № 22
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Вот, правда без комментариев.

Макрос в модуле листа. кнопок на запуск нет.

Да, и создание массива по шесть чисел иногда глючит.
К сообщению приложен файл: megavlom.xlsm (27.5 Kb) · megavlom.xls (58.0 Kb)


Сообщение отредактировал Michael_S - Понедельник, 24.10.2011, 22:06
 
Ответить
СообщениеВот, правда без комментариев.

Макрос в модуле листа. кнопок на запуск нет.

Да, и создание массива по шесть чисел иногда глючит.

Автор - Michael_S
Дата добавления - 24.10.2011 в 21:45
RAN Дата: Вторник, 25.10.2011, 00:26 | Сообщение № 23
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Создание массива действительно глючит.
Создал только 460 строк.
Михаил, пара вопросов
1. Зачем цикл For i = MiRow To 1 Step -1 в обратном порядке
2. Алгоритм работы Para((197 - k1) / 2 * k1 - 99 + k2) = True

PS Выгрузку я сделал, но что-то в макросе не так. Сколько раз запускаю, столько раз и обрезается выходной массив.
К сообщению приложен файл: _megavlom.rar (34.7 Kb)


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 25.10.2011, 00:40
 
Ответить
СообщениеСоздание массива действительно глючит.
Создал только 460 строк.
Михаил, пара вопросов
1. Зачем цикл For i = MiRow To 1 Step -1 в обратном порядке
2. Алгоритм работы Para((197 - k1) / 2 * k1 - 99 + k2) = True

PS Выгрузку я сделал, но что-то в макросе не так. Сколько раз запускаю, столько раз и обрезается выходной массив.

Автор - RAN
Дата добавления - 25.10.2011 в 00:26
Michael_S Дата: Вторник, 25.10.2011, 01:44 | Сообщение № 24
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Немного исправил. Теперь массив в 1 000 000 строк в макросе Proverka формируется за минуту.
Полностью обрабатывается, с удалением строк примерно за 50 сек, из 30 сек - удаление строк.
Quote (RAN)
1. Зачем цикл For i = MiRow To 1 Step -1 в обратном порядке

в первоначальном варианте сразу удалял строки, осталось в наследство. разницы ни какой
Quote (RAN)
2. Алгоритм работы Para((197 - k1) / 2 * k1 - 99 + k2) = True

Немного теории.
Предположим, имеем массив из пяти чисел: {4;5;6;7;8}
Из них мы можем составить десять пар:
1. 4-5
2. 4-6
3. 4-7
4. 4-8
5. 5-6
6. 5-7
7. 5-8
8. 6-7
9. 6-8
10. 7-8
Как видим, если мы составляем пары именно в таком порядке, то у каждой пары есть свой уникальный номер.
Теперь, если мы обозначим начало массива min, конец - max, первое чило пары - k1, второе - k2, то уникальный номер пары N можно вычислить по формуле
Code
N = (2*max-min-k1)*(k1-min+1)/2-max+k2


Обязательное условие: k1< k2

Для массива Para я взял числа 1-99. Подставив min =1; max=99 и проведя арифметические действия, получим формулу уникального номера любой пары чисел из массива 1-99
Code
(197 - k1) / 2 * k1 - 99 + k2


Массив Para является своего рода словарем пар, присутствующих в столбце A:B
К сообщению приложен файл: 6547222.xlsm (31.5 Kb)


Сообщение отредактировал Michael_S - Вторник, 25.10.2011, 02:08
 
Ответить
СообщениеНемного исправил. Теперь массив в 1 000 000 строк в макросе Proverka формируется за минуту.
Полностью обрабатывается, с удалением строк примерно за 50 сек, из 30 сек - удаление строк.
Quote (RAN)
1. Зачем цикл For i = MiRow To 1 Step -1 в обратном порядке

в первоначальном варианте сразу удалял строки, осталось в наследство. разницы ни какой
Quote (RAN)
2. Алгоритм работы Para((197 - k1) / 2 * k1 - 99 + k2) = True

Немного теории.
Предположим, имеем массив из пяти чисел: {4;5;6;7;8}
Из них мы можем составить десять пар:
1. 4-5
2. 4-6
3. 4-7
4. 4-8
5. 5-6
6. 5-7
7. 5-8
8. 6-7
9. 6-8
10. 7-8
Как видим, если мы составляем пары именно в таком порядке, то у каждой пары есть свой уникальный номер.
Теперь, если мы обозначим начало массива min, конец - max, первое чило пары - k1, второе - k2, то уникальный номер пары N можно вычислить по формуле
Code
N = (2*max-min-k1)*(k1-min+1)/2-max+k2


Обязательное условие: k1< k2

Для массива Para я взял числа 1-99. Подставив min =1; max=99 и проведя арифметические действия, получим формулу уникального номера любой пары чисел из массива 1-99
Code
(197 - k1) / 2 * k1 - 99 + k2


Массив Para является своего рода словарем пар, присутствующих в столбце A:B

Автор - Michael_S
Дата добавления - 25.10.2011 в 01:44
Michael_S Дата: Вторник, 25.10.2011, 04:28 | Сообщение № 25
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Зы. При 2000 пар в столбце A:B файл (1 000 000 строк) обрабатывается менее 10 сек.
К сообщению приложен файл: megavlom1.xlsm (30.1 Kb)
 
Ответить
СообщениеЗы. При 2000 пар в столбце A:B файл (1 000 000 строк) обрабатывается менее 10 сек.

Автор - Michael_S
Дата добавления - 25.10.2011 в 04:28
Мир MS Excel » Вопросы и решения » Вопросы по Excel » попарное сравнение (макросы)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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