Страницы: 1
RSS
Макрос суммирование по месяцам
 
Здравствуйте друзья.  
Есть таблица с заголовком материал - дата - количество  
Формат дат 01.01.2012  
Надо сгруппировать макросом все количества по месяцам. Вариант решения со сводной  - в ней есть сортировка по месяцам, не подойдет, т.к. макросом ее создать не смог.  
 
Решение без сводной, записал авто макрос  
 
Sub SumMonth()  
'  
' Суммирование по месяцам  
'  
 
' Меняем формат дат на "mm.yy"  
   Columns("B:B").Select  
   Selection.NumberFormat = "[$-419]mmmm yyyy;@"
' Применяем из закладки "данные" - "промежуточные итоги"  
   Columns("B:C").Select  
   Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2), _  
       Replace:=True, PageBreaks:=False, SummaryBelowData:=True  
End Sub  
 
Но возможно в таблице столбец "дата" или "количество" могут быть в любом  месте, а не в столбце B - C как в примере.  
 
Как сказать макросу чтоб искал столбец дата по маске "ДД.МММ.ГГ" ?
Каждое препятствие это новая возможность чему-то научиться.
 
Sub SumMonth()  
'  
' Суммирование по месяцам  
'  
Dim d As Range  
Set d = Cells.Find("дата", MatchCase:=0)  
 
' Меняем формат дат на "mm.yy"  
   Columns(d.Column).NumberFormat = "[$-419]mmmm yyyy;@"
' Применяем из закладки "данные" - "промежуточные итоги"  
   Columns(d.Column).Resize(, 2).Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2), _  
       Replace:=True, PageBreaks:=False, SummaryBelowData:=True  
End Sub
Я сам - дурнее всякого примера! ...
 
То был ответ на вопрос. Но лучше:  
Sub SumMonth()  
' Суммирование по месяцам  
Dim d As Range  
Set d = Cells.Find("дата", MatchCase:=0)  
ActiveSheet.UsedRange.RemoveSubtotal  
' Меняем формат дат на "mm.yy"  
   Columns(d.Column).NumberFormat = "[$-419]mmmm yyyy;@"
' Применяем из закладки "данные" - "промежуточные итоги"  
   Intersect(ActiveSheet.UsedRange, Columns(d.Column).Resize(, 2)).Subtotal 1, xlSum, Array(2), -1  
End Sub
Я сам - дурнее всякого примера! ...
 
1. А зачем ActiveSheet.UsedRange.RemoveSubtotal ?  
2. Я так понимаю вводить поиск переменной столбца количество, на случай если он тоже не рядом с датой, нет смысла, т.к. это условие чтобы работали промежуточные итоги?
Каждое препятствие это новая возможность чему-то научиться.
Страницы: 1
Наверх