Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/макрос: преобразования функции в число - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
макрос: преобразования функции в число
Гость Дата: Четверг, 19.07.2012, 19:42 | Сообщение № 1
Группа: Гости
Здравствуйте форумчане!
Помогие создать макрос:
дано: есть ячейка №1, в которой значение (численное) меняется изо дня в день.
ячейка №2 имеет формулу в статистике за вчерашнее число
ячейка №3 имеет ту же формулу что и в №2, только показывает она сегодняшнее число
другими словами вчерашнее число потерялось из-за того что сегодня значение в ячейке №1 изменилось

задача: придумать макрос, чтобы в статистике после окончания вчерашнего дня в ячейке №2 функция преобразовалась в число. то есть если сегодня изменить число в ячейке №1, ячейка №2 останется неизменной.
пример файла могу предоставить.
 
Ответить
СообщениеЗдравствуйте форумчане!
Помогие создать макрос:
дано: есть ячейка №1, в которой значение (численное) меняется изо дня в день.
ячейка №2 имеет формулу в статистике за вчерашнее число
ячейка №3 имеет ту же формулу что и в №2, только показывает она сегодняшнее число
другими словами вчерашнее число потерялось из-за того что сегодня значение в ячейке №1 изменилось

задача: придумать макрос, чтобы в статистике после окончания вчерашнего дня в ячейке №2 функция преобразовалась в число. то есть если сегодня изменить число в ячейке №1, ячейка №2 останется неизменной.
пример файла могу предоставить.

Автор - Гость
Дата добавления - 19.07.2012 в 19:42
ABC Дата: Четверг, 19.07.2012, 20:08 | Сообщение № 2
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
откуда знать макросу что формула.Value вчерашнее или сегодняшнее (если у Вас формула =СЕГОДНЯ()) ...
Правила
пример файл...

[vba]
Code
Sub www()
      ActiveCell.value = Date
      'Cells(1, 1).Value = Date
End Sub
[/vba]


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет


Сообщение отредактировал ABC - Четверг, 19.07.2012, 20:20
 
Ответить
Сообщениеоткуда знать макросу что формула.Value вчерашнее или сегодняшнее (если у Вас формула =СЕГОДНЯ()) ...
Правила
пример файл...

[vba]
Code
Sub www()
      ActiveCell.value = Date
      'Cells(1, 1).Value = Date
End Sub
[/vba]

Автор - ABC
Дата добавления - 19.07.2012 в 20:08
Jhonson Дата: Четверг, 19.07.2012, 22:15 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Репутация: 169 ±
Замечаний: 0% ±

Ну или так в модуль ЭтаКнига:
[vba]
Code
Private Sub Workbook_Open()
If MsgBox("Завтра наступило?", vbYesNo) = 6 Then
     Range("B7").Value = Range("B6").Value
End If
End Sub
[/vba]
, где B7-это вчерашний день, а B6-сегодняшний
Файл пример ускорит решение вопроса!


"Ничто не приносит людям столько неприятностей, как разум."
 
Ответить
СообщениеНу или так в модуль ЭтаКнига:
[vba]
Code
Private Sub Workbook_Open()
If MsgBox("Завтра наступило?", vbYesNo) = 6 Then
     Range("B7").Value = Range("B6").Value
End If
End Sub
[/vba]
, где B7-это вчерашний день, а B6-сегодняшний
Файл пример ускорит решение вопроса!

Автор - Jhonson
Дата добавления - 19.07.2012 в 22:15
паша000 Дата: Пятница, 20.07.2012, 12:42 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Вот пример-файл. там два листа.
первый лист: база. в колонке 2,3,4 изменяются значения ежедневно. - это статусы звонка. ячейка №1 допустим находится в колонке 3
второй лист: ст-ка звонка. там строчка 8 показывает сколько звонков ежедневно было сделано. допустим это ячейка №2 и №3.
если оператор сегодня дозвонится до первого человека, в колонке номер 3 изменится дата на текущую. как сделать чтобы в строчке номер 8 во втором листе не изменились цифры за прошлые дни? понятное дело в конце каждого дня можно за текущий день вместо формулы оставлять цифру, но делать одно и то же каждый день не есть гуд для нас)))
К сообщению приложен файл: 1002788.xlsm (98.4 Kb)


