Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как настроить автовыбор максимальной даты в фильтре? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как настроить автовыбор максимальной даты в фильтре? (Сводные таблицы/Pivot Table)
Как настроить автовыбор максимальной даты в фильтре?
marusa122 Дата: Вторник, 28.02.2023, 16:48 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Здравствуйте!
На листе "Осн таблица" есть одна основная таблица и одна сводная таблица по ней. Сводная таблица показывает статистику при выборе в фильтре определенной даты. Сводная таблица автоматически обновляется каждую минуту.
Даты в таблице заполняются автоматически и соответствуют дате ввода информации в соседнюю ячейку "Номер заказа". Если в основной таблице появляется новая дата, после очередного ежеминутного обновления сводной таблицы она становится доступна в фильтре.
Вопрос: как настроить фильтр сводной таблицы так, чтобы новая (свежая) дата не только появлялась в списке доступных, но и автоматически выбиралась? И чтобы показывались уже соответствующие ей данные?
К сообщению приложен файл: 4130438.xlsm (177.4 Kb)


Сообщение отредактировал marusa122 - Вторник, 28.02.2023, 16:50
 
Ответить
СообщениеЗдравствуйте!
На листе "Осн таблица" есть одна основная таблица и одна сводная таблица по ней. Сводная таблица показывает статистику при выборе в фильтре определенной даты. Сводная таблица автоматически обновляется каждую минуту.
Даты в таблице заполняются автоматически и соответствуют дате ввода информации в соседнюю ячейку "Номер заказа". Если в основной таблице появляется новая дата, после очередного ежеминутного обновления сводной таблицы она становится доступна в фильтре.
Вопрос: как настроить фильтр сводной таблицы так, чтобы новая (свежая) дата не только появлялась в списке доступных, но и автоматически выбиралась? И чтобы показывались уже соответствующие ей данные?

