Здравствуйте форумчане! Помогие создать макрос: дано: есть ячейка №1, в которой значение (численное) меняется изо дня в день. ячейка №2 имеет формулу в статистике за вчерашнее число ячейка №3 имеет ту же формулу что и в №2, только показывает она сегодняшнее число другими словами вчерашнее число потерялось из-за того что сегодня значение в ячейке №1 изменилось
задача: придумать макрос, чтобы в статистике после окончания вчерашнего дня в ячейке №2 функция преобразовалась в число. то есть если сегодня изменить число в ячейке №1, ячейка №2 останется неизменной. пример файла могу предоставить.
Здравствуйте форумчане! Помогие создать макрос: дано: есть ячейка №1, в которой значение (численное) меняется изо дня в день. ячейка №2 имеет формулу в статистике за вчерашнее число ячейка №3 имеет ту же формулу что и в №2, только показывает она сегодняшнее число другими словами вчерашнее число потерялось из-за того что сегодня значение в ячейке №1 изменилось
задача: придумать макрос, чтобы в статистике после окончания вчерашнего дня в ячейке №2 функция преобразовалась в число. то есть если сегодня изменить число в ячейке №1, ячейка №2 останется неизменной. пример файла могу предоставить.Гость
Вот пример-файл. там два листа. первый лист: база. в колонке 2,3,4 изменяются значения ежедневно. - это статусы звонка. ячейка №1 допустим находится в колонке 3 второй лист: ст-ка звонка. там строчка 8 показывает сколько звонков ежедневно было сделано. допустим это ячейка №2 и №3. если оператор сегодня дозвонится до первого человека, в колонке номер 3 изменится дата на текущую. как сделать чтобы в строчке номер 8 во втором листе не изменились цифры за прошлые дни? понятное дело в конце каждого дня можно за текущий день вместо формулы оставлять цифру, но делать одно и то же каждый день не есть гуд для нас)))
Вот пример-файл. там два листа. первый лист: база. в колонке 2,3,4 изменяются значения ежедневно. - это статусы звонка. ячейка №1 допустим находится в колонке 3 второй лист: ст-ка звонка. там строчка 8 показывает сколько звонков ежедневно было сделано. допустим это ячейка №2 и №3. если оператор сегодня дозвонится до первого человека, в колонке номер 3 изменится дата на текущую. как сделать чтобы в строчке номер 8 во втором листе не изменились цифры за прошлые дни? понятное дело в конце каждого дня можно за текущий день вместо формулы оставлять цифру, но делать одно и то же каждый день не есть гуд для нас)))паша000
Private Sub Workbook_Open() With Sheets("стат-ка звонки") For Each cl In .Range(.Cells(2, 2), .Cells(2, 2).End(xlToRight)) If cl < Date Then .Range(cl.Address).Offset(6).Value = .Range(cl.Address).Offset(6).Value Next End With End Sub
[/vba]
[vba]
Code
Private Sub Workbook_Open() With Sheets("стат-ка звонки") For Each cl In .Range(.Cells(2, 2), .Cells(2, 2).End(xlToRight)) If cl < Date Then .Range(cl.Address).Offset(6).Value = .Range(cl.Address).Offset(6).Value Next End With End Sub
Private Sub Workbook_Open() With Sheets("стат-ка звонки") For Each cl In .Range(.Cells(2, 2), .Cells(2, 2).End(xlToRight)) If cl < Date Then .Range(cl.Address).Offset(6).Value = .Range(cl.Address).Offset(6).Value Next End With End Sub
как она работает? создал макрос, но ничего не происходит
Quote (RAN)
Private Sub Workbook_Open() With Sheets("стат-ка звонки") For Each cl In .Range(.Cells(2, 2), .Cells(2, 2).End(xlToRight)) If cl < Date Then .Range(cl.Address).Offset(6).Value = .Range(cl.Address).Offset(6).Value Next End With End Sub
как она работает? создал макрос, но ничего не происходитпаша000
Что значит создал макрос? По моему, создал макрос я , а вам осталось только скопировать его в модуль "ЭтаКнига", сохранить и закрыть книгу. При открытии книги устаревшие формулы будут заменены на значения.
Quote (паша000)
создал макрос, но ничего не происходит
Что значит создал макрос? По моему, создал макрос я , а вам осталось только скопировать его в модуль "ЭтаКнига", сохранить и закрыть книгу. При открытии книги устаревшие формулы будут заменены на значения.RAN
Private Sub Workbook_Open() With Sheets("стат-ка звонки") For Each cl In .Range(.Cells(2, 2), .Cells(2, 2).End(xlToRight)) If cl < Date Then .Range(cl.Address).Offset(6).Resize(10).Value = .Range(cl.Address).Offset(6).Value Next End With End Sub
[/vba] не работает( имеет значение в каком файле создаешь данный макрос?(название листа в эксель такое же)
сделал так:
[vba]
Code
Private Sub Workbook_Open() With Sheets("стат-ка звонки") For Each cl In .Range(.Cells(2, 2), .Cells(2, 2).End(xlToRight)) If cl < Date Then .Range(cl.Address).Offset(6).Resize(10).Value = .Range(cl.Address).Offset(6).Value Next End With End Sub
[/vba] не работает( имеет значение в каком файле создаешь данный макрос?(название листа в эксель такое же)паша000
Сообщение отредактировал паша000 - Пятница, 20.07.2012, 17:04
всем привет! никак не получается подкорректить макрос уже для рабочего файлика. помогите пожалуйста прикрепил упрощенную копию.
нужно сделать следующее: строчки 5 и 22 должны менять формулу на число в начале каждого дня. то есть при открытии файла ячейка с формулой за текущую дату меняется на число строчки 7-15, 25-30 формула меняется как и раньше на число за предыдущий день.
заранее спасибо)
всем привет! никак не получается подкорректить макрос уже для рабочего файлика. помогите пожалуйста прикрепил упрощенную копию.
нужно сделать следующее: строчки 5 и 22 должны менять формулу на число в начале каждого дня. то есть при открытии файла ячейка с формулой за текущую дату меняется на число строчки 7-15, 25-30 формула меняется как и раньше на число за предыдущий день.
А вы внимательно ответы читали? Где должна быть процедура Workbook_Open? И где она у вас?
Offset(6) - смешение ячейки относительно ячейки с датами (строки 2). Resize(10) - количество строк, в которых нужно менять формулу на значение.
Для первого диапазана показываю, для второго - считайте.
[vba]
Code
For Each cl In .Range(.Cells(2, 2), .Cells(2, 2).End(xlToRight)) If cl < Date Then .Range(cl.Address).Offset(3).Resize(11).Value = .Range(cl.Address).Offset(3).Resize(11).Value .Range(cl.Address).Offset(3).Resize(11).Value .............. End If Next
[/vba]
А вы внимательно ответы читали? Где должна быть процедура Workbook_Open? И где она у вас?
Offset(6) - смешение ячейки относительно ячейки с датами (строки 2). Resize(10) - количество строк, в которых нужно менять формулу на значение.
Для первого диапазана показываю, для второго - считайте.
[vba]
Code
For Each cl In .Range(.Cells(2, 2), .Cells(2, 2).End(xlToRight)) If cl < Date Then .Range(cl.Address).Offset(3).Resize(11).Value = .Range(cl.Address).Offset(3).Resize(11).Value .Range(cl.Address).Offset(3).Resize(11).Value .............. End If Next