Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
Вот откопал в своих старых материалах
Код ужасный но вроде точно по твоей проблеме
Вставь в модуль второго листа, измени названия
листов

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";).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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам