Форум на Kuban.ru (http://forums.kuban.ru/)
-   Использование программ (http://forums.kuban.ru/f1025/)
-   -   Как упростить формулу Excel (http://forums.kuban.ru/f1025/kak_uprostit-_formulu_excel-3673506.html)

rock1 08.02.2013 12:19

Как упростить формулу Excel
 
Подскажите как упростить формулу Excel :
=B5*B6+C5*C6+D5*D6+E5*E6+F5*F6+G5*G6+H5*H6+I5*I6+J5*J6+K5*K6+L5*L6+M5*M6 ...

economist 08.02.2013 13:00

=СУММПРОИЗВ(B5:K5;M6:M6)

economist 08.02.2013 13:02

2) Или формулой массива, но это чуть сложнее.

3) или пользовательской VBA-функцией, это еще чуть сложнее

economist 08.02.2013 13:03

упс, =СУММПРОИЗВ(B5:K5;B6:K6)

rock1 08.02.2013 14:59

Спасибо большое!

economist 09.02.2013 21:56

rock1 - не за что! Обращайтесь. Excel и Gin - "родныя стяхии"...

fanatnascar 09.02.2013 22:48

5-economist >у меня шеф недавно-показательно за час в экселе сделал решение задачи, над которой несколько дней "бились ребята грудью" в сишарпе)

economist 10.02.2013 10:48

Фанат NASCAR - неудивительно, т.к. только Excel+VBA дает среду разработки, систему визуального контроля переменных в листах книги, в них же и интерфейс и систему ввода-вывода - в одном флаконе, причем с размытыми границами каждой из подсистем. Часто сталкиваюсь с тем, что набросок программы люди делают В Excel+VBA, а потом уже переносят его во что-то серьезнее...

Технолог 10.02.2013 11:41

[em]набросок программы люди делают В Excel+VBA, а потом уже переносят его во что-то серьезнее...[/em]
[url]http://www.youtube.com/watch?feature=player_embedded&v=RV6uiZj0FHM[/url]
[url]http://www.gamasutra.com/view/feature/131968/microsoft_excel_revolutionary_3d_.php[/url]
:)

rock1 10.02.2013 15:40

economist, а можно ли упростить такую формулу (там значений 15 где-то):
=B6*(140*VLOOKUP(C6;level.A2:level.B21;2)/100)+D6*(208*VLOOKUP(E6;level.A2:level.B21;2)/100)+F6*(531*VLOOKUP(G6;level.A2:level.B21;2)/100) ...

economist 10.02.2013 18:50

Технолог - ~6-))
...
rock1 - в упрощении формул должен быть мотив - какой он в этом случае? Чтобы помочь - нужно удалить в файле имя level - и по новой запостить сюда формулу. А tit лучше выложить куда-нить файл, без персональных данных.
...
Кстати, стиль написания формул выдает непрофи - в функции VLOOKUP (она же ВПР) - нельзя в 99,99% случаев обходиться без третьего аргумента со значением False (ЛОЖЬ). Или это вообще не Excel, а OpenOffice Calc. Похоже на стиль работы "программистов" - некоей касты сисадминов, которых просят иногда помочь в Excel...

rock1 10.02.2013 22:17

Мотив простой: надо вводить вручную в формулу много значений до буквы y, а потом все это еще много раз вводить в другие строки. (Автоперенос формулы к сожалению нормально не работает)
Это действительно OpenOffice Calc, а стиль - "гуманитарно-совещательный" :) Т.е. даже математики в ВУЗе не было ))

Ссылка на файл:
[url]https://dl.dropbox.com/u/53618353/123.xls[/url]
Там вычисляются значения в красном столбике

economist 11.02.2013 08:05

(Автоперенос формулы к сожалению нормально не работает) - это называется автозаполнение. Ну в общем по-порядку:

0) В каждой серьезной таблице должна быть шапка (заголовки столбцов), это очень упрощает ее понимание.

1) Стоит общая задача расчета полинома/многочлена, учитывающего весовые коэффициенты и оценки (баллы от 1 до 20).

2) Формула многочлена (ФМЧ) объемна, чтобы уменьшить вероятность ошибки - все весовые коэффициенты стоит вынести в отдельную строку (2-ю) и ссылаться в ФМЧ на нее. Чтобы при копировании (автозаполнении) формулы ссылки на весовые коэффициенты не слетали - ссылаться надо АБСОЛЮТНО, т.е. не +(B2*VLOOKUP(... а +($B$2*VLOOKUP(...

Абсолютные ссылки, кстати, вводятся в OO Calc нажатием Shift+F4, в Excel - F4 (циклически)

Точно так же стоит на листе level область A2:B21 сделать именованным диапазоном (напр BALL) - для этого надо его выделить, а затем впечатать имя в поле ввода в лев-верхн углу листа. В этом случае ссылка на диапазон становится абсолютной:

=B3*(44*VLOOKUP(C3;BALL;2)/100)

След-но одну ФМЧ можно тупо "проятнуть" вниз. Делитель /100 можно превратить во множитель *0,01 и вынести за скобки. В итоге получится что-то компактное вроде:

=(B3*($B$2*VLOOKUP($C$3;BALL;2)+D3*($D$2*VLOOKUP(E3;BALL)+F3*($F$2*VLOOKUP(...))*0,01

Компактнее чем это сделать не получится...


Текущее время: 04:02. Часовой пояс GMT +3.