Страница: 1 |
Вопрос: Смена значения ячейки X при смене в ячейке Y Excel | Добавлено: 04.12.07 13:52 |
Автор вопроса: ![]() |
Всем привет!!!
Мне необходимо решить в 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 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 55 |
Профиль | Цитата | #1 | Добавлено: 06.12.07 13:40 |
Вот откопал в своих старых материалах
Код ужасный но вроде точно по твоей проблеме Вставь в модуль второго листа, измени названия листов Option Explicit
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" ![]() ![]() 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" ![]() ![]() If CStr(rng.Offset.Value) = CStr(Target.Offset(, -1).Value) Then Sheets("Sheet1" ![]() rng.Offset(, 1).Select ActiveCell = hours Exit For Else Sheets("Sheet2" ![]() 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 |
Страница: 1 |
|