|
Суммирование по листам
|
|||
---|---|---|---|
#18+
Доброго времечка всем! Подскажите пожалуйста в таком вопросе: есть Excel книга содержащая большое количество листов. Структура листов одинакова - в первом столбце название, во втором значение. Требуется в итоговом листе посчитать сумму по определенным названиям по всем листам книги. Ранее реализовал с помощью функции: =СУММЕСЛИ(диапазон названий листа1;нужное название;диапазон значений листа1)+СУММЕСЛИ(диапазон названий листа2;нужное название;диапазон значений листа2)+... и т.д. до последнего листа. Поскольку листов в книге много, то даже при максимально коротком имени листа формула становится громоздкой и вот теперь уже не умещается в одной ячейке. Пробовал задавать диапазоны листов. Фунция =СУММ(Лист1:Лист3!B:B) отрабатывает правильно, а вот СУММЕСЛИ не выходит. Пример прилагаю. Может кто-нибудь подскажет как реализовать это с помошью формул? Заранее признателен за совет ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 11:24 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
А вот так не пойдёт? Можно скрыть дежурные столбцы... Если не годится, то надо кодом. Это не сложно, а работать будет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 12:38 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
PlanB, Дело в том, что видимо я в первом сообщении неверно указал, что в исходных листах только 2 столбца... Их там значительно больше. Соответственно и в итоговом листе столбцов тоже будет больше... И на каждый столбец заводить отдельную промежуточную табличку будет очень громоздко. По сути, это предложение только ускорение ввода формулы СУММЕСЛИ и для моей задачки не подходит. Макросы же использовать не хочется. Может будут какие-то другие варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 13:16 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
Как выглядит тогда пример? Категория, а потом в ряд много значений? Или категория, а рядом значение много раз в разных местах на листе? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 13:30 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
Грустно, конечно, но исходя из справки (см. ниже) без дополнительных столбцов или макроса сделать будет не возможно. Стиль трехмерных ссылок Трехмерные ссылки используются при необходимости анализа данных из одной и той же ячейки или диапазона ячеек на нескольких листах одной книги. Трехмерная ссылка включает в себя ссылку на ячейку или диапазон, перед которой ставятся имена листов. Microsoft Excel использует все листы, хранящиеся между начальным и конечным именами, указанными в ссылке. Например, формула =СУММ(Лист2:Лист13!B5) суммирует все значения, содержащиеся в ячейке B5 на всех листах в диапазоне от Лист2 до Лист13 включительно. Трехмерные ссылки могут быть использованы для создания ссылок на ячейки на других листах, определения имен и создания формул с использованием следующих функций: СУММ, СРЗНАЧ, СРЗНАЧА, СЧЁТ, СЧЁТЗ, МАКС, МАКСА, МИН, МИНА, ПРОИЗВЕД, СТАНДОТКЛОН, СТАНДОТКЛОНА, СТАНДОТКЛОНП, СТАНДОТКЛОНПА, ДИСП, ДИСПА, ДИСПР и ДИСПРА. Трехмерные ссылки нельзя использовать в формулах массива (Формула массива. Формула, выполняющая несколько вычислений над одним или несколькими наборами значений, а затем возвращающая один или несколько результатов. Формулы массива заключены в фигурные скобки { } и вводятся нажатием клавиш CTRL+SHIFT+ВВОД.). Трехмерные ссылки нельзя использовать вместе с оператором (Оператор. Знак или символ, задающий тип вычисления в выражении. Существуют математические, логические операторы, операторы сравнения и ссылок.) пересечения (пробел), а также в формулах, использующих неявное пересечение (Неявное пересечение. Ссылка на диапазон ячеек вместо одной ячейки, из которого в расчете выбирается одна соответствующая ячейка. Например, если в ячейке C10 содержится формула =B5:B15*5, на 5 будет умножено значение из ячейки B10, потому что ячейки B10 и C10 находятся в одной строке.). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 13:36 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
PlanB, Выкладываю откорретированный пример ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 13:42 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
otlichnik, попробуй так! Может понравится с использованием сводных таблиц. Корректировать количество листов с данными можно в эм эс куери (как правильно говориться не знаю, но мне ближе *уери) так: правой кнопкой по сводной таблице выбрать мастер таблиц получить данные войти в куери нажать SQL в появившемся окне записать следующую процедуру звездочка означает выбор всех полей, но куери может их все перечислить SELECT * FROM `D:\Временная\СуммаЕсли`.`Лист1$` `Лист1$` union all SELECT * FROM `D:\Временная\СуммаЕсли`.`Лист2$` `Лист2$` union all SELECT * FROM `D:\Временная\СуммаЕсли`.`Лист3$` `Лист3$` Получилось? Помогло? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 14:04 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
а вот и файл ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 14:06 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
вот такой есть вариант... Тоже не подходит? Дежурные поля есть, но там всё регулируется без напряга. !Работает при условии, что искомое значение на листе встречается только 1 раз! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 14:18 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
Сергей06, спасибо за вариант. Делаешь сводную с данными в нескольких диапазонах и наслаждаешься результатом. Сводными таблицами складывающими по нескольким листам где возможно пользуюсь. Однако сейчас нужен вариант именно с формулами... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 14:34 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
PlanB, Повнимательнее посмотрите, что должно получиться в листе "итог" (второй файл, который выкладывал). Требуется несколько иное, чем у Вас получилось... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 14:54 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
otlichnik, консолидируйте данные с сохранением связей.. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2008, 21:53 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
Так что уважаемые знатоки Excel, выходит вердикт такой, что в одной ячейке вычислить сумму значений удовлетворяющих определенным условиям по всем листам книги (при условиии, что листов очень много) невозможно? Нет пока в 2003 Excel таких возможностей? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 11:13 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
otlichnikТак что уважаемые знатоки Excel, выходит вердикт такой, что в одной ячейке вычислить сумму значений удовлетворяющих определенным условиям по всем листам книги (при условиии, что листов очень много) невозможно? Нет пока в 2003 Excel таких возможностей? Нет, такой вердикт не выходит :-) Такие возможности есть :-) Смотри ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 12:32 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
A-Nik, Вы продолжаете удивлять виртуозностью формул! Вариант почти идеальный (почти из-за того что все листы все-таки приходится перечислять)! Попытался понять как работает формула, увы, не получилось... Если есть время, можете пояснить что означают фигурные скобки? Ну и вообще как работает конструкции СУММ(СУММЕСЛИ(...)) и ДВССЫЛ({"Лист1";"Лист2";"Лист3"}&"!$A1:$A10"??? И еще, может быть есть такая возможность оперировать диапазонами листов - типа Лист1:Лист500? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:21 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
Вот ещё один вариант: формулу можно распространять вправо и вниз, упрощена работа с листами. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 14:00 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
otlichnik, можешь попробовать вот такое извращение в ячейке B2 (ввод через Ctrl+Shift+Enter ): =СУММ(СУММЕСЛИ(ДВССЫЛ("Лист"&СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(Лист1:Лист3!$A$1)))&"!A2:A10");$A2;ДВССЫЛ("Лист"&СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(Лист1:Лист3!$A$1)))&"!B2:B10"))) или такое (ввод через Enter ): =СУММПРОИЗВ(СУММЕСЛИ(ДВССЫЛ("Лист"&СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(Лист1:Лист3!$A$1)))&"!A2:A10");$A2;ДВССЫЛ("Лист"&СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(Лист1:Лист3!$A$1)))&"!B2:B10"))) Смысл в том, что бы все суммируемые листы имели стандартное название и последовательную нумерацию (без пропусков). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 14:19 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
otlichnik... Если есть время, можете пояснить что означают фигурные скобки? Ну и вообще как работает конструкции СУММ(СУММЕСЛИ(...)) и ДВССЫЛ({"Лист1";"Лист2";"Лист3"}&"!$A1:$A10"??? 1. В {...} задаётся массив данных. 2. Вкладывать СУММЕСЛИ() в СУММ() надо потому, что в данном случае СУММЕСЛИ() возвращает массив, количество элементов которого равно количеству просматриваемых листов (в данном случае 3). 3. ДВССЫЛ({"Лист1";"Лист2";"Лист3"}&"!A1:A10") работает оч. просто. Выделите часть формулы {"Лист1";"Лист2";"Лист3"}&"!A1:A10" и нажмите F9. Вы получите результат выполнения выделенной части формулы и сразу всё станет ясно.otlichnikИ еще, может быть есть такая возможность оперировать диапазонами листов - типа Лист1:Лист500? Боюсь, что используя эту формулу на 500 листах вы просто не сможете работать из за длительного пересчёта книги при изменении любой ячейки. Как вариант - можно сделать макрос, который при нажатии на кнопку распространяет формулу на всю таблицу, а затем заменяет формулы значениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 16:51 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
otlichnikОднако сейчас нужен вариант именно с формулами...всё-таки не понятно, почему? тем более вы то же видите что сводными удобнее пользоваться (просто интересно) а то что листов много, так их можно кодом перебрать (как уже впрочем советовали выше) С уважением Игорь. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 07:36 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
Даже не сомневался, что уважаемые A-Nik и KL (XL) решат проблему Лично я вижу смысл пользоваться тут пользоваться формулами, а не кодом, только если листы защищённые и для корректной работы придётся подписывать макрос... Но, что я понимаю ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 09:20 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
KL (XL)otlichnik, можешь попробовать вот такое извращение в ячейке B2 (ввод через Ctrl+Shift+Enter ): =СУММ(СУММЕСЛИ(ДВССЫЛ("Лист"&СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(Лист1:Лист3!$A$1)))&"!A2:A10");$A2;ДВССЫЛ("Лист"&СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(Лист1:Лист3!$A$1)))&"!B2:B10"))) или такое (ввод через Enter ): =СУММПРОИЗВ(СУММЕСЛИ(ДВССЫЛ("Лист"&СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(Лист1:Лист3!$A$1)))&"!A2:A10");$A2;ДВССЫЛ("Лист"&СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(Лист1:Лист3!$A$1)))&"!B2:B10"))) Смысл в том, что бы все суммируемые листы имели стандартное название и последовательную нумерацию (без пропусков). В данном контексте не вижу смысла указывать диапазон листов, разве что для наглядности, но также не исключено и заблуждение. Предлагаю заменить на простое указание строк. =СУММПРОИЗВ(СУММЕСЛИ(ДВССЫЛ("Лист"&СТРОКА($1:$3)&"!A2:A10");$A2;ДВССЫЛ("Лист"&СТРОКА($1:$3)&"!B2:B10"))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 10:40 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
DeggasadВ данном контексте не вижу смысла указывать диапазон листов, разве что для наглядности, но также не исключено и заблуждение. Предлагаю заменить на простое указание строк. =СУММПРОИЗВ(СУММЕСЛИ(ДВССЫЛ("Лист"&СТРОКА($1:$3)&"!A2:A10");$A2;ДВССЫЛ("Лист"&СТРОКА($1:$3)&"!B2:B10"))) Смысл в том, что если между листами Лист1 и Лист3 добавить еще листы с заголовком в $A$1, то формула автоматически их включит в сумму. Твой пример - это возврат к решению A-Nik, но с проблемой: что если будет случайно или сознательно введена строка между $1 и $3? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 13:36 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
KL (XL)DeggasadВ данном контексте не вижу смысла указывать диапазон листов, разве что для наглядности, но также не исключено и заблуждение. Предлагаю заменить на простое указание строк. =СУММПРОИЗВ(СУММЕСЛИ(ДВССЫЛ("Лист"&СТРОКА($1:$3)&"!A2:A10");$A2;ДВССЫЛ("Лист"&СТРОКА($1:$3)&"!B2:B10"))) Смысл в том, что если между листами Лист1 и Лист3 добавить еще листы с заголовком в $A$1, то формула автоматически их включит в сумму. Твой пример - это возврат к решению A-Nik, но с проблемой: что если будет случайно или сознательно введена строка между $1 и $3? понял, признаю. От недостатка со строкой уйти довольно просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 13:45 |
|
Суммирование по листам
|
|||
---|---|---|---|
#18+
KL (XL)DeggasadВ данном контексте не вижу смысла указывать диапазон листов, разве что для наглядности, но также не исключено и заблуждение. Предлагаю заменить на простое указание строк. =СУММПРОИЗВ(СУММЕСЛИ(ДВССЫЛ("Лист"&СТРОКА($1:$3)&"!A2:A10");$A2;ДВССЫЛ("Лист"&СТРОКА($1:$3)&"!B2:B10"))) Смысл в том, что если между листами Лист1 и Лист3 добавить еще листы с заголовком в $A$1, то формула автоматически их включит в сумму. забыл сказать, что в этом случае придется переименовать листы, либо Лист4 ставить между Лист1 и Лист3, так что удовольствие все же сомнительное ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2008, 14:07 |
|
|
start [/forum/topic.php?fid=61&msg=35699757&tid=2174393]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 325ms |
total: | 506ms |
0 / 0 |