Страница: 1 |
Страница: 1 |
Вопрос: Смена значения ячейки X при смене в ячейке Y Excel
Добавлено: 04.12.07 13:52
Автор вопроса: Skreaper
Всем привет!!!
Мне необходимо решить в Excel такую задачку:
Есть 3 таблицы. Во всех таблицах одинаковые столбцы: Дата, Фамилия, Длительность. Разница только вот в чем: в 1ой
таблице храняться данные о работе сотрудника за весь день по всем проектам, а в остальных таблицах - данные о работе
сотрудника по определенному проекту.
Пример:
Во 2ой таблице (название табл. "Сборка чебурашки") находятся такие поля:
Дата | Фамилия | Длительность
---------------------------------
21.11.07 | Иванов | 3:00
Т.е. в этой таблице говорится о том, что Иванов 21 ноября потратил 3 часа на сборку чебурашки.
В 3ей таблице (название "Сборка буратино") находятся такие поля:
Дата | Фамилия | Длительность
---------------------------------
21.11.07 | Иванов | 2:00
Т.е. в этой таблице говорится о том, что Иванов 21 ноября потратил 2 часа на сборку чебурашки.
Теперь 1ая таблица (название таблицы "Суммарный рабочий день"):
Дата | Фамилия | Длительность
---------------------------------
21.11.07 | Иванов | 5:00
Т.е. в этой таблице говорится о том, что Иванов 21 ноября проработал 5 часов. Флаг ему в руки :)
Задача такая.
Нужно чтобы при заполнении 2ой и 3ей таблицы автоматически заполнялась 1ая. Т.е. вот как бы это выглядело в идеале.
Секретутка пишет во 2ую таблицу Фамилию, Дату и продолжительность рабочего дня. После заполнения этих полей каким-то
там образом в первую таблицу занеслись соответствующие поля: Фамилия, Дата и продолжительность рабочего дня. После
заполнения 3ей таблицы такими данными (21.11.07 / Иванов / 2:00), опять таки коим-то образов в первой таблице
искалось бы 21 число, фамилия Иванов, и к длительности рабочего дня прибовляось бы значени из 3ей таблицы (т.е.
длительность рабочего дня должна получиться 5 часов).
Не подсажите в каком направлении копать? Ато стандартными формулами я не могу сообразить как такое сворганить.
Заранее спасибо!
Ответы
Всего ответов: 1
Номер ответа: 1
Автор ответа:
Fatty
Вопросов: 0
Ответов: 55
Профиль | | #1
Добавлено: 06.12.07 13:40
Вот откопал в своих старых материалах
Код ужасный но вроде точно по твоей проблеме
Вставь в модуль второго листа, измени названия
листов
Public hours As Double
Private Sub Worksheet_Change(ByVal Target As Range)
Dim hourCells As Range
Dim rng As Range
Set hourCells = Range("C3:C1000"
If Not Intersect(Target, hourCells) Is Nothing Then
If Target.Column <> 3 And Target.Row < 3 And Target.text <> vbNullString Then
' ignore that
Else
' summ time
Application.EnableEvents = True
hours = Target.Cells(1, 1)
For Each rng In Sheets("Sheet3".Range("C3:C1000"
If rng.Offset(, -1).Value = Target.Offset(, -1).Value Then
hours = CDbl(Target.Value) + CDbl(rng.Value)
MsgBox CStr(hours)
Exit For
End If
Next
For Each rng In Sheets("Sheet1".Range("B3:B1000"
If CStr(rng.Offset.Value) = CStr(Target.Offset(, -1).Value) Then
Sheets("Sheet1".Activate
rng.Offset(, 1).Select
ActiveCell = hours
Exit For
Else
Sheets("Sheet2".Activate
Target.Select
Target.Offset(, -1).Interior.ColorIndex = 3
MsgBox "Enter the valid last name"
Exit Sub
End If
Next
End If
End If
End Sub