Столбцы СУММ на одном листе на основе условий или СУММЕСЛИМН на другом листе - PullRequest
0 голосов
/ 19 июня 2020

Вот небольшой образец таблицы.

+--------+-------+--------+
| COL 1  | COL 2 | COL 3  |
+--------+-------+--------+
| abc123 | Total |        |
+--------+-------+--------+
| abc123 | cat1  | 100.00 |
+--------+-------+--------+
| abc123 | cat2  | 200.00 |
+--------+-------+--------+
| def123 | Total |        |
+--------+-------+--------+
| def123 | cat1  | 100.00 |
+--------+-------+--------+
| def123 | cat2  | 200.00 |
+--------+-------+--------+

В COL 3, ЕСЛИ COL 2 - «Итого», мне нужно СУММИРОВАТЬ все в COL 3 для каждой одинаковой строки в COL1. (Например, строка COL3 Total должна быть 300,00 для abc123, а затем 300,00 для def123) В противном случае, если COL 2 НЕ является «Total», мне нужно сделать SUMIFS('Sheet3'!N:N,'Sheet3'!A:A,Sheet2!A473,'Sheet3'!Q:Q,Sheet2!Q473)*Sheet4!$U$2)

Как я могу выполнить sh первый часть СУММЫ?

Изменить:

Я думаю, что мой пример слишком жесткий и выглядит так, как будто он задан.

Дайте мне посмотреть, смогу ли я объяснить в более гибких терминах . Мне придется описать это кое-что в терминах базы данных. Все столбцы находятся на одном листе для части «Итого».

COL 1 - мой раздел. Каждый из «ID» в COL 1 состоит из 57 строк. В одной из этих 57 строк находится «Всего» в другом столбце, в примере это COL 2.

Итак, у меня есть большая таблица, в которой в COL 1 есть, скажем, 5 разных идентификаторов с 57 строками для каждого идентификатора. в результате получается 285 строк.

Теперь у меня была функция сортировки, которая, вероятно, упростила бы все это, но эта функция дает сбой в работе excel и не сортирует оба требуемых вида (https://techcommunity.microsoft.com/t5/excel/sort-function-causes-a-crash-and-does-not-perform-secondary-sort/m-p/1477123#M66205)

Полагаю, если я смогу заставить функцию сортировки останавливать сбой excel, это станет немного проще, поскольку тогда «Итого» последовательно помещается в строки 2, 58, 116 и т. Д. c. и я могу добавить все, что находится ниже. Прямо сейчас, поскольку такая сортировка не работает, мне нужно сложить все из COL 3, которое НЕ присвоено «Total» в COL 2 и имеет тот же идентификатор в COL1.

Итак, в таблице выше abc123 - это 3 строки, и мне нужно сложить две строки, которые не являются итоговыми для abc123, и получить формулу, выплевывающую 300 в COL 3.

Тогда def123 требует такой же обработки.

Вот сложная часть: сортировка непоследовательна, потому что данные поступают из запроса Redshift, поэтому они случайны для каждого идентификатора. Сами идентификаторы расположены в случайном порядке. Я думаю, что могу заставить сортировку для COL 1 работать без сбоев Excel, но вторичная сортировка с настраиваемым порядком приводит к сбою.

1 Ответ

1 голос
/ 19 июня 2020

Один из способов избежать ошибки круговой ссылки при попытке суммирования столбца - использовать две суммы, одну выше и одну ниже.

Итак, предполагая, что ваши столбцы 1, 2 и 3 - это A, B и C, и эти данные начинаются в строке 2 (строка 1 является заголовком), вам нужна сумма ячеек выше текущей строки:

SUMIFS(C$1:C1, A$1:A1, A2)

плюс сумма ячеек ниже текущей строки:

SUMIFS(C3:INDEX(C:C, 1+COUNTA(A:A)), A3:INDEX(A:A, 1+COUNTA(A:A)), A2)

(Обратите внимание, что это фактически завершит одну строку выше и ниже набор данных)

Объедините это с оператором IF:

=IF(B2="Total", SUMIFS(C$1:C1, A$1:A1, A2) + SUMIFS(C3:INDEX(C:C, 1+COUNTA(A:A)), A3:INDEX(A:A, 1+COUNTA(A:A)), A2), EXISTING_FORMULA_HERE)

В качестве альтернативы вы можете попробовать написать формулу массива для прямого вычисления SUM, немного похоже на использование нескольких условий в MATCH, что-то вроде этого: (недостаточно информации в вопросе, чтобы сделать это точно)

=SUMPRODUCT('Sheet3'!N:N*(COUNTIFS(A:A,'Sheet3'!$A:A)>0)*(COUNTIFS(B:B,'Sheet3'!$Q:Q)>0))

(Сумма Sheet3!N:N, когда строка существует в текущий лист, который соответствует столбцам Sheet3!A:A в столбце A и Sheet3!Q:Q в столбце B)

Обратите внимание, что workin g для целых столбцов с формулами массива довольно медленно, поэтому вы можете ограничить их только используемым диапазоном

...