Страницы: 1
RSS
Суммирование данных из множества листов.
 
Добрый вечер. Листов пока 50, потом догоню до 100. Сейчас пользуюсь    
=СУММ('1 (2):1 (50)'!H3)    
а хотелось бы сразу прописать под будущие листы  
=СУММ('1 (2):1 (100)'!H3)  
Возможно ли?
 
Нет
 
А почему нет?  
Если сразу сделать 100-й лист, прописать формулы,  
и потом уже, не спеша, добавлять листы с 51 по 99...
 
Я так понял, что вопрос в том, что бы ничего не добавлять заранее :-)
 
Можно например так.
 
Блин, я хотел макросом сделать так:  
 
Sub a()  
Dim r As Integer  
r = Sheets.Count - 1  
   Range("A1").FormulaR1C1 = "=SUM( 'Лист1:&r&'!R[2]C[7])"
End Sub  
 
Почему так не работает?  
Точнее работает, но результат получается такой:  
=СУММ( 'Лист1:[&r&]&r&'!H3)
 
Проверяю. Если всё ок, отпишу...
 
{quote}{login=sva}{date=01.04.2012 10:30}{thema=}{post}Можно например так.{/post}{/quote}  
На примере всё работает ок, у меня же нет. Вопрос: Как я понял, формула просматривает все открытые, и вновь открываемые листы этой книги. Если это так, тогда возникновение ошибки мне понятно. Первые четыре листа у меня это сводки книги. Подправь пожалуйста мне не нахаляву формулу, исключив первые четыре листа.    
На всяк случ имена по порядку: Оглавление; Сводка; Что кому; 0;  
Последняя из четырёх называется (ноль)
 
Serge 007  
В переводе на язык формул ты написал  
=СУММ( 'Лист1:"r"'!H3)  
Оно будет работать?  
 
Порядковый номер первого листа в формуле StartSheet = 2
 
Да, понял!  
Вот так работает:  
 
Sub a()  
Dim r As Integer  
r = Sheets.Count - 1  
   Range("A1").FormulaR1C1 = "=SUM( 'Лист1:" & r & "'!R[2]C[7])"
End Sub
 
А какое событие происходит при добавлении листа в книгу?  
В модуле Эта книга я что-то не нашел AddSheet или чего-то в этом роде...
 
Private Sub Workbook_NewSheet(ByVal Sh As Object)  
MsgBox "Создан новый лист"  
End Sub
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Новый лист. :)  
Workbook_NewSheet
 
Спасибо!  
Ну тогда совсем просто  
В модуль Эта книга:  
 
Private Sub Workbook_NewSheet(ByVal Sh As Object)  
Dim r As Integer  
r = Sheets.Count  
   Sheets("Лист1").Activate  
   Range("A1").FormulaR1C1 = "=SUM( 'Лист2:" & "Лист" & r & "'!R[2]C[7])"
End Sub  
 
И при добавлении нового листа формула увеличивает диапазон на него :-)
 
Serge 007  
A ты мой файл не поглядел? -:)
 
Нет  
Мне интересно было самому сделать  
 
ЗЫ Я убедился - разбирая чужие макросы я ничему не учусь, а записав его самостоятельно - запоминаю кучу полезной информации :-)
 
=СУММ(ЕСЛИ(ЕОШИБКА(Ч(ДВССЫЛ("'"&"1("&СТРОКА(ДВССЫЛ("2:"&H1))&")"&"'!A1")));0;Ч(ДВССЫЛ("'"&"1("&СТРОКА(ДВССЫЛ("2:"&H1))&")"&"'!A1"))))  
 
В H1 находится кол-во листов. Но можно и в формулу сразу вставить.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
слева пустой лист Л и справа пустой лист П и формула сумм(Л:П!...  
и все  
а здесь такой огород
Страницы: 1
Читают тему
Наверх
Loading...