Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Работа с MS Office > Сумма с условием


Автор: Rodman 29.12.2008, 12:14
Дароф...

не могу понять куда рыть...

у меня есть три ряда: А, В, С...

мне нужно найти сумму элементов А, для тех значений у который значение ((Bi=эталонному В)и(Сi=эталонному С))

т.е. на программерском языке

если ((Bi=эталонному В)и(Сi=эталонному С)) то
   sum=sum+Ai


в атаче есть исходные данные...

по ним в сумму должны попасть только два числа... 

как мне написать такое условие?

Cенкс

Автор: ТоляМБА 29.12.2008, 12:52
Копай в сторону функции СУММЕСЛИ

Автор: Rodman 29.12.2008, 13:32
Код

=СУММЕСЛИ(A2:A11;"=G2";B2:B11)
начал вот так... но он мне ноль выдает...

и как его через И написать?

Автор: ses 29.12.2008, 13:52
сначала идет диапазон, который проверяем, а потом после критерия диапазон, в котором берутся данные для суммирования

=СУММЕСЛИ(B2:C11;15;A2:A11) (здесь критерий не полный, надо еще подумать как связать проверку столбцов В и С, хотя по твоему примеру считает.)

Автор: Aloha 29.12.2008, 14:20
Rodman

Глянь в аттаче

Там используется формула массива:

{= СУММ( ЕСЛИ( B2:B11 & "_" & C2:C11 = G2 & "_" & G3; A2:A11))}

(для ее ввода нужно жать Ctrl + Shift + Enter)

Автор: FINANSIST 29.12.2008, 19:36
Цитата(Aloha @  29.12.2008,  14:20 Найти цитируемый пост)
{= СУММ( ЕСЛИ( B2:B11 & "_" & C2:C11 = G2 & "_" & G3; A2:A11))}

Код

довольно замороченно
=СУММ(ЕСЛИ(B2:B11=G2;ЕСЛИ(C2:C11=G3;A2:A11)))

Гораздо более читабельный вариант ( ctrl+shift+enter то же необходим)

Автор: Rodman 30.12.2008, 11:41
Цитата(Aloha @  29.12.2008,  14:20 Найти цитируемый пост)
(для ее ввода нужно жать Ctrl + Shift + Enter) 

шо за таинственная комбинация?!

а то шо когда я нажимаю у меня ниче не происходит...

Автор: FINANSIST 30.12.2008, 14:13
Цитата(Rodman @  30.12.2008,  11:41 Найти цитируемый пост)
шо за таинственная комбинация?!а то шо когда я нажимаю у меня ниче не происходит...

Это комбинация даёт понять экселю, что работать с аргументами функции экселю следует- как с массивами
Например:
Необходимо проверить что в 5 ячейках выполняется условие больше единицы
Код

=если(и(А1>1;А2>1;А3>1;А4>1;А5>1);"Условие выполняется";"Условие не выполняется")

А что делать, если необходимо проверить то же самое в 155 ячейках?
Вводить в функцию И 155 аргументов это бред, вот для таких ситуаций и используются массивы
 =если(и(А1:А155>1);"Условие выполняется";"Условие не выполняется")
Но в таком случае эксель не поймёт, что с диапозоном А1:А155 нужно работать как с массивом (т.е. проверять условие для каждого элемента диапозона А1:А155)
Для того чтобы он это понял, нужно в режиме редактирования формулы (т.е.когда ты уже сформировал формулу но ещё не нажал энтер) нажать эту мистическую комбинацию!
При этом ты заметишь что после нажатия этой комбинации эксель в начало и в конец автоматически добавит фигурные скобки 
Код

{=если(и(А1:А155>1)}

Кстати:
1) Вручную прописание данных скобок не поможет ( только через комбинацию)
2) Понятно, что для работы с массивами требуется больше системных ресурсов, поэтому использовать в одной книге более 30 формул с громоздкими массивами (ИМХО) глупо - следует искать пути оптимизации

Автор: Rodman 10.1.2009, 18:25
Спасибо..

Порешали

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)