Private Sub Workbook_NewSheet(ByVal Sh As Object) in_ = Sh.Index - 1 If IsDate(Sheets(in_).Name) Then Application.ScreenUpdating = 0 Application.DisplayAlerts = 0 Sh.Delete Application.DisplayAlerts = 1 Sheets(in_).Copy after:=Sheets(in_) Sheets(in_ + 1).Name = Format(CDate(Sheets(in_).Name) + 1, "DD.MM.YYYY") Application.ScreenUpdating = 1 End If End Sub
[/vba]
Не, не так. Не заметил про текущую дату. Это я сделал со следующей по порядку датой. Пусть остается. Файл 1689
А вот с текущей. Файл 1689_1
[vba]
Код
Private Sub Workbook_NewSheet(ByVal Sh As Object) in_ = Sh.Index - 1 Application.ScreenUpdating = 0 Application.DisplayAlerts = 0 Sh.Delete Sheets(in_).Copy after:=Sheets(in_) On Error Resume Next Sheets(in_ + 1).Name = Format(Date + 1, "DD.MM.YYYY") If Err Then Sheets(in_ + 1).Delete MsgBox "Лист с сегодняшней датой уже есть" End If Application.DisplayAlerts = 1 Application.ScreenUpdating = 1 End Sub
[/vba]
Так нужно? В модуль книги
[vba]
Код
Private Sub Workbook_NewSheet(ByVal Sh As Object) in_ = Sh.Index - 1 If IsDate(Sheets(in_).Name) Then Application.ScreenUpdating = 0 Application.DisplayAlerts = 0 Sh.Delete Application.DisplayAlerts = 1 Sheets(in_).Copy after:=Sheets(in_) Sheets(in_ + 1).Name = Format(CDate(Sheets(in_).Name) + 1, "DD.MM.YYYY") Application.ScreenUpdating = 1 End If End Sub
[/vba]
Не, не так. Не заметил про текущую дату. Это я сделал со следующей по порядку датой. Пусть остается. Файл 1689
А вот с текущей. Файл 1689_1
[vba]
Код
Private Sub Workbook_NewSheet(ByVal Sh As Object) in_ = Sh.Index - 1 Application.ScreenUpdating = 0 Application.DisplayAlerts = 0 Sh.Delete Sheets(in_).Copy after:=Sheets(in_) On Error Resume Next Sheets(in_ + 1).Name = Format(Date + 1, "DD.MM.YYYY") If Err Then Sheets(in_ + 1).Delete MsgBox "Лист с сегодняшней датой уже есть" End If Application.DisplayAlerts = 1 Application.ScreenUpdating = 1 End Sub
- Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума
- Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума_Boroda_
сделать в формуле (F3-'16.06.2018'!P3) динамическое измнение даты
То, что имя листа внешне похоже на дату, не делает его датой. вам нужна формула, которая проверяет имя листа, делает из него текст предыдущей даты, находит подходящий лист, и оттуда тянет данные. Этажа 4, или 5.
Цитатаrocket, ()
сделать в формуле (F3-'16.06.2018'!P3) динамическое измнение даты
То, что имя листа внешне похоже на дату, не делает его датой. вам нужна формула, которая проверяет имя листа, делает из него текст предыдущей даты, находит подходящий лист, и оттуда тянет данные. Этажа 4, или 5.RAN
rocket, как Вы думаете, в Вашем приложенном файле за реальное время (1-2 минуты) можно разобраться? Что, куда, откуда должно тянуться? Нет, все в принципе понятно, что из предыдущего листа, о чем Андрей выше и написал. Но что конкретно? (с) Приложите нормальный файл, в котором четко пропишите - в эту ячейку нужно вытянуть данные из того листа, а в это - сумму из этих листов
*До меня как-то только сейчас дошло - название темы "Новый день при создании нового листа". Это что ж получается - как только создаем новый лист, так сразу же наступает новый день?
rocket, как Вы думаете, в Вашем приложенном файле за реальное время (1-2 минуты) можно разобраться? Что, куда, откуда должно тянуться? Нет, все в принципе понятно, что из предыдущего листа, о чем Андрей выше и написал. Но что конкретно? (с) Приложите нормальный файл, в котором четко пропишите - в эту ячейку нужно вытянуть данные из того листа, а в это - сумму из этих листов
*До меня как-то только сейчас дошло - название темы "Новый день при создании нового листа". Это что ж получается - как только создаем новый лист, так сразу же наступает новый день? _Boroda_
Я добавил значения и добавил некоторые формулы (по-дилетантски конечно, но я учусь)
Мне для подсчета дневного прироста, нужно прирост первой смены высчитывать исходя из капитализации 3 смены предыдущего дня.
Так вроде корректней звучит, но это первая цель. А далее я хочу высчитывать прирост капитализации каждого направления относительно динамики курса и количества монет.
_Boroda_, философский вопрос.
Я добавил значения и добавил некоторые формулы (по-дилетантски конечно, но я учусь)
Мне для подсчета дневного прироста, нужно прирост первой смены высчитывать исходя из капитализации 3 смены предыдущего дня.
Так вроде корректней звучит, но это первая цель. А далее я хочу высчитывать прирост капитализации каждого направления относительно динамики курса и количества монет.rocket
rocket, у Вас в книге всегда листы по порядку будут? Например, пропусков листов с датами выходных и праздников не будет? Если будут, то формула будет посложнее. Если нет, то можно так
А вообще я бы сразу макросом все писал при создании нового листа [vba]
Код
Private Sub Workbook_NewSheet(ByVal Sh As Object) in_ = Sh.Index - 1 Application.ScreenUpdating = 0 Application.DisplayAlerts = 0 Sh.Delete Sheets(in_).Copy after:=Sheets(in_) On Error Resume Next With Sheets(in_ + 1) .Name = Format(Date + 0, "DD.MM.YYYY") If Err Then .Delete MsgBox "Остановись, кто-то уже это сделал" Else .Range("G20").FormulaLocal = "=F3-'" & Sheets(in_).Name & "'!P3" End If End With Application.DisplayAlerts = 1 Application.ScreenUpdating = 1 End Sub
[/vba] И не совсем понятно почему у Вас в пожеланиях Клетка G20 —
Цитата
сделать в формуле (F3-'16.06.2018'!P3)
- для строки 20 разницу строк 3. Но дело Ваше
rocket, у Вас в книге всегда листы по порядку будут? Например, пропусков листов с датами выходных и праздников не будет? Если будут, то формула будет посложнее. Если нет, то можно так
А вообще я бы сразу макросом все писал при создании нового листа [vba]
Код
Private Sub Workbook_NewSheet(ByVal Sh As Object) in_ = Sh.Index - 1 Application.ScreenUpdating = 0 Application.DisplayAlerts = 0 Sh.Delete Sheets(in_).Copy after:=Sheets(in_) On Error Resume Next With Sheets(in_ + 1) .Name = Format(Date + 0, "DD.MM.YYYY") If Err Then .Delete MsgBox "Остановись, кто-то уже это сделал" Else .Range("G20").FormulaLocal = "=F3-'" & Sheets(in_).Name & "'!P3" End If End With Application.DisplayAlerts = 1 Application.ScreenUpdating = 1 End Sub
[/vba] И не совсем понятно почему у Вас в пожеланиях Клетка G20 —
Цитата
сделать в формуле (F3-'16.06.2018'!P3)
- для строки 20 разницу строк 3. Но дело Ваше_Boroda_
_Boroda_, уточню вопрос, несколько человек на разных операторах заполняют таблицы, сервер один, файлы excel в архивах и под паролем, нужно результаты подсчета таблицы одного файла автоматически экспортировать в таблицу другого файла, чтобы заполнение таблиц занимало как можно меньше времени.
_Boroda_, уточню вопрос, несколько человек на разных операторах заполняют таблицы, сервер один, файлы excel в архивах и под паролем, нужно результаты подсчета таблицы одного файла автоматически экспортировать в таблицу другого файла, чтобы заполнение таблиц занимало как можно меньше времени.rocket