Excel
Подскажите, возможно ли суммировать значения ячеек таблицы в разных листах в единую таблицу. Формат всех таблиц одинаков, т.е имеется семь таблиц надо сделать восьмую в которой значение каждой ячейки является сумма значений других таблиц!
Конечно можно. по-моему, это даже стандартными средствами Excel можно сделать, а программно - и подавно.
Примерный алгоритм следующий (первое, что пришло на ум):
1. Организуешь 2 чикла - внешний и вложенный.
2. Во внешнем цикле перебираешь номера строк (грубо говоря, ячейки).
3. Во внутреннем - перебираешь листы книги Excel.
4. В этих циклах суммируешь значения из ячеек разных листов одной строки и пишешь суммы на тот лист, который нужен.
Самый пролстой способ это сделать - начать запись макроса и во время записи выделить по 1 ячейке на каждом из листов. Затем в редакторе VB просмотреть код и полученное модифицировать, как тебе надо. Делов - на 10 минут
:)
На самом деле все гораздо проще:
Вот такая формула:
=СУММ(Sheet2:Sheet7!B3)
как раз возвращает сумму всех ячеек В3 на всех листах, начиная с Sheet2 и заканчивая Sheet7 (имеется ввиду их порядковое расположение в книге). То есть делаешь такую формулу и растягиваешь ее на весь лист. И все.
P.S. Чтобы вводить ее в традиционном "Мастере формул", надо выбрать функцию (в данном случае СУММ), затем при вводе аргумента выбрать ячейку Sheet2!B3 и держа клавишу Shift нажать на ярлычок Sheet7. Удачи!
Ох, и любит уважаемый mhaturov двойные циклы... :D
А куда же без циклов и ветвлений :D К тому же это ведь с точки зрения простоты разработки (хоть и далеко не скорости выполнения) - наиболее простой путь. А те, кто пишет под Office, в большинстве своём, приследуют цель написать не оптимальную, но наиболее простую, подчас одноразовую, программу. И в этом случае соотношение трудозатраты/результат явно в пользу "топора".
Ведь чем отличается опытный программист от неопытного - тем что опытный составляет свои программы, копируя куски из ранее им написанных. :) Кучу раз убеждался, что в этой шутке немалая доля истины...
А мне кажется, что нет ничего более постоянного, чем временные вещи... Я стараюсь всегда писать оптимальным образом, потому что очень часто написанное единожды используется потом в других местах.
Ведь чем отличается опытный программист от неопытного - тем что опытный составляет свои программы, копируя куски из ранее им написанных. :) Кучу раз убеждался, что в этой шутке немалая доля истины...
В принципе, так оно и есть... Сейчас это, например, для меня особенно остро, так как сейчас мне приходится делать много вещей, которые делал раньше, а с предыдущей работы коды забрать мне не позволили :{ . Только ведь во-первых, когда отвечаешь на вопрос, обычно нет времени долго думать (а особенно, как в моём случае, когда с VBA знаком зна-а-а-а-ачительно хуже, чем с VB), ну а во-вторых, в простых кодах разбираться нагляднее - видны все процессы, которые происходят физически, да и начинающим часто с ними проще разобраться и понять, что к чему. Хотя каюсь, часто подхожу ко многим вопросам не учитывая собственных возможностей Office-приложений (потому как с ними плохо знаком). Ну а по поводу этого вопроса, у меня есть оправдание: "Конечно можно. По-моему, это даже стандартными средствами Excel можно сделать".;)