2015-12-30 7 views
0

Я хочу суммирование ставок. Позвольте мне объяснить это: я хотел бы суммировать числа в столбце D, которые соответствуют 2 условиям (зеленые строки в excel). Первый: столбец F равен «закрытому». Второй: столбец C, равный тем номерам, которые, в свою очередь, соответствуют следующему условию: столбец F равен «Partial Sold». В то же время, КАЖДОЕ число в предыдущем суммировании может быть разделено на число столбцов D, которое соответствует «Частичное продано» в столбце F. Существует пример с прилагаемой таблицей/рисунком: (4510/9820) + (6500/9820) + (9100/15400) + (2388/2995) + (12400/9820) + (2904/5855). Мои клетки будут: (D69/D66) + (D70/D66) + (D76/D74) + (D82/D78) + (D83/D66) + (D84/D72).Формулы вложенных массивов

@Jeeped с клетками будет: (D6/D3) + (D7/D3) + (D13/D11) + (D19/D15) + (D20/D3) + (D21/D9)

..  C  D  E   F 

65  #  Total Side Condition 
66  1  9820  Buy  Partial Sold 
67  2  3850  Buy  Closed 
68  3  7151  Buy  Partial Sold 
69  1  4510  Sell Closed 
70  1  6500  Sell Closed 
71  4  8180  Buy  Open 
72  5  5855  Buy  Partial Sold 
73  6  2553  Buy  Open 
74  7  15400 Buy  Partial Sold 
75  2  4600  Sell Closed 
76  7  9100  Sell Closed 
77  8  7531  Buy  Open 
78  9  2995  Buy  Partial Sold 
79  3  3000  Sell Closed 
80  10 8691  Buy  Open 
81  3  2500  Sell Closed 
82  9  2388  Sell Closed 
83  1  12400 Sell Closed 
84  5  2904  Sell Closed 
85  11 3848  Buy  Open 
86  12 7745  Buy  Open 
+1

улучшить наши ответы, мы сейчас должны знать, если есть шанс несколько линий держать то же # и «Частичное Продан», и если да, то как к ним относиться:) –

ответ

3

Чтобы сделать это в одном шаге с формулой массива можно использовать:

=SUM(IFERROR((D66:D86*(F66:F86="Closed"))/((C66:C86=TRANSPOSE(C66:C86))*TRANSPOSE(D66:D86*(F66:F86="Partial Sold"))),0)) 

Это формула массива и должна быть подтверждена с Ctrl + Сдвиг + Enter↵ ,

он будет генерировать 2D-массив, содержащий исходные значения для замкнутых в виде строк и делит этот 1D массив по следующим образом:

  • buils вверх 2D-массив, Col C = транспонированная Col С
  • умножить каждую строку на Col D
  • набор всех элементов в каждой строке равно 0, если не «Частичное Продан»

для каждого DIV через 0 IFERROR будет s и др его до 0
и все это в SUM даст вам свой выход

enter image description here

+0

Очень красиво сделано! – Jeeped

+0

Если OP не имеет функции 'AGGREGATE', как указано в ответе @Jeeped, будет ли он' IFERROR() '? –

+0

Моя версия формулы: '= SUM (IFERROR ((F66: F86 =« Закрыто ») * (D66: D86/SUMIFS (D66: D86, F66: F86,« Частичное продано », C66: C86, C66: C86)), 0)) ' – BrakNicku

1

Я не вижу, чтобы это выполнялось без вспомогательной колонки. В неиспользуемом столбце справа от F66 поместите эту формулу array¹.

=IF(AND(OR(C66=INDEX(C$66:C$86*(F$66:F$86="Partial Sold"), ,)), F66="Closed"), D66/INDEX(D$66:D$86, AGGREGATE(15, 6, ROW($1:$21)/((C$66:C$86=C66)*(F$66:F$86="Partial Sold")), 1)), "") 

Заполнить при необходимости. Результатом будет сумма этих «вспомогательных» чисел.

helper_sum_column

Даже если это может быть сделано в одной формуле, накладные расходы расчета, вероятно, будут непомерно высоки. Разделение части вычислений массива на вспомогательный столбец, который может напрямую ссылаться на значение в столбце C для другого поиска, значительно уменьшает это.


¹ Формулы массива должны быть завершены с Ctrl + Сдвиг + Enter↵. После правильного ввода в первую ячейку они могут быть заполнены или скопированы или правы точно так же, как и любая другая формула. Попробуйте и уменьшите ссылки на полные столбцы на диапазоны, более подробно представляющие экстенты ваших фактических данных. Формулы массива ломают логарифмически расчетные циклы, поэтому рекомендуется сократить суженные диапазоны ссылок до минимума. См. Guidelines and examples of array formulas для получения дополнительной информации.

+0

Поскольку моя версия Excel немного старше, у меня нет полезной функции AGGREGATE. Позвольте мне спросить вас, в чем разница, если я использую эту формулу вместо вашей? '= IF (AND (OR (C66 = INDEX (C $ 66: C $ 86 * (F $ 66: F $ 86 =" Частичное продано ") ,,)), F66 =" Закрыто "), D66/SUMIFS (D $ 66: D $ 86, C $ 66: C $ 86, C66, F $ 66: F $ 86, "Partial Sold"), "") 'Надеюсь, что форматирование будет в порядке ... – Federico

+0

* Я не вижу, чтобы это выполнялось без вспомогательного столбца. * -> ** вызов завершен **: P –

2

я тоже рекомендовал бы использовать вспомогательный столбец. Однако вам не нужно использовать формулы массива, чтобы получить ответ. Вы можете использовать следующие в следующей доступной колонке:

=IF(F66="Closed",IFERROR(D66/SUMIFS($D$66:$D$86,$F$66:$F$86,"Partial Sold",$C$66:$C$86,C66),0),0) 

Это будет возвращать значения для всего, что соответствует вашим критериям, и нули для всего остального. Затем вы можете просто взять сумму этого вспомогательного столбца в качестве последнего суммирования ставок.

Excel

Если вы действительно не хотите использовать вспомогательный столбец, вы можете обернуть формулу вспомогательного столбца в SUM и выгрузить ссылки отдельных ячеек для массивов (т.е. обмена F66 для $F$66:$F$86, и т. д.), затем введите его как формулу массива с помощью Ctrl + Shift + Enter↵. Все это будет выглядеть следующим образом:

=SUM(IF($F$66:$F$86="Closed",IFERROR($D$66:$D$86/SUMIFS($D$66:$D$86,$F$66:$F$86,"Partial Sold",$C$66:$C$86,$C$66:$C$86),0),0))