Всем привет!! Прошу помощи с макросами. Макросы простые. Требуется заполнить ячейки согласно условию (проставить дату, добавить значение). Подробная информация указана в файле в примечаниях. Заранее спасибо.
Всем привет!! Прошу помощи с макросами. Макросы простые. Требуется заполнить ячейки согласно условию (проставить дату, добавить значение). Подробная информация указана в файле в примечаниях. Заранее спасибо.zyoger
Sub number___() u = Cells(Rows.Count, "a").End(xlUp).Row v = Range("b" & u).Value If v = "" Then Range("b" & u) = 52 Else MsgBox "Нет данных в A!" End If End Sub Sub date___() u = Cells(Rows.Count, "a").End(xlUp).Row v = Range("c" & u).Value If v = "" Then Range("c" & u) = Format(Date, "dd.mm.yyyy") Else MsgBox "Нет данных в A!" End If End Sub
[/vba]конечную дату не понял
[vba]
Код
Sub number___() u = Cells(Rows.Count, "a").End(xlUp).Row v = Range("b" & u).Value If v = "" Then Range("b" & u) = 52 Else MsgBox "Нет данных в A!" End If End Sub Sub date___() u = Cells(Rows.Count, "a").End(xlUp).Row v = Range("c" & u).Value If v = "" Then Range("c" & u) = Format(Date, "dd.mm.yyyy") Else MsgBox "Нет данных в A!" End If End Sub
Nic70y, спасибо, практически то что нужно. Только не совсем так заполняет как надо. Заполняется только последняя строка, а надо что бы все строки были заполнены (скрин во вложении). По поводу конечной даты, она должна рассчитываться следующим образом: если "тип резерва (столбец Е)" = 2, то дата должна быть "31.12.2049" если "тип резерва (столбец Е)" = 3, то дата должна быть "текущая дата + 3 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.05.2022) если "тип резерва (столбец Е)" = 22, то дата должна быть "текущая дата + 1 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.03.2022) если "тип резерва (столбец Е)" = 99, то дата должна быть "текущая дата + 2 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.04.2022)
Nic70y, спасибо, практически то что нужно. Только не совсем так заполняет как надо. Заполняется только последняя строка, а надо что бы все строки были заполнены (скрин во вложении). По поводу конечной даты, она должна рассчитываться следующим образом: если "тип резерва (столбец Е)" = 2, то дата должна быть "31.12.2049" если "тип резерва (столбец Е)" = 3, то дата должна быть "текущая дата + 3 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.05.2022) если "тип резерва (столбец Е)" = 22, то дата должна быть "текущая дата + 1 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.03.2022) если "тип резерва (столбец Е)" = 99, то дата должна быть "текущая дата + 2 месяца" (если сегодня 21.02.2022 то итоговая дата должна быть: 21.04.2022)zyoger
Nic70y, еще парочка вопросов 1. Можно ли сделать макрос который разные форматы ячеек в столбце А меняет на один, а именно "общий, без форматирования". Данные которые приходится копировать в столбец А бывают "Число в этой ячейке отформатировано как текст, или перед ним стоит апостроф." 2. И макрос который будет сохранять данный файл на рабочем столе с именем "Шаблон Gold_'текущая дата. xlsx'", в формате xlsx (без поддержки макросов).
Nic70y, еще парочка вопросов 1. Можно ли сделать макрос который разные форматы ячеек в столбце А меняет на один, а именно "общий, без форматирования". Данные которые приходится копировать в столбец А бывают "Число в этой ячейке отформатировано как текст, или перед ним стоит апостроф." 2. И макрос который будет сохранять данный файл на рабочем столе с именем "Шаблон Gold_'текущая дата. xlsx'", в формате xlsx (без поддержки макросов).zyoger
zyoger, а зачем три макроса, может одним обойдемся? [vba]
Код
Sub u__() Application.ScreenUpdating = False u = Cells(Rows.Count, "a").End(xlUp).Row a = Date f = Year(a) g = Month(a) h = Day(a) For Each c In Range("a2:a" & u) If c <> "" And c.Offset(0, 1) = "" Then c.Offset(0, 1) = 52 End If If c <> "" And c.Offset(0, 2) = "" Then c.Offset(0, 2) = Format(a, "dd.mm.yyyy") End If If c <> "" And c.Offset(0, 3) = "" Then x = c.Offset(0, 4) If x = 2 Then c.Offset(0, 3) = Format(DateSerial(2049, 12, 31), "dd.mm.yyyy") If x = 3 Then c.Offset(0, 3) = Format(DateSerial(f, g + 3, h), "dd.mm.yyyy") If x = 22 Then c.Offset(0, 3) = Format(DateSerial(f, g + 1, h), "dd.mm.yyyy") If x = 99 Then c.Offset(0, 3) = Format(DateSerial(f, g + 2, h), "dd.mm.yyyy") End If Range("a" & c.Row).NumberFormat = "General" Next Application.ScreenUpdating = True End Sub
[/vba]
zyoger, а зачем три макроса, может одним обойдемся? [vba]
Код
Sub u__() Application.ScreenUpdating = False u = Cells(Rows.Count, "a").End(xlUp).Row a = Date f = Year(a) g = Month(a) h = Day(a) For Each c In Range("a2:a" & u) If c <> "" And c.Offset(0, 1) = "" Then c.Offset(0, 1) = 52 End If If c <> "" And c.Offset(0, 2) = "" Then c.Offset(0, 2) = Format(a, "dd.mm.yyyy") End If If c <> "" And c.Offset(0, 3) = "" Then x = c.Offset(0, 4) If x = 2 Then c.Offset(0, 3) = Format(DateSerial(2049, 12, 31), "dd.mm.yyyy") If x = 3 Then c.Offset(0, 3) = Format(DateSerial(f, g + 3, h), "dd.mm.yyyy") If x = 22 Then c.Offset(0, 3) = Format(DateSerial(f, g + 1, h), "dd.mm.yyyy") If x = 99 Then c.Offset(0, 3) = Format(DateSerial(f, g + 2, h), "dd.mm.yyyy") End If Range("a" & c.Row).NumberFormat = "General" Next Application.ScreenUpdating = True End Sub
Nic70y, Да согласен, логичнее сделать одним макросом. Подскажите, возможно ли еще реализовать следующее: 1. Можно ли сделать макрос который разные форматы ячеек в столбце А меняет на один, а именно "общий, без форматирования". Данные которые приходится копировать в столбец А бывают "Число в этой ячейке отформатировано как текст, или перед ним стоит апостроф." 2. И макрос который будет сохранять данный файл на рабочем столе с именем "Шаблон Gold_'текущая дата. xlsx'", в формате xlsx (без поддержки макросов).
Nic70y, Да согласен, логичнее сделать одним макросом. Подскажите, возможно ли еще реализовать следующее: 1. Можно ли сделать макрос который разные форматы ячеек в столбце А меняет на один, а именно "общий, без форматирования". Данные которые приходится копировать в столбец А бывают "Число в этой ячейке отформатировано как текст, или перед ним стоит апостроф." 2. И макрос который будет сохранять данный файл на рабочем столе с именем "Шаблон Gold_'текущая дата. xlsx'", в формате xlsx (без поддержки макросов).zyoger