Доброго времени всем. Может ли кто подсказать, как сделать, чтоб ри подсчете места сперва учитывалось время участников, взявших максимальное количество КП от выставленного в ячейке "J2", потом от большего числа взятых КП к меньшим. Участники, превысившее контрольное время с любым числом взятых КП занимают места ниже участников взявших минимальное количество КП, но вложившихся в контрольное время. Их строки в пределах таблицы должны выделяться светло-серым цветом.
При проведении соревнования в разных группах (столбец D) места должны высчитываться в каждой группе отдельно.
Таблица в архиве
Доброго времени всем. Может ли кто подсказать, как сделать, чтоб ри подсчете места сперва учитывалось время участников, взявших максимальное количество КП от выставленного в ячейке "J2", потом от большего числа взятых КП к меньшим. Участники, превысившее контрольное время с любым числом взятых КП занимают места ниже участников взявших минимальное количество КП, но вложившихся в контрольное время. Их строки в пределах таблицы должны выделяться светло-серым цветом.
При проведении соревнования в разных группах (столбец D) места должны высчитываться в каждой группе отдельно.
Я бы, конечно, итоговую таблицу вынес на отдельный лист, и там бы посчитал всё, что надо. Причем сразу макросами. Причем и отсортировать затем можно, как потребуется. Потому что в момент работы таймеров пересчитывать ещё и массивные формулы рангов - это убийственно Ещё - диапазоны таблицы данных лучше сделать динамическими (а ещё лучше - статическими, по размеру используемой области), а не на целые столбцы. Ну и в коде макросов тогда использовать их же, а тоже не обработку всех строчек.
Впрочем, можно и сразу формулы поставить... Попробуйте привести все значения к "приведенному времени", превратив штрафы в соответствующий порядок времени:
Код
=J7+(maxCP-H7)*$F$4+(I7>0)*maxCP*$F$4
=ОбщееВремя+НевзятоКП*КонтрольноеВремя+(ЕстьШтраф->ВсегоКП*КонтрольноеВремя) дает нам как раз нужную последовательность чисел. Остаётся только выделить группы и рассчитать ранг...
Я бы, конечно, итоговую таблицу вынес на отдельный лист, и там бы посчитал всё, что надо. Причем сразу макросами. Причем и отсортировать затем можно, как потребуется. Потому что в момент работы таймеров пересчитывать ещё и массивные формулы рангов - это убийственно Ещё - диапазоны таблицы данных лучше сделать динамическими (а ещё лучше - статическими, по размеру используемой области), а не на целые столбцы. Ну и в коде макросов тогда использовать их же, а тоже не обработку всех строчек.
Впрочем, можно и сразу формулы поставить... Попробуйте привести все значения к "приведенному времени", превратив штрафы в соответствующий порядок времени:
Код
=J7+(maxCP-H7)*$F$4+(I7>0)*maxCP*$F$4
=ОбщееВремя+НевзятоКП*КонтрольноеВремя+(ЕстьШтраф->ВсегоКП*КонтрольноеВремя) дает нам как раз нужную последовательность чисел. Остаётся только выделить группы и рассчитать ранг...AndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Среда, 25.12.2013, 13:13
Спасибо, что откликнулись на мое обращения. Прошу не судить строго, но, к сожалению, моих знаний пока не хватает на осознание пути решения, предложенного Вами.
Цитата
щё - диапазоны таблицы данных лучше сделать динамическими (а ещё лучше - статическими, по размеру используемой области), а не на целые столбцы. Ну и в коде макросов тогда использовать их же, а тоже не обработку всех строчек.
Свою программу я решил сделать на основе программы TimerEx от EducatedFool с его разрешения Я не все понял в его программе, но после моей переделки она стала более-менее отвечать моим потребностям. Постараюсь найти и ограничить используемые дыапазоны.
Если это не займет у Вас много труда и времени, помогите понять предложенное Вами решение и . С уважением и благодарностью.
P.S. Для удобства присвоил ячейке контрольного времени имя ControlTime
Спасибо, что откликнулись на мое обращения. Прошу не судить строго, но, к сожалению, моих знаний пока не хватает на осознание пути решения, предложенного Вами.
Цитата
щё - диапазоны таблицы данных лучше сделать динамическими (а ещё лучше - статическими, по размеру используемой области), а не на целые столбцы. Ну и в коде макросов тогда использовать их же, а тоже не обработку всех строчек.
Свою программу я решил сделать на основе программы TimerEx от EducatedFool с его разрешения Я не все понял в его программе, но после моей переделки она стала более-менее отвечать моим потребностям. Постараюсь найти и ограничить используемые дыапазоны.
Если это не займет у Вас много труда и времени, помогите понять предложенное Вами решение и . С уважением и благодарностью.
P.S. Для удобства присвоил ячейке контрольного времени имя ControlTime
Разберитесь с форматом и значением ячейки контрольного времени (у вас там строка, а не число) и формируемыми значениями штрафного времени (почему вам приходится делить их на 86400?). Кстати, заявленный функционал "по достижении контрольного времени начинает идти счетчик штрафного времени" - не работает...
в любой свободный столбец в седьмую строчку, затем протяните вниз. И посмотрите, какое значение приведенного времени формируется при разных значениях исходных данных...
А я пока подумаю, как проще вам место рассчитать
Разберитесь с форматом и значением ячейки контрольного времени (у вас там строка, а не число) и формируемыми значениями штрафного времени (почему вам приходится делить их на 86400?). Кстати, заявленный функционал "по достижении контрольного времени начинает идти счетчик штрафного времени" - не работает...
в любой свободный столбец в седьмую строчку, затем протяните вниз. И посмотрите, какое значение приведенного времени формируется при разных значениях исходных данных...
А я пока подумаю, как проще вам место рассчитать AndreTM
Спасибо!!! Нашел ошибку: у меня сотые в контрольном времени были после двоеточия, а надо после запятой. Удалил этот вопрос из поста, а после увидел Ваш совет.
Код
Кстати, заявленный функционал "по достижении контрольного времени начинает идти счетчик штрафного времени" - не работает...
Его наверное нужно решать только в ВБА...
Цитата
(почему вам приходится делить их на 86400?)
Извините, не найду где это...
Спасибо!!! Нашел ошибку: у меня сотые в контрольном времени были после двоеточия, а надо после запятой. Удалил этот вопрос из поста, а после увидел Ваш совет.
Код
Кстати, заявленный функционал "по достижении контрольного времени начинает идти счетчик штрафного времени" - не работает...
??? Контрольное время в 1 минуту я выставил, чтоб проверить работает ли счетчик штрафного времени. На соревнованиях, а у нас это в основном детские, контрольное время может быть равно 2-3 часам, а при хорошей тактике и скорости беговое время может занять около часа. Так, условно, результат (час бегового времени + сумма невзятых КП) может быть больше, чем "неукладка" в штрафное время при всех найденных КП. А по условиям спортсмены, невложившиеся в Контрольное время занимают место после спортсменов, вложившихся в контрольное время даже при невзятых КП
В пост внесены изменения.
??? Контрольное время в 1 минуту я выставил, чтоб проверить работает ли счетчик штрафного времени. На соревнованиях, а у нас это в основном детские, контрольное время может быть равно 2-3 часам, а при хорошей тактике и скорости беговое время может занять около часа. Так, условно, результат (час бегового времени + сумма невзятых КП) может быть больше, чем "неукладка" в штрафное время при всех найденных КП. А по условиям спортсмены, невложившиеся в Контрольное время занимают место после спортсменов, вложившихся в контрольное время даже при невзятых КП
Вы же пишете, что "беговое время" не может быть больше "контрольного времени", - всё остальное время, если оно есть - штрафное. А вот "общее время" (что будет беговое+штрафное) - может быть больше контрольного. Заметьте, в формуле используются все три времени, и каждое из них - добавляет значение в соответствии с неким условием. Замечу, что мы всегда на ориентировании приводили результат ко времени, и примерно так, как посчитано у меня. А "коэффициент" может быть любым - но в данном случае он не может быть меньше, чем "контрольное время". Внимательнее разберитесь, что именно подсчитывает формула...
Вы же пишете, что "беговое время" не может быть больше "контрольного времени", - всё остальное время, если оно есть - штрафное. А вот "общее время" (что будет беговое+штрафное) - может быть больше контрольного. Заметьте, в формуле используются все три времени, и каждое из них - добавляет значение в соответствии с неким условием. Замечу, что мы всегда на ориентировании приводили результат ко времени, и примерно так, как посчитано у меня. А "коэффициент" может быть любым - но в данном случае он не может быть меньше, чем "контрольное время". Внимательнее разберитесь, что именно подсчитывает формула...AndreTM
Понял!!! Я не поставил формулу в столбец "Штрафное время". Теперь вижу, что в любом случае просроченное время будет больше даже при максимально невзятых КП. Осталось умудриться и расставлять места в каждой группе... Плюсик Вам в рейтинг. Благодаря Вам получил хороший урок.
Спасибо! Прошу прощения, вынужден бежать на работу.
Понял!!! Я не поставил формулу в столбец "Штрафное время". Теперь вижу, что в любом случае просроченное время будет больше даже при максимально невзятых КП. Осталось умудриться и расставлять места в каждой группе... Плюсик Вам в рейтинг. Благодаря Вам получил хороший урок.
Спасибо! Прошу прощения, вынужден бежать на работу.baspav
Знания ценны, когда передаются другим.
Сообщение отредактировал baspav - Среда, 25.12.2013, 17:16
Спасибо, я б до этого шел оччень долго ... Все отлично работает. С Вашего разрешения, еще один вопрос: Можно ли узнать среднее арифметическое мест участников команды в группе? Данные мне нужно поместить на лист "Командный результат"
Спасибо, я б до этого шел оччень долго ... Все отлично работает. С Вашего разрешения, еще один вопрос: Можно ли узнать среднее арифметическое мест участников команды в группе? Данные мне нужно поместить на лист "Командный результат"baspav
Вы зачем в моей формуле нулевые места исправили на пустые строки? Ведь не просто так это было сделано...
Вам надо посчитать не среднеарифметическое, а сумму мест (всегда так считали, вроде). Ну так и сделаем сначала перенос нужных данных (команда-группа-сумма) в общую таблицу, тогда ваши уже имеющиеся формулы всё посчитают
Все же ещё хочу дополнить - нежелательно пользоваться формулами в исходном листе, ведь у вас там "всё для реалтайма". Лучше сделать так: В "таблице соревнования" идёт только учёт исходных данных (КП, время), без простановки мест (они в реалтайме только мешаются и засоряют таблицу ненужной информацией). После окончания соревнования - необходимые данные этого листа (безо всяких кнопочек и т.п.) копируются в другой лист (напр., "результат") - и вот там уже считаются формулами итоговые результаты, делается раскраска и т.п. И на этот же новый лист ссылается и "командный результат". Ведь посчитать результаты требуется только один раз, зачем же делать это динамически? Тогда, в момент проведения соревнования, - формулы пересчитываться не будут, и ничто не будет нагружать книгу, кроме "таймеров".
Вы, кстати, там ещё "личный зачёт" не собираетесь добавлять?
Когда закончите делать книгу - не поделитесь готовым результатом? Хочу посмотреть, как получится по быстродействию, и как работает форма "Клавиатура"
Вы зачем в моей формуле нулевые места исправили на пустые строки? Ведь не просто так это было сделано...
Вам надо посчитать не среднеарифметическое, а сумму мест (всегда так считали, вроде). Ну так и сделаем сначала перенос нужных данных (команда-группа-сумма) в общую таблицу, тогда ваши уже имеющиеся формулы всё посчитают
Все же ещё хочу дополнить - нежелательно пользоваться формулами в исходном листе, ведь у вас там "всё для реалтайма". Лучше сделать так: В "таблице соревнования" идёт только учёт исходных данных (КП, время), без простановки мест (они в реалтайме только мешаются и засоряют таблицу ненужной информацией). После окончания соревнования - необходимые данные этого листа (безо всяких кнопочек и т.п.) копируются в другой лист (напр., "результат") - и вот там уже считаются формулами итоговые результаты, делается раскраска и т.п. И на этот же новый лист ссылается и "командный результат". Ведь посчитать результаты требуется только один раз, зачем же делать это динамически? Тогда, в момент проведения соревнования, - формулы пересчитываться не будут, и ничто не будет нагружать книгу, кроме "таймеров".
Вы, кстати, там ещё "личный зачёт" не собираетесь добавлять?
Когда закончите делать книгу - не поделитесь готовым результатом? Хочу посмотреть, как получится по быстродействию, и как работает форма "Клавиатура"AndreTM
Основное мое занятие - преподавание музыки в школе и кружок пешеходного туризма. Знакомство с Эксель длится довольно недолгое время. Да и сорок - не двадцать. На соревнованиях я в основном был представителем команды-участника и в судействе участия не принимал. Потому и могу не учесть всех тонкостей. Вот о "Личниках", действительно забыл.
Возможно, у Вас есть какие либо наработки в данном направлении, не сочтите за наглость просьбу п оделиться опытом и материалами.
По поводу готового результата - нет намерений взять ее в зубы, чтоб, не дай Бог, к кому-то не попала... Я подумываю вывесить ее в нете свободно - ведь есть еще много людей, которым такая прога может пригодится. А, допустим, зимой сидеть с ручкой и калькулятором пусть даже и в машине - не просто.
Форму "Клавиатура" я нашел в иной программе (если интересует - могу вывесить, но надо найти ссылку на публикацию от автора), но там эта форма сделана как приложение в среде ВБ. А я, не зная еще всех тонкостей Эксель решил прозондировать возможность прицепить эту форму к секундомеру. Так, что это - пока моя фантазия. Рою нет (я не о пчелах), ищу попытки профессионалов решить что-нибудь аналогичное, обращаюсь за консультациями, пробую расшифровать их наработки, чтоб попытаться использовать их в своих нуждах.
Хочу надеяться, я не нарушил каких либо этических, моральных, гражданских норм.
Основное мое занятие - преподавание музыки в школе и кружок пешеходного туризма. Знакомство с Эксель длится довольно недолгое время. Да и сорок - не двадцать. На соревнованиях я в основном был представителем команды-участника и в судействе участия не принимал. Потому и могу не учесть всех тонкостей. Вот о "Личниках", действительно забыл.
Возможно, у Вас есть какие либо наработки в данном направлении, не сочтите за наглость просьбу п оделиться опытом и материалами.
По поводу готового результата - нет намерений взять ее в зубы, чтоб, не дай Бог, к кому-то не попала... Я подумываю вывесить ее в нете свободно - ведь есть еще много людей, которым такая прога может пригодится. А, допустим, зимой сидеть с ручкой и калькулятором пусть даже и в машине - не просто.
Форму "Клавиатура" я нашел в иной программе (если интересует - могу вывесить, но надо найти ссылку на публикацию от автора), но там эта форма сделана как приложение в среде ВБ. А я, не зная еще всех тонкостей Эксель решил прозондировать возможность прицепить эту форму к секундомеру. Так, что это - пока моя фантазия. Рою нет (я не о пчелах), ищу попытки профессионалов решить что-нибудь аналогичное, обращаюсь за консультациями, пробую расшифровать их наработки, чтоб попытаться использовать их в своих нуждах.
Хочу надеяться, я не нарушил каких либо этических, моральных, гражданских норм.baspav
Вот из-за этого её реализация "там" - проще, поскольку в VB допускается использование ControlArray. В Excel же придётся либо добавлять собственный класс для кнопочек с нужным функционалом (плюс организовывать их в собственный массив/коллекцию), либо ещё как извращаться (например, отслеживать клик по форме с нарисованными кнопочками и рассчитывать "кнопку" по позиции курсора). Кстати, функционал реалтаймового секундомера с точки зрения юзабилити надо ещё продумывать и продумывать. Одно дело, когда участники финишируют поодиночке с достаточными интервалами, и совсем другое - когда несколько сразу... В любом случае, надо иметь дополнительное поле для ручной корректировки погрешности нажатия старт-стопа таймера, иметь индикацию текущего состояния каждого счётчика (включен он или выключен) и т.д.
Вот из-за этого её реализация "там" - проще, поскольку в VB допускается использование ControlArray. В Excel же придётся либо добавлять собственный класс для кнопочек с нужным функционалом (плюс организовывать их в собственный массив/коллекцию), либо ещё как извращаться (например, отслеживать клик по форме с нарисованными кнопочками и рассчитывать "кнопку" по позиции курсора). Кстати, функционал реалтаймового секундомера с точки зрения юзабилити надо ещё продумывать и продумывать. Одно дело, когда участники финишируют поодиночке с достаточными интервалами, и совсем другое - когда несколько сразу... В любом случае, надо иметь дополнительное поле для ручной корректировки погрешности нажатия старт-стопа таймера, иметь индикацию текущего состояния каждого счётчика (включен он или выключен) и т.д.AndreTM
Вот из-за этого её реализация "там" - проще.......счётчика (включен он или выключен) и т.д.
Поэтому на области у нас бегают уже с электронными чипами, и никто не заморачивается такими вопросами. Перерыл нет, - не нашел подобных моей разработок (хотя, может плохо искал...). В селах у нас чипов нет. Все, что делаем - делаем за свои кровные (грубо говоря, воруем у родных детей, чтоб чему-то научить других. Не чужих, потому что через некоторое время, проведенное на занятиях, в походах, на соревнованиях, они далеко не чужие). Ладно, это лирика. Не нравилось бы - не занимался б этим. По секундомеру. Действительно, у меня, как Вы заметили, "суммарный итог" бежит вместе с беговым временем. При этом пересчитываются все формулы завязанные на этом секундомере. Думаю, смогу привязать итоговый подсчет к кнопке "Стоп" в строке, чтоб пересчет общего времени /места производился после останова таймера. Но, наверное уже завтра. Только пришел со школы с утренников-вечеров. Целый день гупатня - в голове кузня. А, и поле для ручной корректировки попробую ввести. Спасибо большое за Вашу помощь и, если честно, очень надеюсь на нее же в продвижении моей работы. Бросать на полпути не хочу.
Цитата
Вот из-за этого её реализация "там" - проще.......счётчика (включен он или выключен) и т.д.
Поэтому на области у нас бегают уже с электронными чипами, и никто не заморачивается такими вопросами. Перерыл нет, - не нашел подобных моей разработок (хотя, может плохо искал...). В селах у нас чипов нет. Все, что делаем - делаем за свои кровные (грубо говоря, воруем у родных детей, чтоб чему-то научить других. Не чужих, потому что через некоторое время, проведенное на занятиях, в походах, на соревнованиях, они далеко не чужие). Ладно, это лирика. Не нравилось бы - не занимался б этим. По секундомеру. Действительно, у меня, как Вы заметили, "суммарный итог" бежит вместе с беговым временем. При этом пересчитываются все формулы завязанные на этом секундомере. Думаю, смогу привязать итоговый подсчет к кнопке "Стоп" в строке, чтоб пересчет общего времени /места производился после останова таймера. Но, наверное уже завтра. Только пришел со школы с утренников-вечеров. Целый день гупатня - в голове кузня. А, и поле для ручной корректировки попробую ввести. Спасибо большое за Вашу помощь и, если честно, очень надеюсь на нее же в продвижении моей работы. Бросать на полпути не хочу.baspav
Дело в том, что я тоже старый ориентировщик Ну и турист-водочник, до кучи (гусары! - слушают: "Турист-водочник - это не тот, кто водку пьёт, это тот, кто по водам ходит" (с) В.П.И.) Плюс, в своё время, - работал в техобеспечении соревнований уровня от района до региона. "Кухня" примерно известна, поэтому и говорю про будущую универсализацию ПО.
Дело в том, что я тоже старый ориентировщик Ну и турист-водочник, до кучи (гусары! - слушают: "Турист-водочник - это не тот, кто водку пьёт, это тот, кто по водам ходит" (с) В.П.И.) Плюс, в своё время, - работал в техобеспечении соревнований уровня от района до региона. "Кухня" примерно известна, поэтому и говорю про будущую универсализацию ПО.AndreTM
Ну и турист-водочник, до кучи (гусары! - слушают: "Турист-водочник - это не тот, кто водку пьёт, это тот, кто по водам ходит" (с) В.П.И.)
Ха!!! Расскажите !!! Это еще ближе. Правда, мы - по своим - карпатским: Черемоши, Прут - на катамаранах. Свой первый выход на воды Белого Черемоша в апреле 2001 никогда не забуду!!! Но вот, дальше куда выйти - не по средствам. А еще каждый год водный передвижной лагерь для воспитанников кружков по реке Днестр от Галича до Хотина традиционно с первого августа две недели. Тут адреналина меньше, но есть возможность отдохнуть с семьей. Дочка с пяти лет на сплавах.
[offtop]
Цитата
Ну и турист-водочник, до кучи (гусары! - слушают: "Турист-водочник - это не тот, кто водку пьёт, это тот, кто по водам ходит" (с) В.П.И.)
Ха!!! Расскажите !!! Это еще ближе. Правда, мы - по своим - карпатским: Черемоши, Прут - на катамаранах. Свой первый выход на воды Белого Черемоша в апреле 2001 никогда не забуду!!! Но вот, дальше куда выйти - не по средствам. А еще каждый год водный передвижной лагерь для воспитанников кружков по реке Днестр от Галича до Хотина традиционно с первого августа две недели. Тут адреналина меньше, но есть возможность отдохнуть с семьей. Дочка с пяти лет на сплавах.baspav
Знания ценны, когда передаются другим.
Сообщение отредактировал baspav - Суббота, 28.12.2013, 21:13
На другой лист скопировать не получилось. Скопировал на тот-же и столбец скрыл. Добавил столбец для ручного ввода времени, но не знаю, как вводить отрицательное значение времени.
На другой лист скопировать не получилось. Скопировал на тот-же и столбец скрыл. Добавил столбец для ручного ввода времени, но не знаю, как вводить отрицательное значение времени.baspav
Добавил столбец для ручного ввода времени, но не знаю, как вводить отрицательное значение
Можно, конечно, добиться ввода и отрицательного значения в формате даты-времени - но зачем? Поскольку корректировки обычно - достаточно малые величины, то просто указывайте их в +/-секундах, а в формулы - подставляйте приведённое значение (напр, +J7/86400).
Кстати, а что вы до сих пор не переделали лист "командный результат"? - я же давал решение
Добавил столбец для ручного ввода времени, но не знаю, как вводить отрицательное значение
Можно, конечно, добиться ввода и отрицательного значения в формате даты-времени - но зачем? Поскольку корректировки обычно - достаточно малые величины, то просто указывайте их в +/-секундах, а в формулы - подставляйте приведённое значение (напр, +J7/86400).
Кстати, а что вы до сих пор не переделали лист "командный результат"? - я же давал решениеAndreTM
Для тренировки: в Запорожье Красная речка (для байдарок), в "Никопольской области" - Каменка: отличне место для знакомства с катамараном, но недостаток - не каждый год и только пару недель (иногда - дней) весной (после снежной зимы). А для походов по спокойной воде, да с детьми - воды валом: Волчья Самара, Псел, Ворскла, Тетерев, Збруч, плавни Днепра...[/offtop]
[offtop]
Цитата
мы - по своим - карпатским
Для тренировки: в Запорожье Красная речка (для байдарок), в "Никопольской области" - Каменка: отличне место для знакомства с катамараном, но недостаток - не каждый год и только пару недель (иногда - дней) весной (после снежной зимы). А для походов по спокойной воде, да с детьми - воды валом: Волчья Самара, Псел, Ворскла, Тетерев, Збруч, плавни Днепра...[/offtop]vikttur