Автор - marusa122
Дата добавления - 28.02.2023 в 16:48
Pelena Дата: Вторник, 28.02.2023, 22:32 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Посмотрите такой вариант
К сообщению приложен файл: 4130438_1.xlsm (180.6 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Посмотрите такой вариант

Автор - Pelena
Дата добавления - 28.02.2023 в 22:32
marusa122 Дата: Вторник, 28.02.2023, 22:51 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Pelena, Неплохой вариант, но тот код, который был на этом листе и который вы удалили, мне тоже нужен - он автоматически вносил во второй столбец дату заполнения третьего столбца. Можно ли ваш код как-то добавить к тому, что был в исходном файле?
 
Ответить
СообщениеPelena, Неплохой вариант, но тот код, который был на этом листе и который вы удалили, мне тоже нужен - он автоматически вносил во второй столбец дату заполнения третьего столбца. Можно ли ваш код как-то добавить к тому, что был в исходном файле?

Автор - marusa122
Дата добавления - 28.02.2023 в 22:51
Pelena Дата: Вторник, 28.02.2023, 23:06 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Добавьте. Это же разные события, поэтому не должны мешать друг другу


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеДобавьте. Это же разные события, поэтому не должны мешать друг другу

Автор - Pelena
Дата добавления - 28.02.2023 в 23:06
marusa122 Дата: Вторник, 28.02.2023, 23:22 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Pelena, поняла, большое спасибо!
 
Ответить
СообщениеPelena, поняла, большое спасибо!

Автор - marusa122
Дата добавления - 28.02.2023 в 23:22
marusa122 Дата: Среда, 01.03.2023, 00:02 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Pelena, еще вопрос. При попытке вставить код на лист с другой таблицей (структура аналогичная, сводная таблица такая же) выбивает ошибку "Run-time error 1004: Не удается найти элемент в кубе OLAP". При нажатии "Debug" в редакторе выделяется желтым цветом тот фрагмент, который я здесь выделила подчеркиваниями
[vba]
Код
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Dim oTbl As ListObject, maxdate As Date
    Set oTbl = ActiveSheet.ListObjects("Таблица1")
    maxdate = Application.Max(oTbl.ListColumns("Дата").Range)
    Application.EnableEvents = False
    Target.PivotFields("[Таблица1].[Дата].[Дата]").ClearAllFilters
    ______Target.PivotFields("[Таблица1].[Дата].[Дата]").CurrentPageName = "[Таблица1].[Дата].&[" & Format(maxdate, "YYYY-MM-DD") & "T00:00:00]"_____
    Application.EnableEvents = True
End Sub
[/vba]
Что с ним не так?
Если просто закрыть редактор, код перестает работать
Пробовала убрать T00:00:00 (насколько я поняла - это время, которое в ячейках не указывается, там только дата) - тогда эта строка выделяется красным шрифтом и код все равно не работает


Сообщение отредактировал marusa122 - Среда, 01.03.2023, 00:07
 
Ответить
СообщениеPelena, еще вопрос. При попытке вставить код на лист с другой таблицей (структура аналогичная, сводная таблица такая же) выбивает ошибку "Run-time error 1004: Не удается найти элемент в кубе OLAP". При нажатии "Debug" в редакторе выделяется желтым цветом тот фрагмент, который я здесь выделила подчеркиваниями
[vba]
Код
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Dim oTbl As ListObject, maxdate As Date
    Set oTbl = ActiveSheet.ListObjects("Таблица1")
    maxdate = Application.Max(oTbl.ListColumns("Дата").Range)
    Application.EnableEvents = False
    Target.PivotFields("[Таблица1].[Дата].[Дата]").ClearAllFilters
    ______Target.PivotFields("[Таблица1].[Дата].[Дата]").CurrentPageName = "[Таблица1].[Дата].&[" & Format(maxdate, "YYYY-MM-DD") & "T00:00:00]"_____
    Application.EnableEvents = True
End Sub
[/vba]
Что с ним не так?
Если просто закрыть редактор, код перестает работать
Пробовала убрать T00:00:00 (насколько я поняла - это время, которое в ячейках не указывается, там только дата) - тогда эта строка выделяется красным шрифтом и код все равно не работает

Автор - marusa122
Дата добавления - 01.03.2023 в 00:02
marusa122 Дата: Среда, 01.03.2023, 00:31 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Все, вопрос снят
1. Удалила все коды из файла Экселя, сохранила и закрыла программу
2. Скопировала все коды поочередно в Блокнот
3. Открыла Эксель и вставила коды из Блокнота по новой
После этого начало работать без сюрпризов
 
Ответить
СообщениеВсе, вопрос снят
1. Удалила все коды из файла Экселя, сохранила и закрыла программу
2. Скопировала все коды поочередно в Блокнот
3. Открыла Эксель и вставила коды из Блокнота по новой
После этого начало работать без сюрпризов

Автор - marusa122
Дата добавления - 01.03.2023 в 00:31
marusa122 Дата: Среда, 01.03.2023, 10:16 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Pelena, нет, все-таки есть вопрос. Не работают эти макросы вместе. Пробовала вставить каждый отдельно - по отдельности работают. А вместе работать не хотят. Теперь Эксель даже никаких ошибок не выдает - они просто перестают выполнять свои задачи
[vba]
Код
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Dim oTbl As ListObject, maxdate As Date
    Set oTbl = ActiveSheet.ListObjects("Таблица1")
    maxdate = Application.Max(oTbl.ListColumns("Дата").Range)
    Application.EnableEvents = False
    Target.PivotFields("[Таблица1].[Дата].[Дата]").ClearAllFilters
    Target.PivotFields("[Таблица1].[Дата].[Дата]").CurrentPageName = "[Таблица1].[Дата].&[" & Format(maxdate, "YYYY-MM-DD") & "T00:00:00]"
    Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
Worksheets("Осн. таблица").Activate
Set WorkRng = Intersect(Application.ActiveSheet.Range("C:C"), Target)
xOffsetColumn = -1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = VBA.Date
            Rng.Offset(0, xOffsetColumn).NumberFormat = "DD.MM.YYYY"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub
[/vba]

Что с кодом не так? Ведь действительно разные процессы...
К сообщению приложен файл: 4130438_1_2.xlsm (178.8 Kb)


Сообщение отредактировал marusa122 - Среда, 01.03.2023, 10:19
 
Ответить
СообщениеPelena, нет, все-таки есть вопрос. Не работают эти макросы вместе. Пробовала вставить каждый отдельно - по отдельности работают. А вместе работать не хотят. Теперь Эксель даже никаких ошибок не выдает - они просто перестают выполнять свои задачи
[vba]
Код
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Dim oTbl As ListObject, maxdate As Date
    Set oTbl = ActiveSheet.ListObjects("Таблица1")
    maxdate = Application.Max(oTbl.ListColumns("Дата").Range)
    Application.EnableEvents = False
    Target.PivotFields("[Таблица1].[Дата].[Дата]").ClearAllFilters
    Target.PivotFields("[Таблица1].[Дата].[Дата]").CurrentPageName = "[Таблица1].[Дата].&[" & Format(maxdate, "YYYY-MM-DD") & "T00:00:00]"
    Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
Worksheets("Осн. таблица").Activate
Set WorkRng = Intersect(Application.ActiveSheet.Range("C:C"), Target)
xOffsetColumn = -1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = VBA.Date
            Rng.Offset(0, xOffsetColumn).NumberFormat = "DD.MM.YYYY"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub
[/vba]

Что с кодом не так? Ведь действительно разные процессы...

Автор - marusa122
Дата добавления - 01.03.2023 в 10:16
Pelena Дата: Среда, 01.03.2023, 10:43 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Вы отключаете события и не включаете обратно. В коде закомментировала лишнюю строчку
К сообщению приложен файл: 1834910.xlsm (181.4 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВы отключаете события и не включаете обратно. В коде закомментировала лишнюю строчку

Автор - Pelena
Дата добавления - 01.03.2023 в 10:43
marusa122 Дата: Среда, 01.03.2023, 12:03 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Pelena, спасибо большое))
А что там надо изменить, чтобы все операции на этом листе делались в фоновом режиме? При очередном автоматическом обновлении сводной таблицы меня перебрасывает обратно на лист "Осн. таблица" (где она находится), хотя я этот момент могу работать на другом листе (на "Статистике", например). Из-за этого в коде и появились лишние строки - я пыталась сделать так, чтобы меня не переносило обратно на "Осн. таблицу". По ходу, не получилось, еще и код с новыми строками работать перестал


