![]() |
|
Модераторы: mihanik |
![]()
|
|
| kminas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
В Excel-е заполнена самая обычная таблица, т.е., например 15 строк и 15 столбцов заполнены различными числами. И среди них надо найти 3-5 чисел ближайших по значению к искомому?
|
|||
|
||||
| temr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 30.3.2006 Репутация: нет Всего: нет |
А по какому принципу (алгоритму) выполняется поиск ?
нужен алгоритм задания критерия поиска в двумерном массиве данных. Вообще в VBA существует метод Неявного(Fuzzy) поиска например когда ты ищешь разные типы данных ( даты , цифры, строковые переменные) синтаксис следующий , условие если ... то .... if g like "*" then - будет искать ячейки содержащие любое количество цифр и букв if g like "4*" then - будет искать ячейки начинающиеся на 4 и содержащие любое количество цифр и букв после if g like "#" then - будет искать ячейки содержащие одну цифру от 0-9 if g like "4#" then - будет искать ячейки начинающиеся с 4 и содержащие одну цифру от 0-9 после и т.д. все параметры не помню, перечислил только те, которыми пользуюсь. Это сообщение отредактировал(а) temr - 30.3.2006, 11:49 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Задача слишком неопределенная.
Наиболее разумно написАть функцию, которая принимает диапазон, адрес ячейки и возвращает номер ячейки в отсортированной последовательности диапазона. После чего организовать условное форматирование по возвращаемому значению. Конечно при реализации "в лоб" работать это будет долго - для каждой ячейки потребуется сортировка. Ускорить можно так - в модуле (не листа, отдельном!) зарезервить массив, куда при первом вызове сложить состояние ячеек диапазона и бин-индексы сортировки контента. При входе в процедуру сортировки первым делом сравнивать содержимое массива и содержимое ячеек заданного диапазона. Если изменений нет - сразу выдавать порядковый номер, если есть - заново проводить сортировку. Сортировка - в лучшем случае o(N*log(N)), а сравнение + поиск - o(N)+o(log(N)) = o(N) - так что выигрыш заметный. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| kminas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Спасибо, но я решил эту задачу с другого конца о котором не спрашивал, т.к. до конца не понимал, как к нему подойти, а когда дошёл, оказалось гораздо проще.
|
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 13 Всего: 27 |
Мог бы и поделиться
-------------------- Возмездие настигнет |
|||
|
||||
| kminas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Обязательно поделюсь, даже могу прислать прогу, но только сейчас о-о-о-чень занят. Напишу через несколько дней. Ваще это больше подходит к форуму VB.
|
|||
|
||||
| kminas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Начал вопрос как Экселевский, а решил как Бэйсиковкий.
Задача была найти диаметр воздуховода. Имеется огромная таблица на несколько страниц. По вертикали стоят скорости воздуха (большое количество от 5 до 25м/сек). Они должны были заполнить столбец "А". По горизонтали - стандартные диаметры воздуховодов, которые надо выбрать. Строка "1". А поле это расчетный объем проходящего воздуха. Специалист, зная этот объем, выбирает ближайший при желаемой, для данной задачи, скорости воздуха, скажем от 10 до 12 или от 16 до 20м/сек. После этого смотрит какой диаметр стоит в первой строке этого столбца. Я пошел по другому пути. Я беру расчетный объем и делю его на среднее, или близкое к нему, значение сорости воздуха и уже затем определяю ближайший больший и меньший диаметры. Посыла разработанную мной программку. Не судите строго, т.к. это первая в жизни моя программка, но покритикуйте, пожалуйста, для обретения опыта! |
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 13 Всего: 27 |
Вот ведь мир тесен ты проектируешь воздуховоды ,а я их делаю.Пора объединяться
-------------------- Возмездие настигнет |
|||
|
||||
| kminas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Я их не проектирую, но считаю выбрасываемый из них воздух
А как моя прога? Это сообщение отредактировал(а) kminas - 10.4.2006, 19:26 |
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 13 Всего: 27 |
-------------------- Возмездие настигнет |
|||
|
||||
| kminas |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Правила форума "Программирование, связанное с MS Office" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |