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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2011, 15:46   #1
Ok-Alex
Пользователь
 
Регистрация: 01.08.2011
Сообщений: 11
По умолчанию Упростить формулу?

Я создал формулу, которая делает подсчет очков Кубка Мира по авиамодельному спорту. Формула работает, но она сильно сложная и громоздкая. А мне нужно заполнить 60х400 ячеек. Может подскажете как можно ее упростить?

PHP код:
=IF(F1B!E4="1",
50+IF(MID(E$3,2,1)="0",FLOOR((E$3)/10-1,1),FLOOR((E$3)/10,1)),
if(
F1B!E4="2",40+IF(MID(E$3,2,1)="0",FLOOR((E$3-1)/10-1,1),FLOOR((E$3-1)/10,1)),
if(
F1B!E4="3",30+IF(MID(E$3,2,1)="0",FLOOR((E$3-2)/10-1,1),FLOOR((E$3-2)/10,1)),
if(
F1B!E4="4",25+IF(MID(E$3,2,1)="0",FLOOR((E$3-3)/10-1,1),FLOOR((E$3-3)/10,1)),
if(
F1B!E4="5",20+IF(MID(E$3,2,1)="0",FLOOR((E$3-4)/10-1,1),FLOOR((E$3-4)/10,1)),
if(
F1B!E4="6",19+IF(MID(E$3,2,1)="0",FLOOR((E$3-5)/10-1,1),FLOOR((E$3-5)/10,1)),
if(
F1B!E4="7",18+IF(MID(E$3,2,1)="0",FLOOR((E$3-6)/10-1,1),FLOOR((E$3-6)/10,1)),
if(
F1B!E4="8",17+IF(MID(E$3,2,1)="0",FLOOR((E$3-7)/10-1,1),FLOOR((E$3-7)/10,1)),
if(
F1B!E4="9",16+IF(MID(E$3,2,1)="0",FLOOR((E$3-8)/10-1,1),FLOOR((E$3-8)/10,1)),
if(
F1B!E4="10",15+IF(MID(E$3,2,1)="0",FLOOR((E$3-9)/10-1,1),FLOOR((E$3-9)/10,1)),
if(
F1B!E4="11",14+IF(MID(E$3,2,1)="0",FLOOR((E$3-10)/10-1,1),FLOOR((E$3-10)/10,1)),
if(
F1B!E4="11",14+IF(MID(E$3,2,1)="0",FLOOR((E$3-11)/10-1,1),FLOOR((E$3-11)/10,1)),
if(
F1B!E4="12",13+IF(MID(E$3,2,1)="0",FLOOR((E$3-12)/10-1,1),FLOOR((E$3-12)/10,1)),
if(
F1B!E4="13",12+IF(MID(E$3,2,1)="0",FLOOR((E$3-13)/10-1,1),FLOOR((E$3-13)/10,1)),
if(
F1B!E4="14",11+IF(MID(E$3,2,1)="0",FLOOR((E$3-14)/10-1,1),FLOOR((E$3-14)/10,1)),
if(
F1B!E4="15",10+IF(MID(E$3,2,1)="0",FLOOR((E$3-15)/10-1,1),FLOOR((E$3-15)/10,1)),
if(
F1B!E4="16",9+IF(MID(E$3,2,1)="0",FLOOR((E$3-16)/10-1,1),FLOOR((E$3-16)/10,1)),
if(
F1B!E4="17",8+IF(MID(E$3,2,1)="0",FLOOR((E$3-17)/10-1,1),FLOOR((E$3-17)/10,1)),
if(
F1B!E4="18",7+IF(MID(E$3,2,1)="0",FLOOR((E$3-18)/10-1,1),FLOOR((E$3-18)/10,1)),
if(
F1B!E4="19",6+IF(MID(E$3,2,1)="0",FLOOR((E$3-19)/10-1,1),FLOOR((E$3-19)/10,1)),
if(
F1B!E4="20",5+IF(MID(E$3,2,1)="0",FLOOR((E$3-20)/10-1,1),FLOOR((E$3-20)/10,1)),
if(
F1B!E4="21",4+IF(MID(E$3,2,1)="0",FLOOR((E$3-21)/10-1,1),FLOOR((E$3-21)/10,1)),
if(
F1B!E4="22",3+IF(MID(E$3,2,1)="0",FLOOR((E$3-22)/10-1,1),FLOOR((E$3-22)/10,1)),
if(
F1B!E4="23",2+IF(MID(E$3,2,1)="0",FLOOR((E$3-23)/10-1,1),FLOOR((E$3-23)/10,1)),
if(
F1B!E4="24",1,
))))))))))))))))))))))))) 
Объяснение к формуле. Она высчитывает кол-во очков, по этому правилу:
Цитата:
Points are to be allocated to competitors at each contest according to their placing in the results as given in the table and the following items:

Placing 1 2 3 4 5 6 7 8 9 10 11 12
Points 50 40 30 25 20 19 18 17 16 15 14 13

Placing 13 14 15 16 17 18 19 20 21 22 23 24
Points 12 11 10 9 8 7 6 5 4 3 2 1
Each competitor awarded placing points is eligible for a bonus according to the number of competitors they have beaten in the competition. The bonus points are calculated as 1 point per 10 people beaten.
То есть она выставляет очки согласно таблице 1 место 50 очков, 2 - 40 и т.д. и прибавляет бонусы за каждых 10 побежденных участников. То есть берет из ячейки E$3 кол-во участников, делит его на 10.

