Добрый день! Позвольте подкинуть задачку Знатокам VBA. Думаю, что ее решение можно осуществить только с помощью макроса. (Опытом написания, которых не владею). Исходные данные: В столбце «А» вносятся значения (как числовые, текстовые, так и смешанные). Значения в данном столбце периодически изменяются (в любой ячейке столбца). Рядом с исходным столбцом расположены столбцы по названию каждого из 12 месяцев. Вопрос: Необходимо, чтобы внесенные изменения в столбец «А» отражались в соответствующем столбце месяца, если они были внесены в период его действия. То есть если, к примеру, файл был открыт в период с 01 декабря по 31 декабря, то внесенные в столбец изменения, отразились в столбце «Декабрь». Если изменения вносим в период 01 марта по 31 марта, то в столбец «Март» и т.п. В течение текущего периода (месяца) изменения в ячейках столбца «А» могут проводиться не ограниченное число раз, но в столбце соответствующего месяца должно отражаться только последнее, внесенное в исходный столбец изменение (суммировать значения не нужно). Файл прилагается.
Добрый день! Позвольте подкинуть задачку Знатокам VBA. Думаю, что ее решение можно осуществить только с помощью макроса. (Опытом написания, которых не владею). Исходные данные: В столбце «А» вносятся значения (как числовые, текстовые, так и смешанные). Значения в данном столбце периодически изменяются (в любой ячейке столбца). Рядом с исходным столбцом расположены столбцы по названию каждого из 12 месяцев. Вопрос: Необходимо, чтобы внесенные изменения в столбец «А» отражались в соответствующем столбце месяца, если они были внесены в период его действия. То есть если, к примеру, файл был открыт в период с 01 декабря по 31 декабря, то внесенные в столбец изменения, отразились в столбце «Декабрь». Если изменения вносим в период 01 марта по 31 марта, то в столбец «Март» и т.п. В течение текущего периода (месяца) изменения в ячейках столбца «А» могут проводиться не ограниченное число раз, но в столбце соответствующего месяца должно отражаться только последнее, внесенное в исходный столбец изменение (суммировать значения не нужно). Файл прилагается.Лорик
Благословите модуль листа событийным макросом - и будет Вам счастье.
Здравствуйте,Rioran! В Вашем варианте, при изменении периода, в столбец текущего месяца переносятся все значения которые внесены в ИСХОДНЫЙ столбец. А нужно, что бы при изменении временного периода, в столбце соответствующего месяца отражались только измененные значения. Если, к примеру, столбец "А" заполнен значениями А1,А2,А3,А4,А5, мы открыли файл 25 июня и исправили значение А3 на В18, то в столбце "Июнь" должно отразиться В18. При открытии файла 29 июня, если вносим изменение в ту же ячейку (М58, например), в столбце "Июнь" отражается М58. Открываем файл в августе,все имеющиеся на эту дату значения из ИСХОДНОГО столбца не должны копироваться в столбец "Август", отражаться должны только текущие изменения. Т.Е. в столбцах с наименованием месяца отражаются только те изменения которые вносятся в соответствующем временном периоде (месяце).
Благословите модуль листа событийным макросом - и будет Вам счастье.
Здравствуйте,Rioran! В Вашем варианте, при изменении периода, в столбец текущего месяца переносятся все значения которые внесены в ИСХОДНЫЙ столбец. А нужно, что бы при изменении временного периода, в столбце соответствующего месяца отражались только измененные значения. Если, к примеру, столбец "А" заполнен значениями А1,А2,А3,А4,А5, мы открыли файл 25 июня и исправили значение А3 на В18, то в столбце "Июнь" должно отразиться В18. При открытии файла 29 июня, если вносим изменение в ту же ячейку (М58, например), в столбце "Июнь" отражается М58. Открываем файл в августе,все имеющиеся на эту дату значения из ИСХОДНОГО столбца не должны копироваться в столбец "Август", отражаться должны только текущие изменения. Т.Е. в столбцах с наименованием месяца отражаются только те изменения которые вносятся в соответствующем временном периоде (месяце).Лорик
Спасибо,Rioran, Вы умничка! Если можно, на языке обывателя, объясните как работает макрос. Я к тому, что если к примеру таблица с месяцами будет расположена ниже ИСХОДНОГО столбца или вообще на другом листе, будет ли работать макрос. Вообщем, если условие останется то же, но расположение таблиц будет другое.
Спасибо,Rioran, Вы умничка! Если можно, на языке обывателя, объясните как работает макрос. Я к тому, что если к примеру таблица с месяцами будет расположена ниже ИСХОДНОГО столбца или вообще на другом листе, будет ли работать макрос. Вообщем, если условие останется то же, но расположение таблиц будет другое.Лорик
С удовольствием поделюсь своими представлениями =) Общую логику смотрите в комментариях к коду.
[vba]
Код
'Объявляем публичную переменную. Dim RngX As Range
'При создании событийного макроса автоматически объявляется переменная Target 'Этой переменной определяются изменённые ячейки Private Sub Worksheet_Change(ByVal Target As Range)
'Просим переменную отвечать за область, в которой надо отслеживать изменения Set RngX = Range("A4:A15")
'Если область изменений пересекается с областью, которую отслеживаем If Not Intersect(Target, RngX) Is Nothing Then 'То ячейка, отстоящая от изменённой через Х столбцов, равна изменённой 'Где Х равен номеру месяца от текущей системной даты Target.Offset(0, 1 + Month(Date)).Value = Target.Value End If
End Sub
[/vba]
С удовольствием поделюсь своими представлениями =) Общую логику смотрите в комментариях к коду.
[vba]
Код
'Объявляем публичную переменную. Dim RngX As Range
'При создании событийного макроса автоматически объявляется переменная Target 'Этой переменной определяются изменённые ячейки Private Sub Worksheet_Change(ByVal Target As Range)
'Просим переменную отвечать за область, в которой надо отслеживать изменения Set RngX = Range("A4:A15")
'Если область изменений пересекается с областью, которую отслеживаем If Not Intersect(Target, RngX) Is Nothing Then 'То ячейка, отстоящая от изменённой через Х столбцов, равна изменённой 'Где Х равен номеру месяца от текущей системной даты Target.Offset(0, 1 + Month(Date)).Value = Target.Value End If