Добрый вечер, уважаемые форумчане! Битый час сижу над файлом. Реализовать формулой могу, но боюсь, что в связи с увеличением массива это утяжелит работу файла. Потому прошу поспособствовать в написании макроса, поскольку это дается мне очень тяжело.
Суть задачи: есть массив данных ключевой информацией в котором являются даты. Мне необходимо макросом перенести все данные таблицы на пустой лист по условию. Условие - вытащить все строки по которым дата равна до +30 дней от текущей включительно. То есть к примеру если сегодня 07.02.2017, мне необходима информация за месяц вперед.
Файл прилагаю, заранее благодарна!!!
Добрый вечер, уважаемые форумчане! Битый час сижу над файлом. Реализовать формулой могу, но боюсь, что в связи с увеличением массива это утяжелит работу файла. Потому прошу поспособствовать в написании макроса, поскольку это дается мне очень тяжело.
Суть задачи: есть массив данных ключевой информацией в котором являются даты. Мне необходимо макросом перенести все данные таблицы на пустой лист по условию. Условие - вытащить все строки по которым дата равна до +30 дней от текущей включительно. То есть к примеру если сегодня 07.02.2017, мне необходима информация за месяц вперед.
Public Sub www() Dim a, i&, j&, n& a = [a3].CurrentRegion.Value: n = 1 For i = 2 To UBound(a) If a(i, 3) >= [C1] And a(i, 3) <= ([C1] + 30) Then n = n + 1 For j = 1 To UBound(a, 2) a(n, j) = a(i, j) Next End If Next [j1].Resize(n, UBound(a, 2)) = a End Sub
[/vba]
Нет. Попробуйте, в модуль листа: [vba]
Код
Public Sub www() Dim a, i&, j&, n& a = [a3].CurrentRegion.Value: n = 1 For i = 2 To UBound(a) If a(i, 3) >= [C1] And a(i, 3) <= ([C1] + 30) Then n = n + 1 For j = 1 To UBound(a, 2) a(n, j) = a(i, j) Next End If Next [j1].Resize(n, UBound(a, 2)) = a End Sub