Добрый день. Подскажите, есть ли возможность добавлять/изменять данные в другой таблице (листе) У меня есть первый лист, там дата и показатели с суммой. На втором листе данные по датам и показателям Если я на первом листе выбираю дату, которая есть на втором, до данные подтягиваются (суммесли например). Но если я изменил значение, то на 2 листе это значение должно изменится. Или если на втором листе нет этой даты, то пустые значения на первом (суммесли так же верно отображает). Но вот как при изменении значения получить новую запись на 2 листе. И формулу я использовать не могу, так как если я ее меняю на значение, то шаблон весь ломается. Через сводные таблицы так же не получается это сделать. Или только через VBA это получится?
Добрый день. Подскажите, есть ли возможность добавлять/изменять данные в другой таблице (листе) У меня есть первый лист, там дата и показатели с суммой. На втором листе данные по датам и показателям Если я на первом листе выбираю дату, которая есть на втором, до данные подтягиваются (суммесли например). Но если я изменил значение, то на 2 листе это значение должно изменится. Или если на втором листе нет этой даты, то пустые значения на первом (суммесли так же верно отображает). Но вот как при изменении значения получить новую запись на 2 листе. И формулу я использовать не могу, так как если я ее меняю на значение, то шаблон весь ломается. Через сводные таблицы так же не получается это сделать. Или только через VBA это получится?GAS1979
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.EnableEvents = False Dim a As Double a = Range("b1").Value b = Cells(Rows.Count, "a").End(xlUp).Row c = Application.Match(a, Sheets("Лист2").Range("a:a"), 0) If Not Intersect(Target, Range("b3:b" & b)) Is Nothing Then d = Target.Offset(0, -1) e = Application.Match(d, Sheets("Лист2").Range("1:1"), 0) f = IsNumeric(c) If f = False Then c = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row + 1 Sheets("Лист2").Cells(c, 1) = a Sheets("Лист2").Cells(c, 1).NumberFormat = "m/d/yyyy" End If g = IsNumeric(e) If g = False Then e = Sheets("Лист2").Cells(1, Columns.Count).End(xlToLeft).Column + 1 Sheets("Лист2").Cells(1, e) = d End If Sheets("Лист2").Cells(c, e) = Target.Value Target.FormulaR1C1 = "=SUMIF(Лист2!C[-1],Лист1!R1C2,Лист2!C)" End If Application.ScreenUpdating = False Application.EnableEvents = True End Sub
[/vba]
в модуль листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.EnableEvents = False Dim a As Double a = Range("b1").Value b = Cells(Rows.Count, "a").End(xlUp).Row c = Application.Match(a, Sheets("Лист2").Range("a:a"), 0) If Not Intersect(Target, Range("b3:b" & b)) Is Nothing Then d = Target.Offset(0, -1) e = Application.Match(d, Sheets("Лист2").Range("1:1"), 0) f = IsNumeric(c) If f = False Then c = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row + 1 Sheets("Лист2").Cells(c, 1) = a Sheets("Лист2").Cells(c, 1).NumberFormat = "m/d/yyyy" End If g = IsNumeric(e) If g = False Then e = Sheets("Лист2").Cells(1, Columns.Count).End(xlToLeft).Column + 1 Sheets("Лист2").Cells(1, e) = d End If Sheets("Лист2").Cells(c, e) = Target.Value Target.FormulaR1C1 = "=SUMIF(Лист2!C[-1],Лист1!R1C2,Лист2!C)" End If Application.ScreenUpdating = False Application.EnableEvents = True End Sub