Не точное отображение значения возраста

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

VanBlack
Сообщения: 69
Зарегистрирован: 26 окт 2013, 15:28

Здравствуйте! На листе "Список по группам" в столбце "E" отображаются значения возраста спортсменов, вычисляемые с помощью макроса "Сформировать группы". Неточность отображения заключается в том, что если спортсмену к примеру 11 лет и 10 месяцев, то значение отображается как 11,1. Всё бы ничего, но если другому спортсмену допустим исполнилось 11 лет и 1 месяц, то значение тоже будет отображаться как 11,1. Возможно это из-за формата ячеек столбца "E" и в макросе надо выставить для него числовой формат с отображением двух знаков после запятой, но я боюсь там что-то менять, опасаясь что он вообще перестанет работать. Можно ли это исправить? Просто, если на соревнованиях поединок заканчивается с равным счётом, то победа отдается тому кто младше.
Вложения
Vozrast..zip
(57.12 КБ) 44 скачивания
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

На листе "список" в столбце Е укажите формулу по образцу
=РАЗНДАТ(D27;Настройки!$K$2;"d")/365.25
It's a long way to the top if you wanna rock'n'roll
VanBlack
Сообщения: 69
Зарегистрирован: 26 окт 2013, 15:28

Что-то не то, формула не вводится, пишет ошибка в формуле. А зачем на листе "Список" что-то менять? На нём как раз отображается всё нормально. Неточное отображение на листе "Список по группам".
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Вам уже был дан ответ. Он проверен и работает. Если у вас что-то не работает - значит вы что-то не так делаете.
It's a long way to the top if you wanna rock'n'roll
VanBlack
Сообщения: 69
Зарегистрирован: 26 окт 2013, 15:28

Работает на листе "Список" или "Список по группам"?
А что я могу не так делать? Я ввожу формулу
=РАЗНДАТ(D5;Настройки!$K$2;"d")/365.25
на листе "Список" в ячейку E5
Результат - Ошибка в формуле!
Проходит =РАЗНДАТ(D5;Настройки!$K$2;"d")/365,25
Проходит =РАЗНДАТ(D5;Настройки!$K$2;"d")/365
А вот с точкой не пропускает.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

У каждого свой разделитель дробной части. Думаю, это уж должны догадаться сами.
Хорошо что знак "=" написал, а то тоже сказали бы "не работает" ))
It's a long way to the top if you wanna rock'n'roll
VanBlack
Сообщения: 69
Зарегистрирован: 26 окт 2013, 15:28

Всё равно не понял, что я не так сделал...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Мда. Макрос берет возраст из листа "список" и копирует в лист "список по группам". А вы говорите в листе список все правильно считает.
Вот у вас на листе "список" есть Егоров Вадим. У него стоит значение 10.11 - это неверное значение, здесь после точки ставится число месяцев. Математически 10.2 > 10.11 > 10.1, в реальности быть такого не должно. Ставим мою формулу, значение меняется. Нажимаем "сформировать группы" и возраст на листе "список по группам" обновляется.
Куда тут уже яснее?
It's a long way to the top if you wanna rock'n'roll
VanBlack
Сообщения: 69
Зарегистрирован: 26 окт 2013, 15:28

Я не понял что не так в моём написании формулы...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

В вашем написании формулы после запятой - месяцы и поэтому первая цифра после запятой стоит не "по-рангу", следовательно отсекая точность числа до 1 цифры excel использует правила математики, которые к такому написанию возраста не применимы. Правильным будет интерполяция 12 месяцев в число от 0 до 1 - тогда все у вас будет нормально и отображаться и считаться.
It's a long way to the top if you wanna rock'n'roll
Ответить