Страницы: 1
RSS
VBA - вставка суммы
 
Уважаемые знатоки VBA, необходима ваша помощь.  
Нужен макрос, вставляющий формулу суммы в столбце B, напротив каждой записи "Всего".  
Вся проблема в том, что количество показателей в каждой группе не является фиксированным, а постоянно меняется.  
Надеюсь на вашу помощь.
 
> проблема в том, что количество показателей в каждой группе не является фиксированным, а постоянно меняется.  
 
Все равно формулой можно. Попробуйте удалять и вставлять строки в приложенном файле.
 
Option Explicit  
 
Sub tt()  
Dim x As Long  
Dim cc As Range  
 
x = 2  
For Each cc In Intersect(Range("A:A"), UsedRange)  
If cc = "Āńåćī" Then  
cc.Offset(, 1).Formula = "=sum(B" & x & ":B" & cc.Row - 1 & ")"  
x = cc.Row + 1  
End If  
 
Next  
End Sub  
 
Казанского не глядел, но похоже, что у него иначе сделано, судя по "Попробуйте удалять и вставлять строки" :)
 
/@#$%#$% !!!  
 
If cc = "Всего" Then
 
Ув.Казанский, формула тут не поможет по одной простой причине: отчет приходит в таком виде, как в прикрепленном файле. Единственный критерий, по которому можно определить окончание каждой группы - слово "Всего"    
Просматривать десятки тысяч строк, выискивая заветное слово "Всего" чтобы вручную вставить формулу - просто нецелесообразно. Поэтому прошу именно макрос, автоматически функцию вставляющий.
 
{quote}{login=Hugo}{date=16.10.2010 07:54}{thema=}{post}Option Explicit  
 
Sub tt()  
Dim x As Long  
Dim cc As Range  
 
x = 2  
For Each cc In Intersect(Range("A:A"), UsedRange)  
If cc = "Āńåćī" Then  
cc.Offset(, 1).Formula = "=sum(B" & x & ":B" & cc.Row - 1 & ")"  
x = cc.Row + 1  
End If  
 
Next  
End Sub  
 
Ругается, что "Variable not defined" на UsedRange
 
Замените на Activesheet.UsedRange
Я сам - дурнее всякого примера! ...
 
Hugo, KuklP, огромное спасибо, все работает!
 
Попадал в подобную ситуацию. Полезный макрос.Остался один вопрос - а можно ли еще в макрос добавть группировку строк, по которым идет суммирование...
 
Делаем аналогично (я думаю, многие уже и сами сделали):  
 
Option Explicit  
 
Sub tt()  
Dim x As Long  
Dim cc As Range  
 
x = 2  
For Each cc In Intersect(Range("A:A"), ActiveSheet.UsedRange)  
If cc = "Всего" Then  
cc.Offset(, 1).Formula = "=sum(B" & x & ":B" & cc.Row - 1 & ")"  
Rows(x & ":" & cc.Row - 1).Rows.Group  
x = cc.Row + 1  
End If  
 
Next  
End Sub
Страницы: 1
Читают тему
Наверх