Я искал всюду на google (и здесь) и пробовал различные комбинации кода из всех источников, включая этот сайт, Excelguru, excelexperts , ozgrid, dedicatedexcel, excelcampus, spreadsheetguru и т. д. ..... так далее и т. д. ...Excel VBA для фильтрации сводной таблицы и сводной диаграммы за предыдущий день - поле поворотного фильтра
Вот моя проблема, каждый бит кода, каждое изменение, каждый тип, не работает. Я использую Office 360 на своем рабочем сайте (в актуальном состоянии), поэтому это Excel 2016 и VBA 7.1.
Что я хочу сделать, это автоматизировать отчеты о завершении смены. Вот этот процесс:
Мы вводим данные в лист Excel (журнал) каждый час. В конце дня, в 5:00 утра, мы сохраняем и закрываем этот журнал, открываем еще один лист Excel, который ИМПОРТИРОВАН данные в силовую точку и отображает его на сводной таблице (форматирование для печати для наших боссов), и мы выбираем фильтр для предыдущей даты, используя фильтр, и распечатайте его. Мы делаем это с тремя (3) отчетами: 2 сводных таблицах и 1 PivotChart. Power Pivot импортирует ВСЕ данные из листа журнала, чтобы переформатировать его для печати.
Мне удалось получить и переписать код (начинающий на этом) для процесса автоматизации: автоматическое сохранение журнала, закрытие журнала, открытие рабочей книги отчета, обновление данных и печать данных, затем закрытие отчета. Единственная часть, отсутствующая сейчас, - это автоматическая фильтрация.
Код я попытался обширен, но вот пример того, что я пробовал в последнее время (я уже стерта и повторно копируются так много кодов ...)
Sub Filter_PivotField() 'Description: Filter a pivot table or slicer for a specific date or period 'Source: excelcampus.com/vba/filter-pivot-table-slicer-recent-date-period Dim sSheetName As String Dim sPivotName As String Dim sFieldName As String Dim sFilterCrit As String Dim pi As PivotFields 'Set the variables sSheetName = "EOS Report" sPivotName = "PivotTable1" sFieldName = "Date" sFilterCrit = "xlDateYesterday" 'sFilterCrit = ThisWorkbook.Worksheets("EOS Report").Range("O1").Value With ThisWorkbook.Worksheets(sSheetName).PivotTables(sPivotName).PivotFields(sFieldName) 'Clear all filter of the pivotfield .ClearAllFilters 'Loop through pivot items of the pivot field 'Hide or filter out items that do not match the criteria For Each pi In .PivotFields If pi.Name sFilterCrit Then pi.Visible = False End If Next pi End With End Sub
Чтобы не дало никаких результатов ....
когда я записать макрос делает ручной фильтр, я получаю это:
Sub manualfilter() ' ' manualfilter Macro ' ' ActiveSheet.PivotTables("PivotTable1").PivotFields(_ "[Bi-Hourly Report].[Date].[Date]").VisibleItemsList = Array(_ "[Bi-Hourly Report].[Date].&[2016-09-28T00:00:00]") End Sub
Но он терпит неудачу при попытке повторно запустить тот же макрос, который я только что записанный (после изменения параметров дата назад). Я включил и отключил несколько вариантов выбора и т. Д. Каждый совет, который я нашел ... nada ...
Не говоря уже о том, что попытка автофильтра диаграммы - это кошмар, потому что таблицы, да, есть тонны статей на нем, но графики? не очень много при исследовании ...
Вот изображения кнопки фильтра, потому что почти все, что я исследовал, это сортировать COLUMN таблицы, а не сам фильтр с сводной таблицей.
Любая помощь по этому вопросу было бы весьма признателен! Я не могу опубликовать фактические таблицы Excel, поскольку они являются собственностью компании, но я могу реплицировать формат с ложными данными, если это необходимо ... Я был в этом почти месяц ...
Спасибо, заранее!
Можете ли вы мне помочь? https: // stackoverflow.com/q/48442027/9267058 – MissTeppy