Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Выбор диапазона дат, вставка итога для выборки


Автор: dosh 31.5.2006, 12:44
Прошу помочь. Задача: есть диапазон данных - первый столбец - дата, в остальных числовые данные. Необходимо в начале нового месяца делать выборку за прошедший месяц, переносить эти ячейки в другую книгу и вставлять строку с итогом по столбцам. В следующем месяце - тоже самое, но ниже итога предыдущего месяца. Даты идут с разрывами, то есть некоторые дни месяца пропущены.  

Автор: Naghual 31.5.2006, 13:07
Что именно не получается?
Что уже сделано? 

Автор: dosh 31.5.2006, 14:05
Да, ничего не сделано. Не могу придумать алгоритм, по которому делать выборку, так как диапазон строк в каждом месяце разный. Сумму переменного диапазона строк надо считать. Ничего путного в голову не лезет! По сути, два главных вопроса - выборка за месяц и сумма столбцов внутри этой выборки. 

Автор: sexton 31.5.2006, 14:19
А месяцы хоть как-то разделены между собой? 

Автор: dosh 31.5.2006, 14:46
Нет, не разделены. Исходную таблицу заполняет макрос. День закончился - данные записываются в таблицу - проставляется дата в первой колонке. 

Автор: Naghual 31.5.2006, 15:03
Циклически пробегаеш по строкам. Следиш за датами. В пределах одного месяца делаеш накопление временных значений. По изменению месяца выполняеш действие над строками. 

Автор: dosh 31.5.2006, 15:15
А подробнее про накопление можно? 

Автор: Naghual 31.5.2006, 15:38
Код

Dim iVar1 as Integer

' В Цикле:
iVar1 = iVar1 + Cell(Col,Row).Value

 

Автор: dosh 1.6.2006, 07:22
Спасибо, за подсказку. Получилось вот это:
Dim A
Dim B
Dim I
Dim C
Dim iVar1 As Integer
Dim k
k = 0
A = Month(Date) - 1
B = Range("A1").End(xlDown).Row
For I = 1 To B
C = Month(Range("$A$" & I).Value)
    If A = C Then
    iVar1 = iVar1 + Cells(I, 2).Value
    k = k + 1
    End If
Next I
Range("B" & k + 1).Value = iVar1
Основа работает, а остальное уже ерунда. Огромное спасибо! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)