Сообщение отредактировал marusa122 - Среда, 01.03.2023, 12:03
 
Ответить
СообщениеPelena, спасибо большое))
А что там надо изменить, чтобы все операции на этом листе делались в фоновом режиме? При очередном автоматическом обновлении сводной таблицы меня перебрасывает обратно на лист "Осн. таблица" (где она находится), хотя я этот момент могу работать на другом листе (на "Статистике", например). Из-за этого в коде и появились лишние строки - я пыталась сделать так, чтобы меня не переносило обратно на "Осн. таблицу". По ходу, не получилось, еще и код с новыми строками работать перестал

Автор - marusa122
Дата добавления - 01.03.2023 в 12:03
Pelena Дата: Среда, 01.03.2023, 14:20 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Вот эта строчка [vba]
Код
Worksheets("Осн. таблица").Activate
[/vba] активирует лист Осн. таблица
Надо отказаться от обращения Activesheet
В файле написала комментарии, где внесла изменения в обоих макросах
К сообщению приложен файл: 5045644.xlsm (182.0 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВот эта строчка [vba]
Код
Worksheets("Осн. таблица").Activate
[/vba] активирует лист Осн. таблица
Надо отказаться от обращения Activesheet
В файле написала комментарии, где внесла изменения в обоих макросах

Автор - Pelena
Дата добавления - 01.03.2023 в 14:20
marusa122 Дата: Среда, 01.03.2023, 16:19 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Pelena, спасибо большое :*
Вроде все работает, больше вопросов по этим макросам не имею))
 
Ответить
СообщениеPelena, спасибо большое :*
Вроде все работает, больше вопросов по этим макросам не имею))

Автор - marusa122
Дата добавления - 01.03.2023 в 16:19
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как настроить автовыбор максимальной даты в фильтре? (Сводные таблицы/Pivot Table)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!