Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.04.2007, 10:48   #1
gdneon
 
Регистрация: 09.04.2007
Сообщений: 3
По умолчанию Поиск позиции элемента несортированного массива

Народ, помогите решить проблему. Есть массив из, скажем, семи различных цифр (строка). В строке числа несортированы и отсортировать их никак нельзя. Менять значения в ячейках тоже нельзя. Нужно найти в массиве позицию (адрес) такого числа значение которого было бы больше или равно, чем наибольшее число уменьшанное на 20.
Пример1:
-48 -158 -65 -65 -214 -47 -336
В данном массиве нужно найти позицию числа "-47" (Наибольшее число "-48". Уменьшенное на -20 будет "-68". Число "-47" больше, чем "-68", следовательно, нужна позиция числа "-47".
Пример2:
236 -443 -350 -350 -499 - 331 -620
Наибольшее число "236". Уменьшенное на 20 будет "216". Остальные числа все меньше чем "216", следовательно" нужное чило "236"

Более глобально задача выглядит так:
Мне нужно определить находится ли максимальное число в первом столбике или в любом другом. Причем число должно быть больше других на 20. Если это условие не выполняется, то нужное число - это ближайшее к маскимальному минус 20.

В принципе вместо этого всего сойдёт просто поиск ближайшего по значению элемента массива, а остальное я уж как-нибудь сам.

Последний раз редактировалось gdneon; 09.04.2007 в 12:14.
gdneon вне форума
Старый 09.04.2007, 14:12   #2
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Если я Вас правильно понял, а понедельник, как известно день тяжёлый, то для решения своего вопроса, Вы можете воспользоваться следующей формулой :

{=ПОИСКПОЗ(МИН(ЕСЛИ((A2:G2)>=МАКС(A 2:G2)-20;A2:G2));A2:G2;0)}

Только обратите внимание на то, что :
- вышеопубликованная формула является формулой массива, а это значит, что после её ввода (без фигурных скобок) необходимо нажать клавиши CTRL + SHIFT + ENTER
- если искомых значений окажется несколько, то будет "выбрана" позиция наименьшего из имеющихся
- в первом примере наибольшее число, это -47 (не -48)

Кстати, если Вы не собираетесь добавлять/удалять столбцы (), то позицию можно определить и через номер столбца (хотя первый вариант менее зависим от изменений)
{=МИН(ЕСЛИ((A2:G2)>=МАКС(A2:G2)-20;СТОЛБЕЦ(A2:G2)))}

Последний раз редактировалось pashulka; 09.04.2007 в 15:06.
pashulka вне форума
Старый 10.04.2007, 06:36   #3
gdneon
 
Регистрация: 09.04.2007
Сообщений: 3
По умолчанию

Большое спасибо!
Да, понедельник действительно день тяжёлый. Дело в том, что я неправильно сформулировал условия. )
В примере1 нужное число "-48", а не "-47". (в исходном массиве число "-47" - максимальное, уменьшаем его на 20 и максимальным становится "-48", следовательно и позиция нужна числа "-48").
Решение осложняется тем, что функция ПОИСКПОЗ просматривает весь исходный массив и, соотвественно, не учитывает уменьшение на 20.

Последний раз редактировалось gdneon; 10.04.2007 в 06:38.
gdneon вне форума
Старый 10.04.2007, 17:57   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Вторник тоже не самый лучший день, ибо до пятницы ещё далеко, тем не менее предлагаю ознакомиться со следующим примером, возможно он окажется для Вас полезен ...
Вложения
Тип файла: zip Match (gdneon).zip (6.5 Кб, 52 просмотров)
pashulka вне форума
Старый 16.04.2007, 08:08   #5
gdneon
 
Регистрация: 09.04.2007
Сообщений: 3
По умолчанию

Спасибо большое, но я уже эту свою задачу решил совсем по другому. Может кому ещё понадобится.. )
gdneon вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элемента динамического массива Dogmat Помощь студентам 6 13.07.2008 14:33
Поиск элемента ЭД4-0014 Помощь студентам 12 05.06.2008 21:47
Удаление элемента массива chiffa Общие вопросы Delphi 1 03.01.2008 19:24