Здравствуйте! На листе "Осн таблица" есть одна основная таблица и одна сводная таблица по ней. Сводная таблица показывает статистику при выборе в фильтре определенной даты. Сводная таблица автоматически обновляется каждую минуту. Даты в таблице заполняются автоматически и соответствуют дате ввода информации в соседнюю ячейку "Номер заказа". Если в основной таблице появляется новая дата, после очередного ежеминутного обновления сводной таблицы она становится доступна в фильтре. Вопрос: как настроить фильтр сводной таблицы так, чтобы новая (свежая) дата не только появлялась в списке доступных, но и автоматически выбиралась? И чтобы показывались уже соответствующие ей данные?
Здравствуйте! На листе "Осн таблица" есть одна основная таблица и одна сводная таблица по ней. Сводная таблица показывает статистику при выборе в фильтре определенной даты. Сводная таблица автоматически обновляется каждую минуту. Даты в таблице заполняются автоматически и соответствуют дате ввода информации в соседнюю ячейку "Номер заказа". Если в основной таблице появляется новая дата, после очередного ежеминутного обновления сводной таблицы она становится доступна в фильтре. Вопрос: как настроить фильтр сводной таблицы так, чтобы новая (свежая) дата не только появлялась в списке доступных, но и автоматически выбиралась? И чтобы показывались уже соответствующие ей данные?marusa122
Pelena, Неплохой вариант, но тот код, который был на этом листе и который вы удалили, мне тоже нужен - он автоматически вносил во второй столбец дату заполнения третьего столбца. Можно ли ваш код как-то добавить к тому, что был в исходном файле?
Pelena, Неплохой вариант, но тот код, который был на этом листе и который вы удалили, мне тоже нужен - он автоматически вносил во второй столбец дату заполнения третьего столбца. Можно ли ваш код как-то добавить к тому, что был в исходном файле?marusa122
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 (насколько я поняла - это время, которое в ячейках не указывается, там только дата) - тогда эта строка выделяется красным шрифтом и код все равно не работает
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
Сообщение отредактировал marusa122 - Среда, 01.03.2023, 00:07
Все, вопрос снят 1. Удалила все коды из файла Экселя, сохранила и закрыла программу 2. Скопировала все коды поочередно в Блокнот 3. Открыла Эксель и вставила коды из Блокнота по новой После этого начало работать без сюрпризов
Все, вопрос снят 1. Удалила все коды из файла Экселя, сохранила и закрыла программу 2. Скопировала все коды поочередно в Блокнот 3. Открыла Эксель и вставила коды из Блокнота по новой После этого начало работать без сюрпризовmarusa122
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]
Что с кодом не так? Ведь действительно разные процессы...
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
Pelena, спасибо большое)) А что там надо изменить, чтобы все операции на этом листе делались в фоновом режиме? При очередном автоматическом обновлении сводной таблицы меня перебрасывает обратно на лист "Осн. таблица" (где она находится), хотя я этот момент могу работать на другом листе (на "Статистике", например). Из-за этого в коде и появились лишние строки - я пыталась сделать так, чтобы меня не переносило обратно на "Осн. таблицу". По ходу, не получилось, еще и код с новыми строками работать перестал
Pelena, спасибо большое)) А что там надо изменить, чтобы все операции на этом листе делались в фоновом режиме? При очередном автоматическом обновлении сводной таблицы меня перебрасывает обратно на лист "Осн. таблица" (где она находится), хотя я этот момент могу работать на другом листе (на "Статистике", например). Из-за этого в коде и появились лишние строки - я пыталась сделать так, чтобы меня не переносило обратно на "Осн. таблицу". По ходу, не получилось, еще и код с новыми строками работать пересталmarusa122
Сообщение отредактировал marusa122 - Среда, 01.03.2023, 12:03