Сообщение отредактировал паша000 - Пятница, 20.07.2012, 14:24
 
Ответить
СообщениеВот пример-файл. там два листа.
первый лист: база. в колонке 2,3,4 изменяются значения ежедневно. - это статусы звонка. ячейка №1 допустим находится в колонке 3
второй лист: ст-ка звонка. там строчка 8 показывает сколько звонков ежедневно было сделано. допустим это ячейка №2 и №3.
если оператор сегодня дозвонится до первого человека, в колонке номер 3 изменится дата на текущую. как сделать чтобы в строчке номер 8 во втором листе не изменились цифры за прошлые дни? понятное дело в конце каждого дня можно за текущий день вместо формулы оставлять цифру, но делать одно и то же каждый день не есть гуд для нас)))

Автор - паша000
Дата добавления - 20.07.2012 в 12:42
RAN Дата: Пятница, 20.07.2012, 13:14 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[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
[/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
[/vba]

Автор - RAN
Дата добавления - 20.07.2012 в 13:14
паша000 Дата: Пятница, 20.07.2012, 14:03 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

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

как она работает? создал макрос, но ничего не происходит
 
Ответить
Сообщение
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
Дата добавления - 20.07.2012 в 14:03
RAN Дата: Пятница, 20.07.2012, 15:41 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Quote (паша000)
создал макрос, но ничего не происходит

Что значит создал макрос? По моему, создал макрос я smile , а вам осталось только скопировать его в модуль "ЭтаКнига", сохранить и закрыть книгу. При открытии книги устаревшие формулы будут заменены на значения.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Quote (паша000)
создал макрос, но ничего не происходит

Что значит создал макрос? По моему, создал макрос я smile , а вам осталось только скопировать его в модуль "ЭтаКнига", сохранить и закрыть книгу. При открытии книги устаревшие формулы будут заменены на значения.

Автор - RAN
Дата добавления - 20.07.2012 в 15:41
паша000 Дата: Пятница, 20.07.2012, 15:43 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Quote (RAN)
вам осталось только скопировать его в модуль "ЭтаКнига", сохранить и закрыть книгу

это я сделал. а при каком условии и когда он должен их заменить? у меня ничего не произошло
 
Ответить
Сообщение
Quote (RAN)
вам осталось только скопировать его в модуль "ЭтаКнига", сохранить и закрыть книгу

это я сделал. а при каком условии и когда он должен их заменить? у меня ничего не произошло

Автор - паша000
Дата добавления - 20.07.2012 в 15:43
паша000 Дата: Пятница, 20.07.2012, 16:07 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Quote (Serge_007)
А макросы включены?

включил. перезапустил файл - функции за старые даты не исчезли
 
Ответить
Сообщение
Quote (Serge_007)
А макросы включены?

включил. перезапустил файл - функции за старые даты не исчезли

Автор - паша000
Дата добавления - 20.07.2012 в 16:07
паша000 Дата: Пятница, 20.07.2012, 16:10 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

заново пересоздал макрос - все получилось.
всем спасибо большое))
 
Ответить
Сообщениезаново пересоздал макрос - все получилось.
всем спасибо большое))

Автор - паша000
Дата добавления - 20.07.2012 в 16:10
паша000 Дата: Пятница, 20.07.2012, 16:36 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

теперь другой вопрос: как подкорректировать код, если таких строчек как восьмая, в файле-примере, будет не одна, а до 10ти?


Сообщение отредактировал паша000 - Пятница, 20.07.2012, 16:44
 
Ответить
Сообщениетеперь другой вопрос: как подкорректировать код, если таких строчек как восьмая, в файле-примере, будет не одна, а до 10ти?

Автор - паша000
Дата добавления - 20.07.2012 в 16:36
RAN Дата: Пятница, 20.07.2012, 16:49 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Code
.Range(cl.Address).Offset(6).Resize(10).Value
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Code
.Range(cl.Address).Offset(6).Resize(10).Value
[/vba]

Автор - RAN
Дата добавления - 20.07.2012 в 16:49
паша000 Дата: Пятница, 20.07.2012, 17:02 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

сделал так:

[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 - Пятница, 20.07.2012, 17:04
 
Ответить
Сообщениесделал так:

[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
Дата добавления - 20.07.2012 в 17:02
Serge_007 Дата: Пятница, 20.07.2012, 17:07 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2750 ±
Замечаний: ±

Excel 2016
Quote (паша000)
имеет значение в каком файле создаешь данный макрос?

Нет


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (паша000)
имеет значение в каком файле создаешь данный макрос?

Нет

Автор - Serge_007
Дата добавления - 20.07.2012 в 17:07
паша000 Дата: Вторник, 24.07.2012, 14:53 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

всем привет!
никак не получается подкорректить макрос уже для рабочего файлика. помогите пожалуйста
прикрепил упрощенную копию.

нужно сделать следующее:
строчки 5 и 22 должны менять формулу на число в начале каждого дня. то есть при открытии файла ячейка с формулой за текущую дату меняется на число
строчки 7-15, 25-30 формула меняется как и раньше на число за предыдущий день.

заранее спасибо)
К сообщению приложен файл: 9766655.xlsm (42.7 Kb)
 
Ответить
Сообщениевсем привет!
никак не получается подкорректить макрос уже для рабочего файлика. помогите пожалуйста
прикрепил упрощенную копию.

нужно сделать следующее:
строчки 5 и 22 должны менять формулу на число в начале каждого дня. то есть при открытии файла ячейка с формулой за текущую дату меняется на число
строчки 7-15, 25-30 формула меняется как и раньше на число за предыдущий день.

заранее спасибо)

Автор - паша000
Дата добавления - 24.07.2012 в 14:53
паша000 Дата: Среда, 25.07.2012, 12:14 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

ну что, мне кно-нибудь поможет?
 
Ответить
Сообщениену что, мне кно-нибудь поможет?

Автор - паша000
Дата добавления - 25.07.2012 в 12:14
Serge_007 Дата: Среда, 25.07.2012, 12:42 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2750 ±
Замечаний: ±

Excel 2016
Quote (паша000)
ну что, мне кно-нибудь поможет?

А что, Вам кто-то обязан?
Если у кого-то будет время и желание, то обязательно помогут.
Не надо требовать, форум-то бесплатный


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (паша000)
ну что, мне кно-нибудь поможет?

А что, Вам кто-то обязан?
Если у кого-то будет время и желание, то обязательно помогут.
Не надо требовать, форум-то бесплатный

Автор - Serge_007
Дата добавления - 25.07.2012 в 12:42
RAN Дата: Среда, 25.07.2012, 12:56 | Сообщение № 18
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А вы внимательно ответы читали?
Где должна быть процедура 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
[/vba]

Автор - RAN
Дата добавления - 25.07.2012 в 12:56
паша000 Дата: Среда, 25.07.2012, 13:34 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Quote (Serge_007)
А что, Вам кто-то обязан?
Если у кого-то будет время и желание, то обязательно помогут.
Не надо требовать, форум-то бесплатный

я разве требовал? именно потому что форум направлен на помощь другим людям я к вам и обратился потому что нме нужна помощь
Quote (RAN)
Где должна быть процедура Workbook_Open?
И где она у вас?

не понял вопроса. разве есть варианты? как я делал: скопировал макрос и вставил в модуль VBA
 
Ответить
Сообщение
Quote (Serge_007)
А что, Вам кто-то обязан?
Если у кого-то будет время и желание, то обязательно помогут.
Не надо требовать, форум-то бесплатный

я разве требовал? именно потому что форум направлен на помощь другим людям я к вам и обратился потому что нме нужна помощь
Quote (RAN)
Где должна быть процедура Workbook_Open?
И где она у вас?

не понял вопроса. разве есть варианты? как я делал: скопировал макрос и вставил в модуль VBA

Автор - паша000
Дата добавления - 25.07.2012 в 13:34
Serge_007 Дата: Среда, 25.07.2012, 13:43 | Сообщение № 20
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2750 ±
Замечаний: ±

Excel 2016
Quote (паша000)
разве есть варианты?

Есть

Quote (паша000)
скопировал макрос и вставил в модуль VBA

В КАКОЙ модуль? А надо в какой?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (паша000)
разве есть варианты?

Есть

Quote (паша000)
скопировал макрос и вставил в модуль VBA

В КАКОЙ модуль? А надо в какой?

Автор - Serge_007
Дата добавления - 25.07.2012 в 13:43
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!