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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2010, 21:11   #1
dark.angel
 
Регистрация: 23.02.2010
Сообщений: 4
Сообщение Расчёт проходного балла (работа с массивами и цикл в Excel без VB)

Добрый день, уважаемые форумчане!
В связи с тем, что специфика моей деятельности как программиста связана с совершенно иными средами разработки, не могу одолеть несложную задачу на Excel, которая попалась под руку и которую необходимо срочно решить.

Итак, коротко: имеется таблица со значениями от 0 до 10, значений около 25-30. Имеется перменная, равная к примеру 6.
Требуется выбрать не более 6 самых высоких значений из списка и вывести наименьшее из них. Разумеется, значения будут меняться, и переменная тоже. На данный момент я добился подсчёта количества повторов каждого из значений, а что делать дальше (каким образом не прибегая к VB в цикле прогнать каждое из значений по убыванию до момента, пока результат вычитания не станет <1, я не знаю как это сделать средствами экселя)

Итак, ещё раз алгоритм (с прикреплённым скрином таблицы):


Итак, шаг #1: берём количество повторов первого (самого высокого) значения (равного 10), т.е. 1 повтор. Из нашей переменной (D6=6) вычитаем получившееся кол-во повторов (6-1=5) и проверяем, чтобы это было больше нуля. Если больше, то обновляем (запоминаем) переменную (вместо 6 у нас остаётся 5) и переходим к следующей, точно такой же итерации, но со следующей парой значений из таблицы (9=>4). Получается 5-4=1 что тоже больше 0, запоминаем (обновляем) переменную получившимся значнием и переходим к следующей итерации

Далее у нас идёт пара значений 8=>6
Таким образом 1-8 меньше нуля, значит записываем в качестве нужного нам результата (к примеру запишем его в ячейку D2) аргумент последней итерации (9), а аргумент текущей (8) запишем в другую ячейку (к примеру D3). На этом и закончим наш цикл.

Возникает вопрос, каким образом реализовать вышеописанный алгоритм? Дело в том, что сам я php программист и схема хранения и доступа к массивам в excel с моим представлением и пониманием не очень стыкуется
В c бы сделал это циклом в 2 строчки, однако как я понял, в excel ни циклов, ни массивов (кроме матричного представления) нету?

Буду очень благодарен, если кто-нибудь сможет разъяснить или помочь с реализацией этого чуда.

Заранее всем огромное спасибо!
dark.angel вне форума Ответить с цитированием
Старый 23.02.2010, 21:28   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

алгоритм отличный, но его весь полностью заменяет одна функция НАИБОЛЬШИЙ.
Вложения
Тип файла: rar Книга256.rar (5.6 Кб, 22 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.02.2010, 21:37   #3
dark.angel
 
Регистрация: 23.02.2010
Сообщений: 4
По умолчанию

Огромное спасибо за пример! Пытался что-то соорудить из этой функции раньше, но ничего не вышло. Теперь пытаюсь вникнуть, в чём была моя ошибка. Ещё раз спасибо!
dark.angel вне форума Ответить с цитированием
Старый 23.02.2010, 22:49   #4
dark.angel
 
Регистрация: 23.02.2010
Сообщений: 4
По умолчанию

В заключение маленький вопросик по синтаксису
Никак не получается корректно написать формулу
=COUNTIF(R[-3]C[-2]:R[22]C[-2];">=8")

где вместо >=8 необходимо подставить >= от VALUE(R[-2]C)
Подскажите, пожалуйста, как это правильно оформить? Перепробовал все варианты, которые пришли в голову, но каждый раз ошибка синтаксиса
dark.angel вне форума Ответить с цитированием
Старый 23.02.2010, 22:57   #5
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

">=8"

заменить например на:
">=" & A1

с синтаксисом ссылок РЦ не знаком к сожалению
Dophin вне форума Ответить с цитированием
Старый 23.02.2010, 23:14   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

....;">=" & R1C1
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.02.2010, 23:27   #7
dark.angel
 
Регистрация: 23.02.2010
Сообщений: 4
По умолчанию

Спасибо!!! Получилось
Необходимую задачу удалось выполнить. Огромное спасибо всем за помощь!!!

Последний раз редактировалось dark.angel; 23.02.2010 в 23:28. Причина: Дописать благодарность
dark.angel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как при импорте из Excel в delphi узнать сколько заполненных строк в книге Excel?чтобы организовать цикл betirsolt БД в Delphi 1 17.01.2010 18:51
Векторный расчёт в excel klok Microsoft Office Excel 2 04.08.2009 22:00
Excel, работа с массивами, возможно ли вообще это сделать? GaSST Microsoft Office Excel 5 17.06.2009 14:28
Excel, работа с массивами, возможно ли вообще это сделать? GaSST Помощь студентам 0 17.06.2009 12:11
Пожалуйста, подскажите можно ли и как сделать в Excel расчёт процентов? magi Microsoft Office Excel 8 28.09.2007 22:48