Этот сводной таблицы создан в более новой версии excel и не может быть обновлен
Мой макрос должен создать сводную таблицу и добавить определенные фильтры. Я использовал для этого средство записи макросов, оно работает на моем компьютере, но не в более новых версиях Excel. Вот мой код:
Я пытался изменить Version:=xlPivotTableVersion14 на Version:=xlPivotTableVersion15 и другие числа, которые предназначены для других версий Excel, но, похоже, ни один из них не работает.
Я использую Excel 2010, мои коллеги используют Excel 2013. Функция отладки выделяет:
@Рори. Неверная процедура
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 1
Во-первых, вам действительно не следует использовать целые столбцы для исходных данных для сводной таблицы. Во-вторых, разбивая код на отдельные разделы, вы сможете определить, связана ли ошибка с созданием сводного кэша или самой сводной таблицы. Я бы предложил использовать:
ошибка времени выполнения vba 5 недопустимый вызов процедуры или аргумент, это точная ошибка, которую я получаю. Отлаженный отмеченный код: Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _ SourceData:="'" & .Name & "'!" & .Range("A1").CurrentRegion.Address(ReferenceStyle:= xlR1C1), _ Версия:=xlPivotTableVersion15) Конец с
В какой версии? Это будет работать только в 2013 году или позже.
Я использую 2010, он работает для меня, мой коллега использует 2013, он должен работать на 2013.
Вы не можете использовать xlPivotTableVersion15 в 2010 году, но он будет работать в 2013 году. Я бы посоветовал вам придерживаться xlPivotTableVersion14 , который будет работать в любом случае.
Я преобразовал макрос в надстройку и установил его на свой компьютер и компьютер коллег, которые затем использовали его в автоматически сгенерированных таблицах данных, и он работает для меня как надстройка.
В каком формате они используют рабочие книги, и вы уверены, что в каждой рабочей книге всегда есть рабочий лист с именем «1»?
Вы можете в любой момент нажать кнопку Обновить, чтобы обновить данные в сводных таблицах в книге. Можно обновлять значения в сводных таблицах, подключенных к внешним данным, таким как базы данных (SQL Server, Oracle, Access и другие), куб служб Analysis Services, веб-каналы данных и многие другие источники. Вы также можете обновлять данные из исходной таблицы в той же или другой книге. Кроме того, можно настроить автоматическое обновление данных сводной таблицы при открытии книги.
По умолчанию с помощью этой ссылки вы можете указать, что при ее автоматическом обновлении в книге, которая содержит ее, с помощью стеблицы.
Обновление вручную
Щелкните любое место сводной таблицы. На ленте появится вкладка Работа со сводными таблицами.
На вкладке Анализ выберите команду Обновить или нажмите ALT+F5.
Совет: Чтобы одновременно обновить все стебли в книге, нажмите кнопку Анализ > Обновить все.
Если таблица обновляется слишком долго, на вкладке Анализ нажмите стрелку рядом с кнопкой Обновить и выберите пункт Состояние обновления. Так вы сможете проверить состояние обновления.
Чтобы отменить обновление, нажмите Отменить обновление.
Блокировка изменения ширины столбцов и форматирования ячеек
Если при обновлении сводной таблицы изменяется ширина столбцов и форматирование данных, но вы не хотите, чтобы это происходило, установите вот эти флажки.
На вкладке Анализ нажмите кнопку Параметры.
На вкладке Макет и формат установите флажки Автоматически изменять ширину столбцов при обновлении и Сохранять форматирование ячеек при обновлении.
Автоматическое обновление данных при открытии книги
Щелкните любое место сводной таблицы. На ленте появится вкладка Работа со сводными таблицами.
На вкладке Анализ нажмите кнопку Параметры.
На вкладке Данные проверьте поле Обновлять данные при открытии файла.
Обновление вручную
Щелкните в любом месте сводной таблицы.
Отобразит вкладку "Параметры" и "Конструктор" в области "Инструменты для работы со таблицами".
На вкладке Параметры в группе Данные сделайте следующее:
Чтобы обновить данные в соответствие с источником данных, нажмите кнопку Обновить или нажмите клавиши ALT+F5.
Вы также можете щелкнуть правой кнопкой мыши и нажать кнопку Обновить.
Чтобы обновить все стебли в книге, нажмите кнопку Обновить и выберите обновить все.
Если обновление занимает больше времени, чем вы ожидаете, щелкните Параметры > обновить > Состояние обновления, чтобы проверить состояние обновления.
Чтобы отменить обновление, нажмите Отменить обновление.
Блокировка изменения ширины столбцов и форматирования ячеек
Если при обновлении сводной таблицы изменяется ширина столбцов и форматирование данных, но вы не хотите, чтобы это происходило, установите вот эти флажки.
Щелкните Параметры > параметры.
На вкладке Макет и формат установите флажки Автоматически изменять ширину столбцов при обновлении и Сохранять форматирование ячеек при обновлении.
Автоматическое обновление данных в pivottable при открытии книги
Щелкните в любом месте сводной таблицы.
На вкладке Параметры в группе Сводная таблица нажмите кнопку Параметры.
В диалоговом окне Параметры таблицы на вкладке Данные выберите параметр Обновлять данные при открытии файла.
При добавлении новых данных в источник необходимо обновить все основанные на нем сводные таблицы. Чтобы обновить сводную таблицу, можно щелкнуть правой кнопкой мыши в любом месте ее диапазона и выбрать команду Обновить
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
При проверке совместимости обнаружена одна или несколько проблем совместимости, связанных со сносями.
Важно: Прежде чем продолжить сохранение книги в формате файла более ранней версии, необходимо устранить проблемы, которые приводят к существенной потере функциональности, чтобы предотвратить безвозвратную потерю данных или неправильную работу функций.
Проблемы, которые приводят к небольшой потере точности, не всегда обязательно устранять перед сохранением: данные и функциональность не теряются, но книга при ее открытии в более ранней версии Microsoft Excel может выглядеть или работать несколько иначе.
В этой статье
Проблемы, которые приводят к существенной потере функциональности
В этой книге книга имеет более ранние пределы и будет потеряна, если сохранить ее в более ранних форматах файлов. В более ранних версиях Excel будут работать только сводные таблицы, созданные в режиме совместимости.
Что это означает. В Excel 2007 г. и более поздних для каждого поля поддерживается 1 048 576 уникальных элементов, а в Excel 97–2003 — всего 32 500.
Действия В оке проверки совместимости нажмите кнопку Найти, чтобы найти совместимую с ней с превышением прежних ограничений. Сохраните книгу в формате Excel 97–2003, а затем создайте ее повторно в режиме совместимости.
Сводная таблица в этой книге содержит правила условного форматирования, которые применены к ячейкам в свернутых строках или столбцах. Чтобы эти правила не были потеряны в более ранних версиях Excel, разверните эти строки или столбцы.
Что это означает. Правила условного форматирования, примененные к ячейкам в свернутых строках и столбцах, будут потеряны в Excel 97–2003.
Что необходимо сделать. В средстве проверки совместимости щелкните ссылку Найти, чтобы обнаружить свернутые строки или столбцы, содержащие правила условного форматирования, а затем разверните их, прежде чем сохранять книгу в формате файлов более ранней версии Excel.
Эта книга содержит именованные наборы, не связанные со сводной таблицей. Эти именованные наборы не будут сохранены.
Что это означает. Именные наборы, не связанные со сносями, будут удалены в Excel 97–2007.
Что необходимо сделать. Чтобы избежать возникновения этой проблемы, убедитесь в том, что сводная таблица создается с использованием подключения.
Книга содержит сводную таблицу с включенным анализом "что если". Неопубликованные изменения "что если" будут потеряны в предыдущих версиях Excel.
Что это означает. Изменения анализа "что если", не опубликованные на сервере, не отображаются в более ранних версиях Excel.
Что необходимо сделать. Прежде чем открывать книгу в более ранней версии Excel(Работа со таблицами, вкладка Анализ, группа Вычисления, кнопка Средства OLAP, анализ "что если"), опубликуем изменения анализа "что если".
Сводная таблица в этой книге содержит ось данных, на которой один и тот же показатель отображается несколько раз. Эта сводная таблица не будет сохранена.
Что это означает. В Excel 2010 г. и более поздних к источнику данных OLAP можно дублировать показатели в виде связанной с ее данными. В 97–2007 г. в Excel не отображается Excel.
Действия В окте проверки совместимости нажмите кнопку Найти, чтобы найти совместимую ось данных с осью данных, на которой отображается несколько одинаковых мер, а затем удалите все повторяющиеся меры, чтобы остались только один показатель.
Сводная таблица или подключение к данным в этой книге содержат параметры сервера, не существующие в более ранних версиях Excel. Некоторые параметры сервера для сводной таблицы или подключения к данным не будут сохранены.
Что это означает. Некоторые параметры сервера для подключения к данным и Excel 97–2007 будут потеряны.
Действия Убедитесь, что параметры сервера совместимы с более ранними версиями Excel и внести необходимые изменения(Средстваработы со таблицами, вкладка Анализ, группа Данные, кнопка Изменить источник данных, команда Свойства подключения).
Сводная таблица в данной книге содержит данные, представленные с помощью функции "Дополнительные вычисления". Эти настраиваемые выходные данные не будут сохранены и будут заменены исходными значениями из источника данных.
Что это означает. Функция "Показать как" не поддерживается в Excel 97–2007 г., и вы ввели пользовательские значения (например, %от суммы по родительской строке, %от суммы по родительскому столбцу или %с набегаемой суммы в) не отображаются.
Действия В окте проверки совместимости нажмите кнопку Найти, чтобы найти стеблицы, содержащие выходные данные с настраиваемыми значениями, и удалите эти выходные данные (щелкните поле правой кнопкой мыши и выберите показать значения как ,без вычислений).
Книга содержит настраиваемые внедренные данные. Эти данные не будут сохранены.
Что это означает. Внедренные настраиваемые данные, Power Pivot данные, не поддерживаются в Excel 97–2007. Данные будут потеряны.
Действия Удалите Power Pivot из книги, над которую планируется работать в более ранней версии Excel.
Книга содержит срезы, которые можно использовать для фильтрации срезов и функций кубов в книге. Срезы не будут работать в более ранних версиях Excel.
Что это означает. Срезы будут недоступны в Excel 97–2007, но останутся доступны для использования в Excel 2010 или более поздней.
Что необходимо сделать. В более ранних версиях Excel для фильтрации данных можно использовать фильтры сводных таблиц.
Что это означает. Срезы не поддерживаются в более ранних версиях Excel. Они не могут быть показаны и будут потеряны.
Что необходимо сделать. Вместо срезов используйте для фильтрации данных фильтры сводных таблиц.
Проблемы, которые приводят к небольшой потере точности
Книга содержит сводную таблицу, к которой применен стиль сводной таблицы. В более ранних версиях Excel стили сводных таблиц не поддерживаются.
Что это означает. Стили сводных таблиц, основанные на темах, не доступны и не отображаются в Excel 97–2003.
Что необходимо сделать. В окте проверки совместимости нажмите кнопку Найти, чтобы найти совместимую с примененным стилем, удалите этот стиль, а затем вручную примените форматирование, которое поддерживается в более ранних версиях Excel.
Сводная таблица в этой книге не будет работать в версиях, предшествующих Excel 2007. В более ранних версиях Excel будут работать только сводные таблицы, созданные в режиме совместимости.
Что это означает. В Excel 97–2003 нельзя обновить Excel 2007 или более поздней.
Действия В окте проверки совместимости нажмите кнопку Найти, чтобы найти совместимую с данными совместимую с текущим форматом файла. Сохраните книгу в формате Excel 97–2003, а затем создайте ее снова в режиме совместимости, чтобы открыть ее в Excel 97–2003 без потери функциональности.
Книга содержит сводную таблицу с полями в сжатой форме. В более ранних версиях Excel этот макет изменится на табличную форму.
Что это означает. Сжатая форма (отдельно или в сочетании с табличной и структурной формами), которая препятствует распространению связанных данных по горизонтали за пределы экрана и позволяет до минимума сократить прокрутку, недоступна в Excel 97–2003, и поля отображаются в табличной форме.
Что необходимо сделать. В средстве проверки совместимости нажмите кнопку Найти, чтобы найти таблицу с полями в сжатой форме, а затем измените формат на структурную или таблильную форму, сняв при необходимости параметр Объединить и выровняйте ячейки по центру с подписями(Инструментыдля работы со таблицами , вкладка Анализ, группа Таблица, команда Параметры, вкладка Макет & Формат).
Эта книга содержит параметры, которых не существует в более ранних версиях Excel. Некоторые параметры pivotTable не будут сохранены.
Что это означает. Некоторые параметры pivotTable не поддерживаются в Excel 97–2007. Эти параметры будут потеряны.
Действия В оке средства проверки совместимости нажмите кнопку Найти, чтобы найти совместимую с ней информацию о не поддерживаемых параметрах, и внести необходимые изменения.
Определенные кнопки полей сводной диаграммы в этой книге включены или отключены. Все кнопки полей будут сохранены как включенные.
Что это означает. Кнопки полей, не отображаемые на сводной диаграмме, будут сохранены как включенные при открытии и сохранении книги в более ранней версии Excel.
Что необходимо сделать. При повторном открытии книги после сохранения ее в формате более ранней версии Excel может потребоваться включить и отключить кнопки полей, чтобы настроить отображение нужных кнопок (Работа со сводными таблицами, вкладка Анализ, группа Показать или скрыть, кнопка Кнопки полей).
Эта книга содержит один или несколько именоваемых наборов. Некоторые свойства именуемого набора могут не сохраниться.
Что это означает. У одного или более именоваемого набора есть параметры свойств, которые не являются стандартными, которые могут не сохраняться при ее Excel формате файла Excel 97–2003.
Действия В окне проверки совместимости нажмите кнопку Найти, чтобы найти совместимую с измененными свойствами именоваемых наборов, и в диалоговом окне Параметры полей внести необходимые изменения. Щелкните правой кнопкой мыши любой участник именоваемого набора и выберите поле Параметры. Убедитесь, что на вкладке Макет & Печать не установлен параметр Отображать элементы разных уровней в отдельных полях (значение по умолчанию) и установлен ли автоматический порядок и удаление дубликатов из набора (значение по умолчанию).
Подключение в этой книге содержит один или несколько именованых наборов или вычисляемой группы. Некоторые свойства именуемого набора или вычисляемого набора могут не сохраниться.
Что это означает. У именуемого набора или вычисляемого набора есть свойства, которые не поддерживаются в Excel 2007 и Excel 97–2003. Эти свойства могут не быть сохранены.
Что необходимо сделать Щелкните правой кнопкой мыши любой член именоваемого набора и выберите поле Параметры илиполе значения Параметры ивнести необходимые изменения.
В этой книге существует стиль среза, не поддерживаемый в более ранних версиях Excel. Этот стиль среза не будет сохранен.
Что это означает. Настраиваемый стиль среза будет потерян при сохранении книги в формате файла более ранней версии Excel.
Что необходимо сделать Так как в более ранних версиях Excel срезы не поддерживаются, вы не сможете сохранить пользовательский стиль среза. В более ранней версии Excel можно использовать фильтры для фильтрации данных.
Сводная таблица в этой книге содержит одно или несколько полей с повторяющимися подписями. При обновлении сводной таблицы эти подписи будут потеряны.
Что это означает. Повторяемые метки не поддерживаются в Excel 97–2007, и они будут потеряны при обновлении в более ранней версии Excel.
Что необходимо сделать. В средстве проверки совместимости щелкните ссылку Найти, чтобы найти сводную таблицу, содержащую повторяющиеся подписи, и отключите их повторение (Работа со сводными таблицами, вкладка Конструктор, группа Макет, кнопка Макет отчета, команда Не повторять подписи элементов).
Книга содержит сводную таблицу, к которой применен замещающий текст. Замещающий текст для сводных таблиц будет удален в версиях, предшествующих Excel 2007.
Что это означает. Заметивный текст не доступен в Excel 97–2007 и не отображается в этих более ранних версиях Excel.
Что необходимо сделать. В окне средства проверки совместимости щелкните ссылку Найти, чтобы обнаружить сводную таблицу, содержащую замещающий текст. Чтобы вывести замещающий текст в более ранней версии Excel, можно скопировать его в пустую ячейку на листе или добавить его в примечание.
Щелкните правой кнопкой мыши в любом месте сводной таблицы и выберите Параметры сводной таблицы. На вкладке Заметивный текст в поле Описание выберите заметивный текст и нажмите CTRL+C, чтобы скопировать его.
Книга содержит сводную таблицу, к которой применен замещающий текст. Такой текст не отображается в Excel 2007.
Что это означает. Заметивный текст не доступен в Excel 97–2007 и не отображается.
Что необходимо сделать. В окне средства проверки совместимости щелкните ссылку Найти, чтобы обнаружить сводную таблицу, содержащую замещающий текст. Чтобы вывести замещающий текст в более ранней версии Excel, можно скопировать его в пустую ячейку на листе или добавить его в примечание.
Щелкните правой кнопкой мыши в любом месте сводной таблицы и выберите Параметры сводной таблицы. На вкладке Заметивный текст в поле Описание выберите заметивный текст и нажмите CTRL+C, чтобы скопировать его.
Приятная новость заключается в том, что компания Microsoft продолжает вкладывать значительные средства в дальнейшее развитие сводных таблиц. С одной стороны, это хорошо, а с другой — порождает проблемы несовместимости с предыдущей версией Excel 2007. Некоторые из этих проблем рассматриваются в этой публикации.
Исчезновение срезов в Excel 2007
Срезы появились в версии Excel 2010, и пользователи Excel 2007 не имели доступа к этой чудесной возможности. В результате при открытии рабочей книги Excel 2010, содержащей срез, в версии Excel 2007 на месте слайда отобразится окно, в котором пользователю любезно сообщается о том, что срез был создан в более новой версии Excel и не может быть отображен в текущей версии.
И самая большая проблема заключается не в том, что в Excel 2007 не могут отображаться срезы, а в том, что, несмотря на то что в сводной таблице, которая была создана в Excel 2010 и открыта в Excel 2007, отображаются сведения о всех регионах, обший итог представляет собой сумму продаж по региону Восток, которая составляет 2,4 млн долл.
Рис. 8.1. С помощью среза в сводной таблице, созданной в Excel 2010, отображаются сведения только о регионе Восток
Если сводную таблицу, созданную в Excel 2010, открыть в окне Excel 2007, вместо среза отобразится объект Excel Shape (фигура). Этот объект включает текст, предупреждающий о том, что в текущей версии Excel срезы использоваться не могут. Но поскольку вместо фильтра отчета используется срез, который невидим, пользователям непонятно, почему объем продаж составляет лишь 2,4 млн долл. (рис. 8.2).
Рис. 8.2. При открытии книги в Excel 2007 срез исчезает. В результате можно ошибочно предположить, что сумма дохода по всем регионам составляет всего лишь 2,4 млн долл.
Если в Excel 2007 обновить сводную таблицу, созданную в Excel 2010, общий итог беспричинно изменится (рис. 8.3). На самом деле причина подобного изменения есть, и она заключается в том, что фильтр, реализованный в форме среза, больше не хранится в сводной таблице.
Рис 8.3. После обновления сумма по полю Доход изменилась без видимых причин
Рассмотрим пример создания сводной таблицы в Excel 2010. Добавьте в эту таблицу срез по полю Регион, а затем поле Регион переместите в область фильтра отчета. В этой области установите фильтр по региону Запад. Сохраните файл сводной таблицы в Excel 2010. Откройте его в Excel 2007. Выберите с помощью фильтра отчета вместо региона Запад регион Центр. Если на этом этапе файл со сводной таблицей сохранить в Excel 2007, а затем открыть в Excel 2010, срез снова появится в таблице, но отображенные в ней данные будут весьма далеки от истины. Несмотря на то что создан срез по региону Запад, фильтр отчета настроен на регион Центр, а показатели в таблице соответствуют всем регионам (рис. 8.4).
Рис. 8.4. В результате сохранения сводной таблицы в Excel 2010, пересохранения Excel 2007 и возврата к Excel 2010 срез остается, хотя отображенные в сводной таблице значения не будут соответствовать действительности
Результат вычисления процента от родительского элемента в Excel 2007 не обновляется
Некоторые виды вычислений, доступ к которым открывается в раскрывающемся меню кнопки Дополнительные вычисления (Show Values As), отсутствуют в предыдуших версиях Excel. Например, в случае выбора вычислений % от родительской суммы (% of Parent Item) либо % от суммы с нарастающим итогом в поле (% Running Total) сводная таблица откроется в Excel 2007 и даже отобразит какие-то результаты. Но вместо дополнительных вычислений в настройках поля Excel 2007 отображается Без вычислений (Normal). Это означает, что при обновлении в Excel 2007 поля сводной таблицы, содержащего функцию % от родительской суммы либо % от суммы с нарастающим итогом в поле, ничего не произойдет.
В Excel 2007 отсутствует возможность повторения всех подписей элементов
Настройка макета отчета «Повторять все подписи элементов» (Repeat All Item Labels) отсутствует в Excel 2007. Если созданную в Excel 2010 сводную таблицу, для которой выбрана эта настройка, открыть в Excel 2007, то подписи всех элементов сначала будут повторяться. Но после внесения изменений в сводную таблицу повторяющиеся подписи исчезнут, и после открытия этой таблицы в Excel 2010 не появятся.
Созданные в Excel 2007 сводные таблицы полностью совместимы с Excel 2010
Если создать сводную таблицу в Excel 2007 и открыть ее в Excel 2010, все ее функции сохранятся. Также в эту таблицу можно дополнительно включить функции Excel 2010 в целях расширения ее возможностей.
Сводные таблицы - один из самых замечательных инструментов в Excel. Но до сих пор, к сожалению, ни одна из версий Excel не умеет "на лету" делать такой простой и нужной вещи как построение сводной по нескольким исходным диапазонам данных, находящимся, например, на разных листах или в разных таблицах:
Прежде, чем начать давайте уточним пару моментов. Априори я полагаю, что в наших данных выполняются следующие условия:
- Таблицы могут иметь любое количество строк с любыми данными, но обязательно - одинаковую шапку.
- На листах с исходными таблицами не должно быть лишних данных. Один лист - одна таблица. Для контроля советую использовать сочетание клавиш Ctrl + End , которое перемещает вас на последнюю использованную ячейку листа. В идеале - это должна быть последняя ячейка таблицы с данными. Если при нажатии на Ctrl + End выделяется какая-либо пустая ячейка правее или ниже таблицы - удалите после таблицы эти пустые столбцы справа или строки снизу и сохраните файл.
Способ 1. Сборка таблиц для сводной с помощью Power Query
Начиная с 2010 версии для Excel существует бесплатная надстройка Power Query, которая умеет собирать и трансформировать любые данные и отдавать их потом как источник для построения сводной таблицы. Решить нашу задачу с помощью этой надстройки совсем несложно.
Сначала создадим новый пустой файл в Excel - в него будет происходить сборка и в нем же потом будет создаваться сводная таблица.
Затем на вкладке Данные (если у вас Excel 2016 или новее) или на вкладке Power Query (если у вас Excel 2010-2013) выберем команду Создать запрос - Из файла - Excel (Get Data - From file - Excel) и укажем исходный файл с таблицами, которые надо собрать:
В появившемся окне выберем любой лист (не принципиально какой именно) и внизу жмем кнопку Изменить (Edit) :
Поверх Excel должно открыться окно редактора запросов Power Query. В правой части окна на панели Параметры запроса удалим все автоматически созданные шаги кроме первого - Источник (Source) :
Теперь мы видим общий список всех листов. Если в файле кроме листов с данными есть еще какие-то побочные листы, то на этом шаге наша задача - отобрать только те листы, с которых нужно загрузить информацию, исключив все остальные с помощью фильтра в шапке таблицы:
Удалим все столбцы, кроме колонки Data, щелкнув по заголовку столбца правой кнопкой мыши и выбрав команду Удалить другие столбцы (Remove other columns) :
Затем можно развернуть содержимое собранных таблиц, щелкнув по двойной стрелке в верхней части столбца (флажок Использовать исходное имя столбца как префикс можно при этом отключить):
Если вы всё сделали правильно, то на этом моменте должны увидеть содержимое всех таблиц, собранных друг под другом:
Осталось поднять первую строку в шапку таблицы кнопкой Использовать первую строку в качестве заголовков (Use first row as headers) на вкладке Главная (Home) и удалить попавшие в данные повторяющиеся шапки таблиц с помощью фильтра:
Сохраним всё проделанное с помощью команды Закрыть и загрузить - Закрыть и загрузить в. (Close & Load - Close & Load to. ) на вкладке Главная (Home) , а в открывшемся окне выберем опцию Только подключение (Connection Only) :
Всё. Осталось только построить сводную. Для этого идём на вкладку Вставка - Сводная таблица (Insert - Pivot Table) , выбирыем опцию Использовать внешний источник данных (Use external data source) , а затем, нажав кнопку Выбрать подключение, наш запрос. Дальнейшее создание и настройка сводной происходит совершенно стандартным образом путем перетаскивания нужных нам полей в области строк, столбцов и значений:
Если в будущем изменятся исходные данные или добавится еще несколько листов-магазинов, то достаточно будет обновить запрос и нашу сводную с помощью команды Обновить все на вкладке Данные (Data - Refresh All) .
Способ 2. Объединяем таблицы SQL-командой UNION в макросе
Еще одно решение нашей задачи представлено вот таким макросом, который создает набор данных (cache) для сводной таблицы, используя команду UNION языка запросов SQL. Эта команда объединяет таблицы со всех указанных в массиве SheetNames листов книги в единую таблицу данных. То есть вместо физического копирования-вставки диапазонов с разных листов на один мы делаем то же самое в оперативной памяти компьютера. Потом макрос добавляет новый лист с заданным именем (переменная ResultSheetName) и создает на нем полноценную(!) сводную на основе собранного кэша.
Чтобы воспользоваться макросом используйте кнопку Visual Basic на вкладке Разработчик (Developer) или сочетание клавиш Alt + F11 . Затем вставляем новый пустой модуль через меню Insert - Module и копируем туда следующий код:
Готовый макрос потом можно запустить сочетанием клавиш Alt + F8 или кнопкой Макросы на вкладке Разработчик (Developer - Macros) .
Минусы такого подхода:
- Данные не обновляются, т.к. кэш не имеет связи с исходными таблицами. При изменении исходных данных надо запустить макрос еще раз и построить сводную заново.
- При изменении количества листов необходимо правки в код макроса (массив SheetNames).
Зато в итоге получаем самую настоящую полноценную сводную таблицу, построенную по нескольким диапазонам с разных листов:
И скачайте и установите бесплатный движок обработки данных из Access с сайта Microsoft - Microsoft Access Database Engine 2010 Redistributable
Способ 3. Мастер консолидации сводных таблиц из старых версий Excel
Этот способ немного устарел, но тоже стоит упоминания. Формально говоря, во всех версиях до 2003 включительно в мастере сводных таблиц была опция "построить сводную по нескольким диапазонам консолидации". Однако, отчет, построенный таким образом, к сожалению, будет лишь жалким подобием настоящей полноценной сводной и не поддерживает многие "фишки" обычных сводных таблиц:
В такой сводной нет заголовков столбцов в списке полей, нет гибкой настройки структуры, ограничен набор используемых функций и, в общем и целом, все это слабо похоже на сводную таблицу. Возможно именно поэтому начиная с 2007 года Microsoft эту функцию убрали из стандартного диалога при создании отчетов сводных таблиц. Теперь эта возможность доступна только через настраиваемую кнопку Мастер сводных таблиц (Pivot Table Wizard) , которую при желании можно добавить на панель быстрого доступа через Файл - Параметры - Настройка панели быстрого доступа - Все команды (File - Options - Customize Quick Access Toolbar - All Commands) :
После нажатия на добавленную кнопку нужно выбрать на первом шаге мастера соответствующую опцию:
А затем в следующем окне выделить по очереди каждый диапазон и добавить его в общий список:
Но, повторюсь, это не полноценная сводная, так что не ждите от нее слишком многого. Подобный вариант могу рекомендовать только в очень простых случаях.
Ссылки по теме
если мне не нужно собирать данные из разных источников как мне сделать точно такой же конструктор чтобы я мог перетаскивать шапки и у меня менялся отчет
Обожаю такие формулировки вопросов. Куда перетаскивать? Какой конструктор? Если вы про создание сводной таблицы по одному диапазону без консолидации, то см. первую ссылку в Ссылки по теме .
Возможно изменить функцию так, что-бы имена листов вычислялись из книги (каждый раз писать новые имена в макрос не удобно)
Спасибо!
Добрый день, Николай!
Спасибо за Ваш сайт и за данную статью.
на одном из форумов нашел вот такое решение с листами .
http://www.excelworld.ru/forum/10-17185-1
Заменить в макросе:
'массив имен листов с исходными таблицами
SheetsNames = Array("a1", "a2", "a3", "a4";)
Dim s As String
'Ввод массива имен листов с исходными таблицами
s = InputBox("Имена листов через запятую";)
s = Replace(s, ", ", ",";) 'Удаляем возможные пробелы после запятой
SheetsNames = Split(s, ",";)
Добрый день! Подскажите пожалуйста как поменять столбцы, в вашем файле берет столбик А:К, а мне например нужен К:Р )
Здавствуйте я использовал ваш пример в своих таблицах , все прекрасно но
есть нюанс\\ Дело в том что этот макрос не подсчитывает строки ,если их больше 50.000
(у меня тоже 4 листа как в примере но каждый состоит из 110.000-120.000 строк )
Может я что-то упускаю.
Подскажите если не трудно.
В коде этого ограничения точно нет. Возможно, это уже нехватка ресурсов компьютера (ограничение кэша Excel 2010 версии - 2 Гб). Точнее сказать, не видя вашего примера, сложно.
Может вам уже бесплатную надстройку PowerPivot использовать - при таких размерах таблиц как раз она замечательно будет работать. И макросов никаких не надо.
Добрый день! Подскажите, пожалуйста, а как в PowerPivot можно объединить данные из двух источников данных? (у меня данные в sharepoint, отдельно я их из списков могу получить, а как объединить в один источник данных для построения сводной - не могу найти.
как я установила опытным путем, ограничение 65536, т.е. кол-во строк в старом Excel
причем что характерно: если строк будет больше 65536, то брать в сводную таблицу будет не первые 65536, а например, первые 4000. или 9000.
т.е. получается даже не обрыв таблицы, а совсем что-то неадекватное.
дело точно не в кэше Excel, потому что я разбила каждую из своих 12 таблиц по 85 тыс.строк на две таблицы по 40-45 тыс строк.и стало все нормально.
т.е. 12 таблиц по 85 тыс.строк не сводились.
а 24 таблицы по 45 тыс.строк сводятся абсолютно корректно. кэша хватает
Николай, вещь полезная, но при использовании данного варианта становится невозможно использование СРЕЗОВ. Оптимизация кода не планируется?
Спасибо за наводку. Подумаем
Я подошел к решению этой проблемы с другой стороны. Я сделал макрос который на новом листе формирует таблицу, которая содержит дание с других листов независимо от колиства строк в этих таблицах, а также выделяет новою таблицу. Осталось только вставить сводную таблицу, но проблема заключается в том как задать диапазон даных для сводной таблици, так как количество строк может менятся. Я только начал изучать VBA и ище многого не усвоил, помогите пожайлуста.
Включите макрорекордер и создайте простую сводную таблицу. Затем посмотрите код VBA, который получился и замените в нем фиксированный диапазон с исходными данными на:
Вы можете использовать по-старинке так называемые "динамические диапазоны" (с формулой СМЕЩ, англ. OFFSET), но сейчас уже следует использовать "умные таблицы", которые автоматически расширяют диапазон. Соответственно, необходимо ссылаться на диапазон данных по имени этого диапазона, а не по адресу, и на таблицу - по ее имени.
Если у вас в столбце одновременно есть и текстовые и числовые значения, то что вы планируете увидеть в сводной?
хотелось бы видеть и текстовые и числовые данные.Вообще элементы как правило имеют числовые значения, но некоторые - тектовые и они просто не попадают в сформированную сводную таблицу
Тогда, боюсь, единственный вариант - форматировать все как текст. Поля смешанного типа тут не поддерживаются.
Макрос допускал ошибку на Win 8 x64, Office 2013 x64.
Помогла замена " Microsoft.Jet.OLEDB.4.0 " на " Microsoft.ACE.OLEDB.12.0 "
Спасибо за уточнение. На 64-битном Office мне его негде было потестировать
Добрый день, помогите пожалуйста:)
Как изменить код так, что-бы сформированный кэш из нескольких листов выводился на скрытый лист "база" без формирования сводной, и каждый раз при запуске макроса информация на листе "база" заменялась
Дело в том, что при выводе данных на отдельный лист, я смогу создать несколько сводных таблиц (т.е. в разных разрезах) из диапазона данных на листе, и при запуске макроса нет необходимости опять настраивать таблицы, а просто их обновить
Спасибо
Выдает ошибку в SheetNames(1) Подскажите пожалуйста что я сделал неправильно? Ведь у PetrovichOskol видимо все получилось. С уважением. Юрий. |
Подскажите пожалуйста, вообще нет возможности сделать обновление сводной таблицы, которая была построена Вашим макросом?
Попробовал решить задачу с обновлением таблицы без повторного ее создания. Да и просят, вижу, многие.
Постарался не отходить от Вашего стиля, вынес часть кода по созданию объекта ADODB.Recordset в отдельную функцию GetData().
И добавил процедуру обновления кэша: UpdateCache() :
- получил ссылку на уже созданную сводную таблицу,
- подменил ей источник данных (PivotCache.Recordset),
- обновил саму таблицу.
Этого оказалось достаточно. При этом текущее состояние таблицы не нарушается, обновляются только данные.
Сравните:
Н.П.: "UNION ALL SELECT * FROM [" & SheetsNames(i) & "$]"
К.Л.: "UNION ALL SELECT * FROM `" & arrFiles(i) & "`.[" & strSheet & "$]"
Различие вот здесь: у меня arrFiles(2) возвращает путь к файлу К.Л. --> C:\Users\User1\Downloads\KL_PivotWkbks\DB-Manitoba.xls
У Николая путь к файлу опущен.
формат строки подключения вот здесь:
www.connectionstrings.com/excel-2003/
При указании имени листа Excel надо добавлять знак "$" и оборачивать его в квадратные скобки "[" "]", как это показано выше.
Еще одно добавление для тех, кто будет читать, по поводу установки Microsoft Access. Эта программа есть не у всех (в стандартный комплект не входит), но здесь она и не нужна, нужен только OLEDB провайдер данных (Microsoft.Jet.OLEDB.4.0 или его аналоги под конкретную среду).
Владимир Безносюк, чуть выше (05.07.2013 11:58:49), спрашивает:
"Как изменить код так, что-бы сформированный кэш из нескольких листов выводился на скрытый лист "база" без формирования сводной, и каждый раз при запуске макроса информация на листе "база" заменялась
Дело в том, что при выводе данных на отдельный лист, я смогу создать несколько сводных таблиц (т.е. в разных разрезах) из диапазона данных на листе, и при запуске макроса нет необходимости опять настраивать таблицы, а просто их обновить".
Вероятно, правильным будет использовать один, главный, кэш для всех созданных таблиц.
Пример изменения кэша для всех сводных таблиц книги:
В результате у всех созданных Вами сводных таблиц будет единый кэш. Правда, сводные таблицы, использующие его, будут иметь некоторые общие черты, такие как вычисляемые элементы и сгруппированные поля (возможность разделить кэш всё равно существует, но это другая тема).
"Работать" такая книга будет намного лучше.
Читайте также: