Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > суммирование повторяющихся значений


Автор: Staruha 25.11.2004, 13:09
На первый лист мастер цеха записывает Фамилию рабочего и код выполненной им операции.
Автоматически проставляетчя затраченное время.
На втором листе Табель (Список работающих и в названии столбцов -числа месяца). При заполнении первого листа автоматически проставляется "8" в табеле.Хотелось бы что бы вместо "8" проставлялась сумма выполненной работы рабочим за день. Так скажем суммировать повторяющиеся записи.
Private Sub CommandButton1_Click()
Код

Dim k As Integer
Dim d As Integer
Dim c As Integer
Dim r As Integer
Dim v As Integer

d = Лист1.UsedRange.Rows.Count 'заполняющийся список
For rwIndex = 2 To d

c = Лист2.UsedRange.Rows.Count 'Список работников в табеле
For rwIn = 2 To c
If Лист1.Range("A" & rwIndex).Value = Лист2.Range("A" & rwIn).Value Then'Если фамилия совпадает

v = Лист2.UsedRange.Columns.Count 'Названия столбцов -дата
For r = 1 To v

k = k + 1
If Range("B" & rwIndex).Value = Лист2.Cells(1, k).Value Then' то по дате в столбце"B"лист1
Лист2.Cells(rwIn, k).Value = 8 'Ставим восьмерку в совпадающем по дате столбце на Лист2
End If

Next r
End If
k = 0
Next rwIn
Next rwIndex

End Sub

smile

Автор: cardinal 25.11.2004, 20:54
Цитата
Автоматически проставляетчя затраченное время.

Куда проставляется, столбик какой?

А тут я вообще не понял зачем нужна переменная k.
Код

For r = 1 To v

k = k + 1
If Range("B" & rwIndex).Value = Лист2.Cells(1, k).Value Then' то по дате в столбце"B"лист1
Лист2.Cells(rwIn, k).Value = 8 'Ставим восьмерку в совпадающем по дате столбце на Лист2
End If

Next r

Помоему если написать так
Код

For r = 1 To v

If Range("B" & rwIndex).Value = Лист2.Cells(1, r).Value Then' то по дате в столбце"B"лист1
Лист2.Cells(rwIn, k).Value = 8 'Ставим восьмерку в совпадающем по дате столбце на Лист2
End If

Next r

то ничего не изменится... Или я опять недоспал? smile

Автор: Staruha 25.11.2004, 23:23
Цитата
А тут я вообще не понял зачем нужна переменная k
здесь ты прав. smile
Но меня обрадовало то ,что меня поняли smile
Цитата
Куда проставляется, столбик какой?


Ну скажем Столбец А - фамилия
Столбец В-код операции
С - затраченное время на операцию
D - дата
Ну вот ,если Фамилия и дата совпадают ,надо суммировать.
Меня вобще-то просили просто цветом закрасить ,ноя думаю сумма была бы лучше .Сразу видно кто сколько заработал за день.

Автор: cardinal 26.11.2004, 00:50
А так не пойдет?
Код

Dim d As Integer
Dim c As Integer
Dim r As Integer
Dim v As Integer

d = Лист1.UsedRange.Rows.Count 'заполняющийся список
For rwIndex = 2 To d

c = Лист2.UsedRange.Rows.Count 'Список работников в табеле
For rwIn = 2 To c
If Лист1.Range("A" & rwIndex).Value = Лист2.Range("A" & rwIn).Value Then'Если фамилия совпадает

v = Лист2.UsedRange.Columns.Count 'Названия столбцов -дата
For r = 1 To v

If Range("B" & rwIndex).Value = Лист2.Cells(1, к).Value Then' то по дате в столбце"B"лист1
'Ставим восьмерку в совпадающем по дате столбце на Лист2
Лист2.Cells(rwIn, k).Value = Лист2.Cells(rwIn, k).Value + Лист1.Range("C" & rwIndex).Value
End If

Next r
End If

Next rwIn
Next rwIndex

End Sub

Добавлено @ 00:51
Или что-нибудь похожее... smile

Автор: Staruha 26.11.2004, 12:26
Все получилоь.Только k на r надо исправить,если кому интересно!Классная выборка получилась без всяких запросов.
Эх смалики не вставляются.Ну тогда пойду спою,а может даже и станцую.
С П А С И Б О !
Там в офисе есть тема (5у),теперь я знаю ответ,но сначало у себя попробую.

Автор: cardinal 26.11.2004, 18:34
Цитата
Только k на r надо исправить,если кому интересно!

Уже было поздно и я не заметил как я нажал на "r", а прописал русское "к" smile Вот прикол... А все потому, что сплю по 5-6 часов в последние дни smile

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