Пример: 52 участника. Занявший первое место получает 50 очков + 5 за 5 побежденных десятков..

Последний раз редактировалось Ok-Alex; 03.11.2011 в 15:54.
Ok-Alex вне форума Ответить с цитированием
Старый 03.11.2011, 16:32   #2
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Лучше бы приложили пример в виде файла, а то немного не понятно.
Навскидку напрашивается решение:
=ИНДЕКС({50:40:30:25:20:19:18:17:16 :15:14:13:12:11:10:9:8:7:6:5:4:3:2: 1};F1B!E4)+ЦЕЛОЕ((E$3-F1B!E4)/10)

Во второй части формулы +ЦЕЛОЕ(...
не совсем уверен

Последний раз редактировалось MCH; 03.11.2011 в 16:36.
MCH вне форума Ответить с цитированием
Старый 03.11.2011, 16:34   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Может, так?
Код:
=IF(F1B!E4<25,INDEX({50,40,30,25,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1},F1B!E4))+INT(F1B!E$3/10)
Русский вариант
Код:
=ЕСЛИ(F1B!E4<25;ИНДЕКС({50;40;30;25;20;19;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1};F1B!E4))+ЦЕЛОЕ(F1B!E$3/10)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 03.11.2011, 16:45   #4
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Отписаться в своей теме выше Вашего достоинства?
нажать, посмотреть и покраснеть (последнее только для автора)
Тема эта же, зачем новая?
vikttur вне форума Ответить с цитированием
Старый 03.11.2011, 17:06   #5
Ok-Alex
Пользователь
 
Регистрация: 01.08.2011
Сообщений: 11
По умолчанию

Казанский, почти работает. Вы не совсем до конца поняли выставление очков.
Смотрите, если всего участвовало 41 человек, то занявший первое место получает:
50 очков + 4 бонуса за каждый побежденный десяток.
2 место получает 40 очков + 3 бонуса. Так как он победил 40 человек, а не 41 и т.д...

И еще вопрос. Почему если не ввести место, то по умолчанию отображается 50? Как скрыть?
Ok-Alex вне форума Ответить с цитированием
Старый 03.11.2011, 17:08   #6
Ok-Alex
Пользователь
 
Регистрация: 01.08.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от vikttur Посмотреть сообщение
Отписаться в своей теме выше Вашего достоинства?
нажать, посмотреть и покраснеть (последнее только для автора)
Тема эта же, зачем новая?
Проблему с кол-вом вложенных IF я уже решил. Теперь проблема немного другого характера. Прошу прощения, если зря создал новую тему..
Ok-Alex вне форума Ответить с цитированием
Старый 03.11.2011, 17:13   #7
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

если всего участвовало 41 человек, то занявший первое место получает:
50 очков + 4 бонуса за каждый побежденный десяток.
2 место получает 40 очков + 3 бонуса. Так как он победил 40 человек, а не 41 и т.д...


В формуле МСН это учтено. А я вообще зря влез в тему про формулы.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 03.11.2011, 17:19   #8
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Проблема осталась та же и в той же теме предложен путь решения:
Цитата:
в Excel-2003 в таких случаях используют ВПР() с таблицей подстановки, связку ИНДЕКС()/ПОИСКПОЗ(), функцию ВЫБОР()... Это только часть вариантов. Покажите Вашу проблему в документе Excel, поможем. А Вы уж потом переведете все на Google Docs.
vikttur вне форума Ответить с цитированием
Старый 03.11.2011, 17:38   #9
Ok-Alex
Пользователь
 
Регистрация: 01.08.2011
Сообщений: 11
По умолчанию

Excel,вернее GoogleDocs (не переживайте. в нем все функции такие-же) - ТУТ

Есть два листа F1B и F1B_ADD.
В листе F1B я должен вводить кол-во участников (там где AZ-48, MK-15).
В ячейках E4:BL403 я ввожу места, занятые спортсменами на соревнованиях.

В ячейки E4:BL403 листа F1B_ADD нужно поставить формулы, которые будут считать очки...
Ok-Alex вне форума Ответить с цитированием
Старый 03.11.2011, 18:02   #10
Ok-Alex
Пользователь
 
Регистрация: 01.08.2011
Сообщений: 11
По умолчанию

=INDEX({50;40;30;25;20;19;18;17;16; 15;14;13;12;11;10;9;8;7;6;5;4;3;2;1 },F1B!E4)+INT((E$3-F1B!E4)/10)

Да, эта формула работает. Но как сделать, что бы таблица не заполнялась, если ячейка F1B!E4 пустая?
Ok-Alex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упростить формулу staniiislav Microsoft Office Excel 13 24.01.2011 13:37
Можно ли упростить формулу? O_H Microsoft Office Excel 8 14.07.2010 13:42
Нужно упростить, переделать формулу avtopark Microsoft Office Excel 3 06.02.2010 10:32
Как упростить формулу? parsn Microsoft Office Excel 1 31.01.2010 00:53
Упростить формулу Stif-rva Microsoft Office Excel 7 09.03.2009 11:03