Запрос к первому листу excel

Содержание

  1. Создание, загрузка и изменение запроса в Excel (Power Query)
  2. Выполнять SQL-запросы к файлам Excel
  3. Откройте SQL-подключение к файлу Excel
  4. Откройте SQL-подключение к файлу Excel, защищенному паролем
  5. Чтение содержимого электронной таблицы Excel
  6. Удалить данные из строки Excel
  7. Получить данные Excel, кроме определенной строки

Создание, загрузка и изменение запроса в Excel (Power Query)

Power Query предлагает несколько способов создания и загрузки power querys в книгу. Вы также можете настроить параметры загрузки запроса по умолчанию в окне Параметры запроса.

Совет Чтобы упросить, сформированы ли данные на этом плане с помощью Power Query, выберите ячейку с данными, а если появится вкладка Лента контекстного запроса, данные загружаются из Power Query.

Знать, в какой среде вы сейчас? Power Query хорошо интегрирован с пользовательским интерфейсом Excel, особенно при импорте данных, работе с подключениями и редактировании таблиц, таблиц с Excel и именовых диапазонов. Чтобы избежать путаницы, важно в любой момент времени знать, в какой среде вы находитесь, в какой Excel или Power Query.

Знакомые Excel, лента и сетка

Лента редактора Power Query и предварительный просмотр данных

Например, работа с данными на Excel значительно отличается от Power Query. Кроме того, подключенные данные, которые вы видите на Excel, могут не работать с Power Query для их обработки. Это происходит только при загрузке данных на таблицу или в модель данных из Power Query.

Переименование я вкладок на таблицах Ямы лучше переименовывать по своему смыслу, особенно если их много. Особенно важно пояснить разницу между данными и данными, загруженными из редактора Power Query. Даже если у вас всего два листа: с таблицей Excel «Лист1»и запросом, созданным путем импорта таблицы Excel Таблица1,ее легко запутать. Всегда имеет смысл изменить названия ярлыков по умолчанию на более понятное. Например, переименуйте Лист1 в Таблицу данных и Таблицу1 в Таблицу запросов. Теперь понятно, какая вкладка с данными, а какая вкладка с запросом.

Вы можете создать запрос из импортируемых данных или пустой запрос.

Создание запроса из импортируемых данных

Это самый распространенный способ создания запроса.

Выберем ячейку в данных и выберите запрос> изменить.

Создание пустого запроса

Вы можете начать с нуля. Это можно сделать двумя способами.

Выберите Данные> Получить данные > из других источников > пустой запрос.

Выберите Данные> получить данные > запуск редактора Power Query.

На этом этапе вы можете вручную добавлять шаги и формулы, если хорошо знаете язык формул Power Query M.

Кроме того, можно выбрать команду На главная в группе Новый запрос. Выполните одно из указанных ниже действий.

Выберите Новый источник, чтобы добавить источник данных. Эта команда выглядит так же, как> «Получить данные» на Excel ленте.

Выберите Последние источники, чтобы выбрать источник данных, с помощью который вы работали. Эта команда выглядит так же, как> последние источники на Excel ленте.

Чтобы ввести данные вручную, выберите Ввести данные. Вы можете выбрать эту команду, чтобы попробовать редактор Power Query независимо от внешнего источника данных.

Предположим, что запрос действителен и не имеет ошибок, его можно загрузить обратно на таблицу или в модель данных.

Загрузка запроса из редактора Power Query

В редакторе Power Query сделайте следующее:

Чтобы загрузить на таблицу, выберите Главная> Закрыть & Загрузить > Закрыть & Загрузить.

Чтобы загрузить данные в модель данных, выберите Главная> Закрыть & Загрузить > Закрыть & Загрузка.

В диалоговом окне Импорт данных выберите добавить эти данные в модель данных.

Совет Иногда команда «Загрузить в» неатривна или отключена. Это может произойти при первом создании запроса в книге. В этом случае нажмите кнопку Закрыть & Загрузить, на новом > запросы данных & Connections > Запросы, щелкните запрос правой кнопкой мыши и выберите загрузить в . Кроме того, на ленте редактора Power Query выберите запрос> Загрузить в.

Загрузка запроса из области «Запросы и подключения»

В Excel может потребоваться загрузить запрос на другой таблицу или в модель данных.

В Excel выберите Запросы> запросы & Connections, а затем выберите вкладку Запросы.

В списке запросов найдите запрос, щелкните его правой кнопкой мыши и выберите загрузить в. Появится диалоговое окно Импорт данных.

Выберите, как вы хотите импортировать данные, а затем выберите ОК. Чтобы получить дополнительные сведения об использовании этого диалогового окна, выберите знак вопроса (?).

Существует несколько способов изменить запрос, загруженный на таблицу.

Изменение запроса на Excel данных

Чтобы изменить запрос, найдите ранее загруженную из редактора Power Query, выйдите ячейку в данных и выберите запрос > Изменить.

Изменение запроса в области «Запросы & подключения»

Возможно, вы & области Запросы и подключения удобнее использовать, если в одной книге много запросов и вы хотите быстро найти его.

В Excel выберите Запросы> запросы & Connections, а затем выберите вкладку Запросы.

В списке запросов найдите запрос, щелкните его правой кнопкой мыши и выберите изменить.

Изменение запроса в диалоговом окне «Свойства запроса»

В Excel выберите Data> Data & Connections > Запросы, щелкните запрос правой кнопкой мыши и выберите Свойства ,выберите вкладку Определение в диалоговом окне Свойства и нажмите кнопку Изменить запрос.

Совет Если вы работаете с запросом на > данных, в диалоговом окнеСвойства выберите вкладку Определение, а затем — Изменить запрос.

Модель данных обычно содержит несколько таблиц, расположенных в связи. Запрос загружается в модель данных с помощью команды Загрузить, чтобы отобразить диалоговое окно Импорт данных, а затем в поле Добавить эти данные в режим данныхl. Дополнительные сведения о моделях данных см. в дополнительных сведениях о том, какие источники данных используются в модели данных книги,Создание модели данных в Excelи Создание таблиц с помощью нескольких таблиц.

Чтобы открыть модель данных, выберите Power Pivot > Управление.

В нижней части окна Power Pivot выберите вкладку нужной таблицы.

Подтвердим, что отображается правильная таблица. Модель данных может иметь много таблиц.

Обратите внимание на имя таблицы.

Чтобы закрыть окно Power Pivot, выберите файл> Закрыть. Чтобы освободить память, может потребоваться несколько секунд.

Выберите > подключения & свойства > Запросы, щелкните запрос правой кнопкой мыши и выберите изменить.

Завершив внесение изменений в редакторе Power Query, выберите файл > Закрыть & загрузить.

Запрос на этом и в таблице в модели данных обновляются.

Если вы заметили, что загрузка запроса в модель данных занимает намного больше времени, чем загрузка на лист, проверьте действия Power Query, чтобы узнать, фильтруется ли текстовый столбец или структурированный столбец списка с помощью оператора Contains. Это действие приводит Excel повторно прогонять весь набор данных для каждой строки. Более того, Excel не могут эффективно использовать многопрочитанные выполнения. В качестве обходного решения попробуйте использовать другой оператор, например Равно или Начинает с.

Корпорация Майкрософт знает об этой проблеме и находится в стадии исследования.

Вы можете загрузить Power Query:

На один из них. В редакторе Power Query выберите Home> Close & Load > Close & Load.

В модель данных. В редакторе Power Query выберите Home> Close & Load > Close & Load To.

По умолчанию Power Query загружает запросы на новый таблицу при загрузке одного запроса и одновременно загружает несколько запросов в модель данных. Вы можете изменить поведение по умолчанию для всех книг или только для текущей книги. При настройке этих параметров Power Query не меняет результаты запроса на месте или в данных модели данных и примечаниях.

Кроме того, динамически переопределять стандартные параметры запроса можно в диалоговом окне Импорт, которое отображается после выбора параметра & Загрузить в.

Глобальные параметры, которые применяются во всех книгах

В редакторе Power Query выберите Файл > параметры и параметры > параметры запроса.

В диалоговом окне Параметры запроса в левой части в разделе GLOBAL выберите Загрузка данных.

В разделе Загрузка Параметры запроса по умолчанию сделайте следующее:

Выберите Использовать стандартные параметры загрузки.

Выберите Указать настраиваемые параметры загрузкипо умолчанию, а затем выберите или отобирать параметр Загрузить на таблицу или Загрузить в модель данных.

Совет В нижней части диалогового окна можно выбрать восстановить параметры по умолчанию, чтобы вернуться к настройкам по умолчанию.

Параметры книги, которые применяются только к текущей книге

В диалоговом окне Параметры запроса в левой части в разделе ТЕКУЩАЯ КНИГА выберите Загрузка данных.

Выполните одно или несколько из указанных ниже действий.

В области Обнаружение типоввыберите или сберем для обнаружения типов столбцов и их заглавных колонок для неструктурированных источников.

По умолчанию они обнаруживаются. Если вы предпочитаете формировать данные самостоятельно, отоставьте этот параметр.

В области Связивыберите или отоберем создать связи между таблицами при первом добавлении в модель данных.

По умолчанию перед загрузкой в модель данных можно найти существующие связи между таблицами, например внешние ключи в реляционной базе данных, и импортировать их вместе с данными. Если вы предпочитаете делать это самостоятельно, сделайте это самостоятельно.

В области Связивыберите или отоберете update relationships when refreshing queries loaded to the Data Model (Связи) при обновлении запросов, загруженных в модель данных.

По умолчанию отношения не обновляются. При обновлении запросов, уже загруженных в модель данных, Power Query находит существующие связи между таблицами, например внешние ключи, в реляционной базе данных и обновляет их. Это может привести к удалению связей, созданных вручную после импорта данных, или к новым связям. Тем не менее, если вы хотите сделать это, выберите этот параметр.

В области Фоновыеданные выберите или отпустите разрешение предварительного просмотра данных для скачивания в фоновом режиме.

По умолчанию предварительный просмотр данных загружается в фоновом режиме. Если вы хотите сразу же видеть все данные, отобираем этот параметр.

Источник

Выполнять SQL-запросы к файлам Excel

Хотя действия Excel могут обрабатывать большинство сценариев автоматизации Excel, запросы SQL могут более эффективно извлекать значительные объемы данных Excel и работать с ними.

Предположим, поток должен изменить только те реестры Excel, которые содержат определенное значение. Чтобы реализовать эту функциональность без SQL-запросов, вам потребуются циклы, условные выражения и несколько действий Excel.

Вы также можете реализовать эту функциональность с помощью SQL-запросов, используя только два действия: Открыть SQL-подключение и Выполнять инструкции SQL.

Откройте SQL-подключение к файлу Excel

Перед запуском SQL-запроса вы должны открыть подключение с файлом Excel, к которому вы хотите получить доступ.

Чтобы установить подключение, создайте новую переменную с именем %Excel_File_Path% и инициализируйте его, указав путь к файлу Excel. При желании вы можете пропустить этот шаг и использовать жестко заданный путь к файлу позже в потоке.

Теперь разверните действие Открыть SQL-подключение и заполните следующую строку подключения в его свойствах.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%Excel_File_Path%;Extended Properties=»Excel 12.0 Xml;HDR=YES»;

Для успешного использования представленной строки подключения вам необходимо скачать и установить Распространяемый пакет ядра СУБД Microsoft Access 2010.

Откройте SQL-подключение к файлу Excel, защищенному паролем

Другой подход требуется в сценариях, где вы запускаете SQL-запросы к файлам Excel, защищенным паролем. Действие Открыть SQL-подключение не может подключиться к файлам Excel, защищенным паролем, поэтому вам необходимо снять защиту.

Для этого запустите файл Excel с помощью действие Запустить Excel. Файл защищен паролем, поэтому введите соответствующий пароль в поле Пароль.

Затем разверните соответствующие действия автоматизации пользовательского интерфейса и перейдите к Файл>Информация>Защита книги>Зашифровать паролем. Дополнительные сведения об автоматизации пользовательского интерфейса и о том, как использовать соответствующие действия можно найти в Автоматизировать классические приложения.

После выбора Зашифровать паролем заполните пустую строку во всплывающем диалоговом окне, используя действие Заполнить текстовое поле в окне. Чтобы заполнить пустую строку, используйте следующее выражение: %»»%.

Чтобы нажать на ОК в диалоговом окне и применить изменения, разверните действие Нажать кнопку в окне.

Наконец, разверните действие Закрыть Excel, чтобы сохранить незащищенную книгу как новый файл Excel.

После сохранения файла следуйте инструкциям в Открытие SQL-подключения к файлу Excel, чтобы открыть к нему подключение.

Когда работа с файлом Excel будут завершена, используйте действие Удалить файлы для удаления незащищенной копии файла Excel.

Чтение содержимого электронной таблицы Excel

Хотя действие Считать с листа Excel может считывать содержимое листа Excel, циклы могут занять значительное время для итерации полученных данных.

Более эффективный способ получения определенных значений из электронных таблиц — это рассматривать файлы Excel как базы данных и выполнять на них SQL-запросы. Этот подход быстрее и увеличивает производительность потока.

Чтобы получить все содержимое электронной таблицы, вы можете использовать следующий SQL-запрос в действие Выполнить инструкцию SQL.

Чтобы применить этот SQL-запрос в ваших потоках, замените заполнитель SHEET именем электронной таблицы, к которой вы хотите получить доступ.

Чтобы получить строки, содержащие определенное значение в определенном столбце, используйте следующий запрос SQL:

Чтобы применить этот SQL-запрос в ваших потоках, замените:

  • SHEET с именем электронной таблицы, к которой вы хотите получить доступ.
  • COLUMN NAME столбцом, содержащим значение, которое вы хотите найти. Столбцы в первой строке листа Excel идентифицируются как имена столбцов таблицы.
  • VALUE со значением, которое вы хотите найти.

Удалить данные из строки Excel

Хотя Excel не поддерживает SQL-запрос DELETE, вы можете использовать запрос UPDATE, чтобы установить для всех ячеек определенной строки значение NULL.

Точнее, вы можете использовать следующий SQL-запрос:

При разработке потока вы должны заменить заполнитель SHEET именем электронной таблицы, к которой вы хотите получить доступ.

Заполнители COLUMN1 а также COLUMN2 представляют имена всех столбцов для обработки. В этом примере два столбца, но в реальном сценарии количество столбцов может быть другим. Столбцы в первой строке листа Excel идентифицируются как имена столбцов таблицы.

Часть запроса [COLUMN1]=’VALUE’определяет строку, которую вы хотите обновить. В вашем потоке используйте имя столбца и значение в зависимости от того, какая комбинация однозначно описывает строки.

Получить данные Excel, кроме определенной строки

В некоторых сценариях может потребоваться получить все содержимое электронной таблицы Excel, кроме определенной строки.

Удобный способ добиться этого результата — установить для значений нежелательной строки значение NULL, а затем получить все значения, кроме нулевых.

Чтобы изменить значения определенной строки в электронной таблице, вы можете использовать SQL-запрос UPDATE, представленный в Удалить данные из строки Excel:

Затем выполните следующий SQL-запрос, чтобы получить все строки электронной таблицы, не содержащие значений NULL:

Заполнители COLUMN1 а также COLUMN2 представляют имена всех столбцов для обработки. В этом примере два столбца, но в реальной таблице количество столбцов может быть другим. Все столбцы в первой строке листа Excel идентифицируются как имена столбцов таблицы.

Источник

Используйте возможности SQL для создания запросов в Excel и напрямую к таблицам Excel

XLTools SQL Запросы: SELECT к таблице Excel

Порой таблицы Excel постепенно разрастаются настолько, что с ними становится неудобно работать. Поиск дубликатов, группировка, сложная сортировка, объединение нескольких таблиц в одну, т.д. — превращаются в действительно трудоёмкие задачи. Теоретически эти задачи можно легко решить с помощью языка запросов SQL… если бы только можно было составлять запросы напрямую к данным Excel.

Инструмент XLTools «SQL запросы» расширяет Excel возможностями языка структурированных запросов:

Перед началом работы добавьте «Всплывающие часы» в Excel

«SQL запросы» – это один из 20+ инструментов в составе надстройки XLTools для Excel. Работает в Excel 2019, 2016, 2013, 2010, десктоп Office 365.

Начните работу с инструментами XLTools

Как превратить данные Excel в реляционную базу данных и подготовить их к работе с SQL запросами

По умолчанию Excel воспринимает данные как простые диапазоны. Но SQL применим только к реляционным базам данных. Поэтому, прежде чем создать запрос, преобразуйте диапазоны Excel в таблицу (именованный диапазон с применением стиля таблицы):

Выберите таблицу Откройте вкладку «Конструктор» Напечатайте имя таблицы.

Повторите эти шаги для каждого диапазона, который планируете использовать в запросах.

Напр., «КодТовара», «ЦенаРозн», «ОбъемПродаж», т.д.

XLTools SQL Запросы: подготовка данных и формат таблиц

Как создать и выполнить запрос SQL SELECT к таблицам Excel

Надстройка «SQL запросы» позволяет выполнять запросы к Excel таблицам на разных листах и в разных книгах. Для этого убедитесь, что эти книги открыты, а нужные данные отформатированы как именованные таблицы.

В левой части окна находится дерево данных со всеми доступными таблицами Excel.

Нажатием на узлы открываются/сворачиваются поля таблицы (столбцы).

Выберите целые таблицы или конкретные поля.

XLTools SQL Запросы: SELECT к таблице Excel

Операторы Left Join, Order By, Group By, Distinct и другие SQLite команды в Excel

XLTools использует стандарт SQLite. Пользователи, владеющие языком SQLite, могут создавать самые разнообразные запросы:

Как объединить две и более Excel таблиц с помощью надстройки «SQL запросы»

Вы можете объединить несколько таблиц Excel в одну, если у них есть общее ключевое поле. Предположим, вам нужно объединить несколько таблиц по общему столбцу «КодТовара»:

Нажмите Выполнить SQL на вкладке XLTools Выберите поля, которые нужно включить в объединённую таблицу.

По мере выбора полей, автоматически генерируется запрос SELECT и LEFT JOIN.

Создание, загрузка и изменение запроса в Excel (Power Query)

Совет Чтобы упросить, сформированы ли данные на этом плане с помощью Power Query, выберите ячейку с данными, а если появится вкладка Лента контекстного запроса, данные загружаются из Power Query.

Выбор ячейки в запросе для вкладки "Запрос"

Знать, в какой среде вы сейчас? Power Query хорошо интегрирован с пользовательским интерфейсом Excel, особенно при импорте данных, работе с подключениями и редактировании таблиц, таблиц с Excel и именовых диапазонов. Чтобы избежать путаницы, важно в любой момент времени знать, в какой среде вы находитесь, в какой Excel или Power Query.

Знакомые Excel, лента и сетка

Лента редактора Power Query и предварительный просмотр данных

Например, работа с данными на Excel значительно отличается от Power Query. Кроме того, подключенные данные, которые вы видите на Excel, могут не работать с Power Query для их обработки. Это происходит только при загрузке данных на таблицу или в модель данных из Power Query.

Переименование я вкладок на таблицах Ямы лучше переименовывать по своему смыслу, особенно если их много. Особенно важно пояснить разницу между данными и данными, загруженными из редактора Power Query. Даже если у вас всего два листа: с таблицей Excel «Лист1»и запросом, созданным путем импорта таблицы Excel Таблица1,ее легко запутать. Всегда имеет смысл изменить названия ярлыков по умолчанию на более понятное. Например, переименуйте Лист1 в Таблицу данных и Таблицу1 в Таблицу запросов. Теперь понятно, какая вкладка с данными, а какая вкладка с запросом.

Вы можете создать запрос из импортируемых данных или пустой запрос.

Создание запроса из импортируемых данных

Это самый распространенный способ создания запроса.

Выберем ячейку в данных и выберите запрос> изменить.

Создание пустого запроса

Вы можете начать с нуля. Это можно сделать двумя способами.

Выберите Данные> Получить данные >из других источников > пустой запрос.

Выберите Данные> получить данные >запуск редактора Power Query.

На этом этапе вы можете вручную добавлять шаги и формулы, если хорошо знаете язык формул Power Query M.

Кроме того, можно выбрать команду На главная в группе Новый запрос. Выполните одно из указанных ниже действий.

Выберите Новый источник, чтобы добавить источник данных. Эта команда выглядит так же, как> «Получить данные» на Excel ленте.

Выберите Последние источники, чтобы выбрать источник данных, с помощью который вы работали. Эта команда выглядит так же, как> последние источники на Excel ленте.

Чтобы ввести данные вручную, выберите Ввести данные. Вы можете выбрать эту команду, чтобы попробовать редактор Power Query независимо от внешнего источника данных.

Предположим, что запрос действителен и не имеет ошибок, его можно загрузить обратно на таблицу или в модель данных.

Загрузка запроса из редактора Power Query

В редакторе Power Query сделайте следующее:

Чтобы загрузить на таблицу, выберите Главная> Закрыть & Загрузить > Закрыть & Загрузить.

Чтобы загрузить данные в модель данных, выберите Главная> Закрыть & Загрузить > Закрыть & Загрузка.

В диалоговом окне Импорт данных выберите добавить эти данные в модельданных.

Совет Иногда команда «Загрузить в» неатривна или отключена. Это может произойти при первом создании запроса в книге. В этом случае нажмите кнопку Закрыть & Загрузить, на новом > запросы данных & Connections > Запросы, щелкните запрос правой кнопкой мыши и выберите загрузить в . Кроме того, на ленте редактора Power Query выберите запрос> Загрузить в.

Загрузка запроса из области «Запросы и подключения»

В Excel может потребоваться загрузить запрос на другой таблицу или в модель данных.

В Excel выберите Запросы> запросы & Connections, а затем выберите вкладку Запросы.

В списке запросов найдите запрос, щелкните его правой кнопкой мыши и выберите загрузить в. Появится диалоговое окно Импорт данных.

Выберите, как вы хотите импортировать данные, а затем выберите ОК. Чтобы получить дополнительные сведения об использовании этого диалогового окна, выберите знак вопроса (?).

Существует несколько способов изменить запрос, загруженный на таблицу.

Изменение запроса на Excel данных

Чтобы изменить запрос, найдите ранее загруженную из редактора Power Query, выйдите ячейку в данных и выберите запрос > Изменить.

Изменение запроса в области «Запросы & подключения»

Возможно, вы & области Запросы и подключения удобнее использовать, если в одной книге много запросов и вы хотите быстро найти его.

В Excel выберите Запросы> запросы & Connections, а затем выберите вкладку Запросы.

В списке запросов найдите запрос, щелкните его правой кнопкой мыши и выберите изменить.

Изменение запроса в диалоговом окне «Свойства запроса»

В Excel выберите Data> Data & Connections > Запросы, щелкните запрос правой кнопкой мыши и выберите Свойства ,выберите вкладку Определение в диалоговом окне Свойства и нажмите кнопку Изменить запрос.

Совет Если вы работаете с запросом на > данных, в диалоговом окнеСвойства выберите вкладку Определение, а затем — Изменить запрос.

Модель данных обычно содержит несколько таблиц, расположенных в связи. Запрос загружается в модель данных с помощью команды Загрузить, чтобы отобразить диалоговое окно Импорт данных, а затем в поле Добавить эти данные в режим данныхl. Дополнительные сведения о моделях данных см. в дополнительных сведениях о том, какие источники данных используются в модели данных книги,Создание модели данных в Excelи Создание таблиц с помощью нескольких таблиц.

Чтобы открыть модель данных, выберите Power Pivot > Управление.

В нижней части окна Power Pivot выберите вкладку нужной таблицы.

Подтвердим, что отображается правильная таблица. Модель данных может иметь много таблиц.

Обратите внимание на имя таблицы.

Чтобы закрыть окно Power Pivot, выберите файл> Закрыть. Чтобы освободить память, может потребоваться несколько секунд.

Выберите > подключения & свойства >Запросы, щелкните запрос правой кнопкой мыши и выберите изменить.

Завершив внесение изменений в редакторе Power Query, выберите файл > Закрыть & загрузить.

Запрос на этом и в таблице в модели данных обновляются.

Если вы заметили, что загрузка запроса в модель данных занимает намного больше времени, чем загрузка на лист, проверьте действия Power Query, чтобы узнать, фильтруется ли текстовый столбец или структурированный столбец списка с помощью оператора Contains. Это действие приводит Excel повторно прогонять весь набор данных для каждой строки. Более того, Excel не могут эффективно использовать многопрочитанные выполнения. В качестве обходного решения попробуйте использовать другой оператор, например Равно или Начинает с.

Корпорация Майкрософт знает об этой проблеме и находится в стадии исследования.

Вы можете загрузить Power Query:

На один из них. В редакторе Power Query выберите Home> Close & Load > Close & Load.

В модель данных. В редакторе Power Query выберите Home> Close & Load > Close & Load To.

По умолчанию Power Query загружает запросы на новый таблицу при загрузке одного запроса и одновременно загружает несколько запросов в модель данных. Вы можете изменить поведение по умолчанию для всех книг или только для текущей книги. При настройке этих параметров Power Query не меняет результаты запроса на месте или в данных модели данных и примечаниях.

Кроме того, динамически переопределять стандартные параметры запроса можно в диалоговом окне Импорт, которое отображается после выбора параметра & Загрузитьв.

Глобальные параметры, которые применяются во всех книгах

В редакторе Power Query выберите Файл > параметры и параметры >параметры запроса.

В диалоговом окне Параметры запроса в левой части в разделе GLOBAL выберите Загрузка данных.

В разделе Загрузка Параметры запроса по умолчанию сделайте следующее:

Выберите Использовать стандартные параметры загрузки.

Выберите Указать настраиваемые параметры загрузкипо умолчанию, а затем выберите или отобирать параметр Загрузить на таблицу или Загрузить в модель данных.

Совет В нижней части диалогового окна можно выбрать восстановить параметры по умолчанию, чтобы вернуться к настройкам по умолчанию.

Параметры книги, которые применяются только к текущей книге

В диалоговом окне Параметры запроса в левой части в разделе ТЕКУЩАЯ КНИГА выберите Загрузка данных.

Выполните одно или несколько из указанных ниже действий.

В области Обнаружение типоввыберите или сберем для обнаружения типов столбцов и их заглавных колонок для неструктурированных источников.

По умолчанию они обнаруживаются. Если вы предпочитаете формировать данные самостоятельно, отоставьте этот параметр.

В области Связивыберите или отоберем создать связи между таблицами при первом добавлении в модель данных.

По умолчанию перед загрузкой в модель данных можно найти существующие связи между таблицами, например внешние ключи в реляционной базе данных, и импортировать их вместе с данными. Если вы предпочитаете делать это самостоятельно, сделайте это самостоятельно.

В области Связивыберите или отоберете update relationships when refreshing queries loaded to the Data Model (Связи) при обновлении запросов, загруженных в модель данных.

По умолчанию отношения не обновляются. При обновлении запросов, уже загруженных в модель данных, Power Query находит существующие связи между таблицами, например внешние ключи, в реляционной базе данных и обновляет их. Это может привести к удалению связей, созданных вручную после импорта данных, или к новым связям. Тем не менее, если вы хотите сделать это, выберите этот параметр.

В области Фоновыеданные выберите или отпустите разрешение предварительного просмотра данных для скачивания в фоновом режиме.

По умолчанию предварительный просмотр данных загружается в фоновом режиме. Если вы хотите сразу же видеть все данные, отобираем этот параметр.

Запрос на выборку данных (формулы) в EXCEL

Суть запроса на выборку – выбрать из исходной таблицы строки, удовлетворяющие определенным критериям (подобно применению стандартного Фильтра ). Произведем отбор значений из исходной таблицы с помощью формул массива . В отличие от применения Фильтра ( CTRL+SHIFT+L или Данные/ Сортировка и фильтр/ Фильтр ) отобранные строки будут помещены в отдельную таблицу.

В этой статье рассмотрим наиболее часто встречающиеся запросы, например: отбор строк таблицы, у которых значение из числового столбца попадает в заданный диапазон (интервал); отбор строк, у которых дата принаждежит определенному периоду; задачи с 2-мя текстовыми критериями и другие. Начнем с простых запросов.

1. Один числовой критерий (Выбрать те Товары, у которых цена выше минимальной)

Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист Один критерий — число ).

Необходимо отобразить в отдельной таблице только те записи (строки) из Исходной таблицы, у которых цена выше 25.

Решить эту и последующие задачи можно легко с помощью стандартного фильтра . Для этого выделите заголовки Исходной таблицы и нажмите CTRL+SHIFT+L . Через выпадающий список у заголовка Цены выберите Числовые фильтры. , затем задайте необходимые условия фильтрации и нажмите ОК.

Будут отображены записи удовлетворяющие условиям отбора.

Другим подходом является использование формул массива . В отличие от фильтра отобранные строки будут помещены в отдельную таблицу — своеобразный Отчет , который, например, можно отформатировать в стиль отличный от Исходной таблицы или производить другие ее модификации.

Критерий (минимальную цену) разместим в ячейке Е6 , таблицу для отфильтрованных данных — в диапазоне D10:E19 .

Теперь выделим диапазон D11:D19 (столбец Товар) и в Строке формул введем формулу массива :

Вместо ENTER нажмите сочетание клавиш CTRL+SHIFT+ENTER .

Те же манипуляции произведем с диапазоном E11:E19 куда и введем аналогичную формулу массива :

В результате получим новую таблицу, которая будет содержать только товары, у которых цены попадают в интервал, указанный в ячейках Е5 и Е6 .

Чтобы показать динамизм полученного Отчета (Запроса на выборку) введем в Е6 значение 65. В новую таблицу будет добавлена еще одна запись из Исходной таблицы, удовлетворяющая новому критерию.

Если в Исходную таблицу добавить новый товар с Ценой в диапазоне от 25 до 65, то в новую таблицу будет добавлена новая запись.

В файле примера также содержатся формулы массива с обработкой ошибок, когда в столбце Цена содержится значение ошибки, например #ДЕЛ/0! (см. лист Обработка ошибок ).

Следующие задачи решаются аналогичным образом, поэтому не будем их рассматривать так детально.

3. Один критерий Дата (Выбрать те Товары, у которых Дата поставки совпадает заданной)

Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист Один критерий — Дата ).

Для отбора строк используются формулы массива, аналогичные Задаче1 (вместо критерия =$B$12:$B$20)*(СТРОКА($B$12:$B$20)-СТРОКА($B$11));$J$12-СТРОКА(A12)+СТРОКА($B$11)+1))

Примечание : После ввода формулы вместо клавиши ENTER (ВВОД) нужно нажать сочетание клавиш CTRL+SHIFT+ENTER. Это сочетание клавиш используется для ввода формул массива.

Скопируйте формулу массива вниз на нужное количество ячеек. Формула вернет только те значения Товаров, которые были поставлены в диапазоне указанных дат. В остальных ячейках будут содержаться ошибки #ЧИСЛО! Ошибки в файле примера (Лист 4.Диапазон Дат) скрыты с помощью Условного форматирования .

Аналогичную формулу нужно ввести и для дат в столбец E.

В ячейке J12 вычислено количество строк исходной таблицы, удовлетворяющих критериям:

Решение2 : Для отбора строк можно использовать формулы массива, аналогичные Задаче2 (т.е. формулы массива, возвращающие несколько значений ):

Для ввода первой формулы выделите диапазон ячеек G12:G20 . После ввода формулы вместо клавиши ENTER (ВВОД) нужно нажать сочетание клавиш CTRL+SHIFT+ENTER.

Решение3 : Если столбец Дат СОРТИРОВАН, то можно не использовать формулы массива.

Сначала необходимо вычислить первую и последнюю позиции строк, которые удовлетворяют критериям. Затем вывести строки с помощью функции СМЕЩ() .

Этот пример еще раз наглядно демонстрирует насколько предварительная сортировка данных облегчает написание формул.

5. Один критерий Дата (Выбрать те Товары, у которых Дата поставки не раньше/ не позже заданной)

Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист Один критерий — Дата (не позже) ).

Для отбора строк, дата которых не раньше (включая саму дату), используется формула массива:

= ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ($E$7 C15;И($B$7>=B15;$B$7 =$B$13:$B$21)*($B$13:$B$21>0);СТРОКА($B$13:$B$21);»»);СТРОКА($B$13:$B$21)-СТРОКА($B$12)) -СТРОКА($B$12))

Условие $E$7=$A$13:$A$21 гарантирует, что будут отобраны товары только определенного типа. Условие $E$8>=$B$13:$B$21 гарантирует, что будут отобраны даты не позже заданной (включая). Условие $B$13:$B$21>0 необходимо, если в диапазоне дат имеются пустые ячейки. Знак * (умножение) используется для задания Условия И (все 3 критерия должны выполняться для строки одновременно).

Примечание . Случай, когда список несортирован, рассмотрен в статье Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в MS EXCEL. Несортированный список .

7. Один Текстовый критерий (Выбрать Товары определенного вида)

Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист Один критерий — Текст ).

Задача решается аналогично Задачам 1 и 3. Более подробное решение см. в статье Поиск ТЕКСТовых значений в MS EXCEL с выводом их в отдельный список. Часть1. Обычный поиск .

8. Два Текстовых критерия (Выбрать Товары определенного вида, поставленные в заданный месяц)

Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист 2 критерия — текст (И) ).

Для отбора строк используется формула массива:

Выражение ($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19) задает оба условия (Товар и Месяц).

Выражение СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19))) формирует массив последовательных чисел , т.е. номера строк в таблице.

9. Два Текстовых критерия (Выбрать Товары определенных видов)

Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист 2 критерия — текст (ИЛИ) ).

В отличие от Задачи 7 отберем строки с товарами 2-х видов ( Условие ИЛИ ).

Для отбора строк используется формула массива:

= ИНДЕКС(A$11:A$19; НАИБОЛЬШИЙ((($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19))*(СТРОКА($A$11:$A$19)-СТРОКА($A$10)); СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1))

Условие ($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19) гарантирует, что будут отобраны товары только заданных видов из желтых ячеек (Товар2 и Товар3). Знак + (сложение) используется для задания Условие ИЛИ (должен быть выполнен хотя бы 1 критерий).

Вышеуказанное выражение вернет массив . Умножив его на выражение СТРОКА($A$11:$A$19)-СТРОКА($A$10) , т.е. на массив последовательных чисел , получим массив позиций (номеров строк таблицы), удовлетворяющих критериям. В нашем случае это будет массив .

С помощью функции НАИБОЛЬШИЙ() выведем 3 значения из позиции 5 (строка 15 листа), 6 (16) и 7 (17), т.е. значения Товар2, Товар2 и Товар3. Для этого используем выражение СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1 , которое последовательно (начиная со строки 11) будет возвращать числа 3; 2; 1; 0; -1; -2; . Формула НАИБОЛЬШИЙ(. ;3) вернет число 5, НАИБОЛЬШИЙ(. ;2) вернет число 6, НАИБОЛЬШИЙ(. ;1) вернет число 7, а НАИБОЛЬШИЙ(. ;0) и далее вернет ошибку, которую мы скроем условным форматированием .

И наконец, с помощью функции ИНДЕКС() последовательно выведем наши значения из соответствующих позиций: = ИНДЕКС(A$11:A$19;5) вернет Товар2, = ИНДЕКС(A$11:A$19;6) вернет Товар2, = ИНДЕКС(A$11:A$19;7) вернет Товар3.

10. Отбор значений с учетом повторов

В разделе Отбор на основании повторяемости собраны статьи о запросах с группировкой данных. Из повторяющихся данных сначала отбираются уникальные значения, а соответствующие им значения в других столбцах — группируются (складываются, усредняются и пр.).

Наиболее популярные статьи из этого раздела:

В качестве примера приведем решения следующей задачи: Выбрать Товары, цена которых лежит в определенном диапазоне и повторяется заданное количество раз или более.

В качестве исходной возьмем таблицу партий товаров.

Предположим, что нас интересует сколько и каких партий товаров поставлялось по цене от 1000р. до 2000р. (критерий 1). Причем, партий с одинаковой ценой должно быть минимум 3 (критерий 2).

Решением является формула массива:

Эта формула возвращает номера строк, которые удовлетворяют обоим критериям.

Формула =СУММПРОИЗВ(($C$14:$C$27>=$B$7)*($C$14:$C$27 =$B$10)) подсчитывает количество строк, которые удовлетворяют критериям.

В файле примера на листе «10.Критерий — колич-во повторов» настроено Условное форматирование , которое позволяет визуально определить строки удовлетворяющие критериям, а также скрыть ячейки, в которых формула массива возвращает ошибку #ЧИСЛО!

11. Используем значение критерия (Любой) или (Все)

В фильтре Сводных таблиц MS EXCEL используется значение (Все), чтобы вывести все значения столбца. Другими словами, в выпадающем списке значений критерия содержится особое значение, которое отменяет сам критерий (см. статью Отчеты в MS EXCEL , Отчет №3).

В файле примера на листе «11. Критерий Любой или (Все)» реализован данный вариант критерия.

Формула в этом случае должна содержать функцию ЕСЛИ() . Если выбрано значение (Все), то используется формула для вывода значений без учета данного критерия. Если выбрано любое другое значение, то критерий работает обычным образом.

Остальная часть формулы аналогична рассмотренным выше.

12. Актуальная цена

Пусть для товара ежедневно заполняется таблица цен (цена может меняться, но не каждый день). Нужно найти актуальнуй цену, т.е. цену на последнюю дату. Если товар всего один, то можно отсортировать по дате и в последней строке будет нужная актуальная цена. Если товаров много, то нужно сначала выбрать Автофильтром нужный товар, затем опять отсортировать по цене.

Чтобы иметь перечень товаров с актуальными ценами придется использовать формулы:

2) определяем последнюю (максимальную) дату для каждого товара с помощью формулы массива =МАКС((Таблица1[товар]=E8)*Таблица1[дата])

3) наконец, выводим актуальную цену =СУММЕСЛИМН(Таблица1[цена];Таблица1[товар];E8;Таблица1[дата];F8)

Для товара не должно быть повторов дат, иначе цены будут суммироваться (если повторяется последняя дата).

На чтение 21 мин. Просмотров 310 Опубликовано 21.02.2021

Я пытаюсь создать подтаблицу из другой таблицы со всеми полями фамилий, отсортированными от A до Z, в которых есть поле номера телефона, которое не равно нулю. Я мог бы сделать это довольно легко с SQL, но я понятия не имею, как выполнить SQL-запрос в Excel. У меня возникает соблазн импортировать данные в postgresql и просто запросить их там, но это кажется немного чрезмерным.

Для того, что я пытаюсь сделать, SQL-запрос SELECT lastname, firstname, phonenumber WHERE phonenumber IS NOT NULL ORDER BY lastname сделает свое дело. Это кажется слишком простым для того, чтобы быть чем-то, что Excel не может делать изначально. Как я могу выполнить такой SQL-запрос из Excel?


Есть много прекрасных способов сделать это, которые уже предлагали другие. Следуя пункту «получить данные Excel через дорожку SQL», вот несколько указателей.

  1. В Excel есть «Мастер подключения данных», который позволяет импортировать или ссылку из другого источника данных или даже в том же файле Excel.

  2. В составе Microsoft Office (и ОС) есть два интересных поставщика: старый ” Microsoft.Jet.OLEDB »и последний« Microsoft.ACE.OLEDB ». Ищите их при настройке соединения (например, с помощью мастера подключения к данным).

  3. После подключения к книге Excel рабочий лист или диапазон являются эквивалентом таблицы или представления. Имя таблицы рабочего листа – это имя рабочего листа со знаком доллара («$»), добавленным к нему и заключенным в квадратные скобки («[» и «]»); диапазона, это просто имя диапазона. Чтобы указать безымянный диапазон ячеек в качестве источника записей, добавьте стандартную нотацию строк/столбцов Excel в конец имени листа в квадратных скобках.

  4. Собственный SQL будет (более или менее) SQL Microsoft Access. (В прошлом он назывался JET SQL; однако Access SQL эволюционировал, и я считаю, что JET устарел, старая технология.)

  5. Пример, чтение рабочего листа : SELECT * FROM [Sheet1 $]

  6. Пример чтения диапазона: SELECT * FROM MyRange

  7. Пример, чтение безымянного диапазона ячеек: SELECT * FROM [Sheet1 $ A1: B10]

  8. Существует много-много книг и веб-сайтов, которые помогут вам разобраться в деталях.

=== Дополнительные примечания ===

По умолчанию предполагается, что первая строка вашего источника данных Excel содержит заголовки столбцов, которые можно использовать в качестве имен полей. Если это не так, необходимо отключить этот параметр, иначе первая строка данных «исчезнет» и будет использоваться в качестве имен полей. Это делается путем добавления необязательного параметра HDR = в Расширенные свойства строки подключения. По умолчанию, указывать его необязательно: HDR = Yes .. Если у вас нет заголовков столбцов, вам необходимо указать HDR = No ; поставщик называет ваши поля F1, F2 и т. д.

Предупреждение об указании листов: поставщик предполагает, что ваша таблица данных начинается с самой верхней, самой левой непустой ячейки на указанный рабочий лист. Другими словами, ваша таблица данных может без проблем начинаться в строке 3, столбце C. Однако вы не можете, например, ввести заголовок листа вверху и слева от данных в ячейке A1.

Предупреждение об указании диапазонов: когда вы указываете лист в качестве источника записей, поставщик добавляет новые записи под существующими записями на листе, если позволяет пространство. Когда вы указываете диапазон (именованный или безымянный), Jet также добавляет новые записи под существующими записями в диапазоне, если позволяет пространство. Однако, если вы запросите исходный диапазон, полученный набор записей не будет включать вновь добавленные записи вне диапазона.

Типы данных (стоит попробовать) для C REATE TABLE: Short , Long, Single, Double, Currency, DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal .

Подключение к “старой технологии” Excel ( файлы с расширением xls): Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C: MyFolder MyWorkbook.xls; Extended Properties = Excel 8.0; . Используйте исходную базу данных Excel 5.0 для книг Microsoft Excel 5.0 и 7.0 (95) и используйте исходную базу данных Excel 8.0 для книг Microsoft Excel 8.0 (97), 9.0 (2000) и 10.0 (2002).

Подключение к “последней” версии Excel (файлы с расширением xlsx): Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Excel2007file.xlsx; Extended Properties = "Excel 12.0 Xml; HDR = ДА; "

Обработка данных как текста: настройка IMEX обрабатывает все данные как текст. Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Excel2007file.xlsx; Extended Properties = "Excel 12.0 Xml; HDR = YES; IMEX = 1";

(Подробнее на http://www.connectionstrings.com/excel)

Дополнительная информация на http://msdn.microsoft.com/en-US/library/ms141683(v= sql.90) .aspx и по адресу http://support.microsoft.com/kb/316934

Подключение к Excel через ADODB через VBA, подробное описание см. на http://support.microsoft.com/ kb/257819

Microsoft JET 4 подробности на http://support.microsoft.com/kb/275561


tl; dr; Все это делает Excel изначально – используйте фильтры и/или таблицы

(http://office.microsoft.com/en-gb/excel-help/filter-data-in- an-excel-table-HA102840028.aspx)

Вы можете открывать Excel программно через соединение oledb и выполнять SQL для таблиц на рабочем листе.

Но вы можете делайте все, что вы просите, без формул, только фильтры.

  1. щелкните в любом месте данных , на которые вы смотрите
  2. , перейдите к данным на полоса ленты
  3. выберите «Фильтр» , она примерно посередине и выглядит как воронка
    • теперь есть стрелки на стороне каждой ячейки в первой строке таблицы.
  4. щелкните стрелку на номере телефона и де- выберите пробелы (последний вариант)
  5. щелкните стрелку на фамилии и выберите порядок z (верхний вариант)

поиграйте … кое-что на заметку:

  1. вы можете выбрать отфильтрованные строки и вставить их в другое место
  2. в строке состояния слева вы увидите, сколько строк соответствует критериям фильтрации из общего количества строк. (например, 308 из 313 найденных записей)
  3. вы можете фильтровать по цвету в excel 2010 на палатах
  4. Иногда я создаю вычисляемые столбцы, которые показывают статусы или очищенные версии данных, которые вы затем можно фильтровать или сортировать по тезисам. (например, как формулы в других ответах)

ДЕЛАЙТЕ это с фильтрами, если вы не собираетесь делать это много или вы хотите автоматизировать импорт данных где-то или что-то в этом роде .. но для полнота:

Вариант c #:

  OleDbConnection ExcelFile = new OleDbConnection (String.Format ("Provider  = Microsoft.ACE.OLEDB.12.0; Источник данных = {0}; Расширенные свойства =  "Excel 12.0; HDR = ДА " ", имя файла));  ExcelFile.Open ();  

удобное место для начала – взглянуть на схему, поскольку там может быть больше, чем вы думаете:

  List  excelSheets = new List  ();//Добавляем имя листа в строковый array.foreach (строка DataRow в dt.Rows) {string temp = row ["TABLE_NAME"]  .Нанизывать();  если (temp [temp.Length - 1] == '$') {excelSheets.Add (row ["TABLE_NAME"]. ToString ());  }}  

затем, когда вы хотите запросить лист:

  OleDbDataAdapter da = new OleDbDataAdapter ("выберите * из ["  + лист + "]", ExcelFile);  dt = новый DataTable ();  da.Fill (dt);  

ПРИМЕЧАНИЕ. Используйте таблицы в excel !:

Excel имеет “таблицы “функциональность, которая заставляет данные вести себя больше как таблица … это дает вам большие преимущества, но не позволит вам выполнять все типы запросов.

http://office.microsoft.com/en-gb/excel-help/overview-of-excel-tables-HA010048546.aspx

Для табличных данных в Excel это мой вариант по умолчанию. Первое, что я делаю, это нажимаю на данные, затем выбираю «форматировать как таблицу» в домашнем разделе на ленте. это дает вам фильтрацию и сортировку по умолчанию и позволяет вам получать доступ к таблице и полям по имени (например, table [fieldname]), это также позволяет агрегировать функции для столбцов, например. макс. и среднее

отредактировал 24 сен ’13 в 9:38

ответил 24 сен ’13 в 9:20

  • , если вы хотите уменьшить количество столбцов, я лично копирую отфильтрованные строки на новый лист и удаляю столбцы, которые мне не нужны. их можно было спрятать, но это того не стоит. – user359135, 24 сен. ’13 в 9:22

  • using System.Data.OleDb; using System.Data; – user359135, 24 сен., 24 сен., 13:25

  • Я фильтрую каждый день и C # для доступа электронные таблицы несколько раз в неделю. при использовании С # он, как правило, заключается в импорте данных в базу данных, чтобы действительно поиграть с ней .. для фактического запроса его фильтров или sql, когда данные находятся на сервере sql, на самом деле не стоит делать на промежуточном уровне sql to excel. – user359135, 24 сен. ’13 в 9:33

добавить комментарий |


tl; dr; Все это делает Excel изначально – используйте фильтры и/или таблицы

(http://office.microsoft.com/en-gb/excel-help/filter-data-in- an-excel-table-HA102840028.aspx)

Вы можете открывать Excel программно через соединение oledb и выполнять SQL для таблиц на рабочем листе.

Но вы можете делайте все, что вы просите, без формул, просто фильтров.

  1. щелкните в любом месте данных , на которые вы смотрите
  2. перейти к данным на панели ленты
  3. выбрать «Фильтр» примерно посередине и выглядит как воронка
    • теперь у вас будут стрелки на узкой стороне каждой ячейки в первой строке таблицы.
  4. щелкните стрелку на номере телефона и отмените выбор пробелов (последний вариант)
  5. щелкните стрелку на фамилии и выберите аз-порядок (верхний вариант)

поиграйте … кое-что на заметку:

  1. вы можете выберите отфильтрованные строки и вставьте их в другое место.
  2. в строке состояния слева вы увидите, сколько строк соответствует критериям фильтрации из общего числа строк. (например, 308 из 313 найденных записей)
  3. вы можете фильтровать по цвету в excel 2010 на палатах
  4. Иногда я создаю вычисляемые столбцы, которые показывают статусы или очищенные версии данных, которые вы затем можно фильтровать или сортировать по тезисам. (например, как формулы в других ответах)

СДЕЛАЙТЕ это с фильтрами, если вы не собираетесь делать это много или вы хотите автоматизировать импорт данных где-то или что-то в этом роде.. но для полноты:

Вариант c #:

  OleDbConnection ExcelFile = new OleDbConnection (String.Format (  "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Extended Properties = " Excel 12.0; HDR = YES  "", имя файла));  ExcelFile.Open ();  

удобное место для начала – взглянуть на схему, поскольку там может быть больше, чем вы думаете:

  List  excelSheets = new List  ();//Добавляем имя листа в строковый array.foreach (строка DataRow в dt.Rows) {string temp = row ["TABLE_NAME"]  .Нанизывать();  если (temp [temp.Length - 1] == '$') {excelSheets.Add (row ["TABLE_NAME"]. ToString ());  }}  

затем, когда вы хотите запросить лист:

  OleDbDataAdapter da = new OleDbDataAdapter ("выберите * из ["  + лист + "]", ExcelFile);  dt = новый DataTable ();  da.Fill (dt);  

ПРИМЕЧАНИЕ. Используйте таблицы в excel !:

Excel имеет “таблицы “функциональность, которая заставляет данные вести себя больше как таблица … это дает вам большие преимущества, но не позволит вам выполнять все типы запросов.

http://office.microsoft.com/en-gb/excel-help/overview-of-excel-tables-HA010048546.aspx

Для табличных данных в Excel это мой вариант по умолчанию. Первое, что я делаю, это нажимаю на данные, затем выбираю «форматировать как таблицу» в домашнем разделе на ленте. это дает вам фильтрацию и сортировку по умолчанию и позволяет вам получать доступ к таблице и полям по имени (например, table [fieldname]), это также позволяет агрегировать функции для столбцов, например. макс. и среднее


Вы можете сделать это изначально следующим образом:

  1. Выберите таблицу и используйте Excel, чтобы отсортировать ее по фамилии.
  2. Создайте критерии расширенного фильтра из 2 строк и 1 столбца, скажем, inE1 и E2, где E1 пусто, а E2 содержит формулу = C6 = "" , где C6 – первая ячейка данных столбца с телефонным номером.
  3. Выберите таблицу и используйте расширенный фильтр, скопируйте в диапазон, используя диапазон критериев в E1: E2 и укажите, куда вы хотите скопировать вывод в

Если вы хотите сделать это программно, я предлагаю вам использовать Macro Recorder для записи вышеуказанных шагов и посмотреть на код.

отредактировано 02 апр. ’14 в 17:52

wkschwartz

3,20611 золотых знаков2222 серебряных знака3333 бронзовых знака

ответил 17 сен ’13 в 18:47

  • Вопрос определяет SQL. – S Meaden 08 окт. ’18 в 8:27

добавить комментарий |


Вы можете сделать это изначально следующим образом:

  1. Выбрать таблицу и используйте Excel для сортировки ее по фамилии.
  2. Создайте критерии расширенного фильтра из 2 строк и 1 столбца, скажем, inE1 и E2, где E1 пусто, а E2 содержит формулу = C6 = "" , где C6 – первая ячейка данных столбца с телефонным номером.
  3. Выберите таблицу и используйте расширенный фильтр, скопируйте в диапазон, используя диапазон критериев в E1: E2 и укажите, куда вы хотите скопировать вывод

. Если вы хотите сделать это программно, я предлагаю вам использовать Macro Recorder для записи вышеуказанных шагов и просмотра кода.


Вы можете используйте SQL в Excel. Он только хорошо скрыт. См. Это руководство:

http://smallbusiness.chron.com/use-sql-statements-ms-excel-41193.html

ответ дан 24 сен ’13 в 12:50

  • Похоже, он использует SQL для выбора данных для импорта в Excel, но не запускать запросы к текущей таблице? – Рап, 14 сен 2016, 09:47

  • Вам просто нужно создать имена для каждой таблицы в Excel (в диспетчере имен) или просто выбрать таблицу и ввести имя в поле, где отображается адрес ячейки. Затем вы можете использовать его для запроса к рабочему листу. В запросе у вас есть полный адрес листа, поэтому, если вы переместите электронную таблицу в другое место на диске, запрос не будет работать – Петрик 5 октября 2017 г., 13:01

добавить комментарий |


Вы можете использовать SQL в Excel. Он только хорошо скрыт. См. Это руководство:

http://smallbusiness.chron.com/use-sql-statements-ms-excel-41193. html


Могу я предложить дать QueryStorm попробуйте – это плагин для Excel, который позволяет очень удобно использовать SQL в Excel.

Кроме того, это freemium. Если вас не интересует автозаполнение, волнистые линии ошибок и т. Д., Вы можете использовать его бесплатно. Просто скачайте и установите, и у вас будет поддержка SQL в Excel.

Отказ от ответственности: я автор.

отредактировано 12 декабря ’17 в 14:19

ответил 13 июня ’17 в 14: 05

  • К сожалению, хотя это отличный инструмент, теперь он, похоже, только платный, за исключением 30-дневной пробной версии. – Marc 14 марта ’19 в 15:31

добавить комментарий |


Могу я предложить попробовать QueryStorm – это плагин для Excel, который делает использование SQL в Excel весьма удобным.

Кроме того, это бесплатная версия. Если вас не интересует автозаполнение, волнистые линии ошибок и т. Д., Вы можете использовать его бесплатно. Просто скачайте и установите, и у вас будет поддержка SQL в Excel.

Отказ от ответственности: я автор.


Если вам нужно сделать это один раз, просто следуйте описаниям Чарльза, но это также можно сделать с помощью формул Excel и вспомогательных столбцов. на случай, если вы хотите сделать фильтр динамическим.

Предположим, ваши данные находятся в таблице DataSheet и начинаются в строке 2 следующих столбцов:

  • A: фамилия
  • B: имя
  • C: номер телефона

Вам нужны два вспомогательных столбца на этом листе .

  • D2: = if (A2 = "", 1, 0) , это столбец фильтра, соответствующий вашему условию where
  • E2: = if (D2 1, "", sumifs (D $ 2: D $ 1048576, A $ 2: A $ 1048576, ", это соответствует порядку

Скопируйте эти формулы по мере поступления ваших данных.

На листе, который должен отображать ваш результат, создайте следующие столбцы.

  • A: последовательность чисел, начинающаяся с 1 в строке 2, это ограничивает общее количество строк, которое вы можете получить (вроде как ограничение в дальнейшем)
  • B2: = match (A2, DataSheet! $ E $ 2: $ E $ 1048576, 0) , это строка соответствующих данных
  • C2: = iferror (index (DataSheet! A $ 2: A $ 1048576, $ B2), "") , это фактические данные или пусто, если данных не существует

Скопируйте формулы в B2 и C2 и скопируйте столбец C в D и E.

ответил 21 сен ’13 в 18:38


Если вам нужно сделать это один раз, просто следуйте описаниям Чарльза, но это также можно сделать с формулами Excel и вспомогательными столбцами в если вы хотите сделать фильтр динамическим.

Предположим, ваши данные находятся в таблице данных и начинаются со строки 2 следующих столбцов:

  • A: фамилия
  • B: имя
  • C: номер телефона

Вам нужны два вспомогательных столбца на этом листе.

  • D2: = if (A2 = "", 1, 0) , это столбец фильтра, соответствующий вашему условию where
  • E2: = if (D2 1, "", sumifs (D $ 2: D $ 1048576, A $ 2: A $ 1048576, ", это соответствует порядку, в котором

Скопируйте эти формулы по мере ваших данных.

На листе, который должен отображать ваш результат, создайте следующие столбцы.

  • A: последовательность чисел, начинающаяся с 1 в строке 2, это ограничивает общее количество строк, которые вы можете получить (вроде лим это в дальнейшем)
  • B2: = match (A2, DataSheet! $ E $ 2: $ E $ 1048576, 0) , это строка соответствующих данных
  • C2: = iferror (index (DataSheet! A $ 2: A $ 1048576, $ B2), "") , это фактические данные или пусто, если нет данные существуют

Скопируйте формулы в B2 и C2 и скопируйте столбец C в D и E.


Вы можете поэкспериментировать с собственным драйвером БД для Excel на языке/платформе по вашему выбору. В мире Java вы можете попробовать http://code.google.com/p/sqlsheet/, который предоставляет драйвер JDBC для непосредственной работы с листами Excel. Аналогичным образом можно получить драйверы для технологии БД для других платформ.

Однако я могу гарантировать, что вы скоро столкнетесь с проблемой количества функций, которые предоставляют эти библиотеки-оболочки. Лучше будет использовать Apache HSSF/POI или аналогичный уровень библиотеки, но для этого потребуется больше усилий по кодированию..

ответил 14 сен ’13 в 17:16


Вы можете поэкспериментировать с собственным драйвером БД для Excel на языке/платформе по вашему выбору. В мире Java вы можете попробовать http://code.google.com/p/sqlsheet/, который предоставляет драйвер JDBC для непосредственной работы с листами Excel. Аналогичным образом можно получить драйверы для технологии БД для других платформ.

Однако я могу гарантировать, что вы скоро столкнетесь с проблемой количества функций, которые предоставляют эти библиотеки-оболочки. Лучшим способом будет использовать Apache HSSF/POI или аналогичный уровень библиотеки, но для этого потребуется больше усилий по кодированию.


Возможно, я неправильно понял меня, но разве это не то, что делает сводная таблица? У вас есть данные в таблице или только в отфильтрованном списке? Если это не таблица, сделайте ее одной (ctrl + l), если это так, просто активируйте любую ячейку в таблице и вставьте сводную таблицу на другой лист. Затем добавьте столбцы фамилия, имя, номер телефона в раздел строк. Затем добавьте номер телефона в раздел фильтра и отфильтруйте нулевые значения. Теперь выполните сортировку как обычно.

ответил 20 сен. ’13 в 23:47


Возможно, я неправильно понял меня, но разве это не то, что делает сводная таблица? У вас есть данные в таблице или только в отфильтрованном списке? Если это не таблица, сделайте ее одной (ctrl + l), если это так, просто активируйте любую ячейку в таблице и вставьте сводную таблицу на другой лист. Затем добавьте столбцы фамилия, имя, номер телефона в раздел строк. Затем добавьте номер телефона в раздел фильтра и отфильтруйте нулевые значения. Теперь выполните сортировку как обычно.


I Предлагаем вам взглянуть на механизм хранения CSV MySQL, который, по сути, позволяет вам загружать любой файл CSV (легко созданный из Excel) в базу данных, как только вы его получите, вы можете использовать любую команду SQL, которую хотите.

Стоит взглянуть на это.

ответил 24 сен ’13 в 1:44


Я предлагаю вам взглянуть на механизм хранения CSV MySQL, который, по сути, позволяет загружать любой файл CSV (легко создается из Excel) в базу данных, когда она у вас есть, вы можете использовать любую команду SQL, какую захотите.

Стоит взглянуть на нее.


Если у вас есть GDAL/OGR , скомпилированный с Библиотека Expat, вы можете использовать драйвер XLSX для чтения файлов .xlsx и запускать выражения SQL из командной строки. Например, из оболочки osgeo4w в том же каталоге, что и электронная таблица, используйте утилиту ogrinfo :

  ogrinfo -dialect sqlite -sql "  SELECT name, count (*) FROM sheet1 GROUP BY name "Book1.xlsx  

запустит запрос SQLite на sheet1 и выведет запрос результат в необычной форме:

  ИНФОРМАЦИЯ: Открытие `Book1.xlsx 'с использованием драйвера` XLSX' выполнено успешно. Имя слоя: SELECTGeometry: NoneFeature Count: 36Layer SRS WKT: (unknown  ) name: String (0.0) count (*): Integer (0.0) OGRFeature (SELECT): 0 name (String) = Red count (*) (Integer) = 849OGRFeature (SELECT): 1 name (String) = Green count (  *) (Целое число) = 265 ...  

Или выполните тот же запрос с помощью ogr2ogr , чтобы создать простой файл CSV:

  $ ogr2ogr -f CSV out.csv -dialect sqlite  -sql "ВЫБРАТЬ имя, количество (*) FROM sheet1 GROUP BY name" Book1.xlsx $ cat out.csvname, count (*  ) Красный, 849Зеленый, 265 ...  

Чтобы сделать то же самое со старыми файлами .xls, вы должны Мне нужен драйвер XLS, созданный на основе библиотеки FreeXL, что не очень распространено (например, не из OSGeo4w).


Если у вас есть GDAL/OGR , скомпилированный с библиотекой Expat, вы можете использовать XLSX драйвер для чтения файлов .xlsx и запуска выражений SQL из командной строки. Например, из оболочки osgeo4w в том же каталоге, что и электронная таблица, используйте утилиту ogrinfo :

  ogrinfo -dialect sqlite -sql "  ВЫБРАТЬ имя, количество (*) ИЗ листа1 ГРУППА ПО имени "Книга1. xlsx  

выполнит запрос SQLite на sheet1 и выдаст результат запроса в необычной форме:

   ИНФОРМАЦИЯ: Открытие `Book1.xlsx 'с использованием драйвера` XLSX' успешно. Имя слоя: SELECTGeometry: NoneFeature Count: 36Layer SRS WKT: (unknown) name: String (0.0) count (*): Integer (0.0  ) OGRFeature (SELECT): 0 name (String) = Red count (*) (Integer) = 849OGRFeature (SELECT): 1 name (String) = Green count (*) (Integer) = 265 ...  

Или выполните тот же запрос с помощью ogr2ogr , чтобы создать простой файл CSV:

  $ ogr2ogr -f CSV  out.csv -dialect sqlite  -sql "ВЫБРАТЬ имя, количество (*) ИЗ листа1 ГРУППА ПО имени" Book1.xlsx $ cat out.csvname, count (*) Красный, 849Зеленый, 265 ...  

Чтобы сделать то же самое со старыми файлами .xls, вам понадобится драйвер XLS, созданный на основе библиотеки FreeXL, которая не очень распространена (например, не из OSGeo4w).


Microsoft Access и LibreOffice Base могут открывать электронную таблицу в качестве источника и запускать по ней sql-запросы. Это был бы самый простой способ выполнять все виды запросов и избегать беспорядка, связанного с запуском макросов или написанием кода.

Excel также имеет автофильтры и сортировку данных, которые позволят выполнить множество простых запросов, подобных вашему пример. Если вам нужна помощь с этими функциями, Google станет лучшим источником руководств, чем я.

ответил 20 сентября ’13 в 0:52


Microsoft Access и LibreOffice Base могут открывать электронную таблицу в качестве источника и запускать по ней sql-запросы. Это был бы самый простой способ выполнять все виды запросов и избегать беспорядка, связанного с запуском макросов или написанием кода.

Excel также имеет автофильтры и сортировку данных, которые позволят выполнить множество простых запросов, подобных вашему пример. Если вам нужна помощь с этими функциями, Google станет лучшим источником руководств, чем я.



Выполнение SQL-запросов в Excel

Раньше я использовал запросы ODBC в Excel, но всегда с хранимыми процедурами на сервере. Теперь я хотел бы иметь возможность определять в Excel запросы SQL произвольной формы, которые извлекают данные из MS SQL Server. Я играл около 30 минут и искал в Google, как это сделать, но, похоже, ничего не нашел. Как мне создавать и отлаживать SQL-запросы в Excel?

Спасибо!


Привет, @ Dave7

Лучший способ получить данные с SQL Server – использовать Power Query в Excel, вы уже сталкивались с этим?


Спасибо, @Wyn Hopkins. Я должен был сказать, что да, я попал в Power Query, но не мог понять, как использовать его для написания простого SQL. Расширенный редактор, похоже, использует другой язык (очевидно, PowerQuery). Неужели просто невозможно написать простой SQL? Если это так, я уверен, что смогу разобраться в PowerQuery, хотя, если у вас есть хороший учебник, я все слышу.


@ Dave7

Power Query не является инструментом для генерации SQL-запросов, вы можете только встроить уже подготовил SQL-запрос в коннектор к базе данных SQL. Есть плюсы и минусы, но в основном последние. Если только производительность для относительно сложных запросов, поскольку SQL-запрос выполняется на сайте сервера, но даже в этом случае лучше создать представление непосредственно на SQL-сервере и подключиться к нему.

В Power Query большая часть задач может быть выполнена с помощью пользовательского интерфейса без написания кода на M-скрипте (внутренний язык Power Query). Запрос к базе данных SQL также может быть сгенерирован из пользовательского интерфейса.


Hi @ Dave7

При подключении к базе данных SQL у вас есть возможность написать здесь простой SQL …

Если вы используете интерфейс Power Query для выполнения преобразований, тогда, если это преобразование можно преобразовать в SQL, оно будет выполнено автоматически в фоновом режиме … Часто (но не всегда) вы можете увидеть, как это происходит, щелкнув правой кнопкой мыши по шагу и просмотр собственного запроса:

Примечание:

Вы можете повысить производительность, используя шаги Power Query и позволяя ему преобразовывать и «складывать» большую часть запроса обратно в SQL Server.

Написание собственного SQL-запроса с нуля прерывает «сворачивание запроса», и обработка данных будет выполняться на вашем компьютере.

например Фильтрация только для записей этого года – если она выполняется с помощью применения фильтра в Power Query, эта фильтрация будет возвращена, чтобы сервер выполнял ее быстрее.

Сборка данных со всех листов книги в одну таблицу

Постановка задачи

Допустим, что у нас есть книга с большим количеством листов, где на каждом листе находится таблица с данными по сделкам в этом городе:

Исходный файл

Давайте будем исходить из следующих соображений:

  • Структура и столбцов на всех листах одинаковая.
  • Количество строк на всех листах разное.
  • Листы могут в будущем добавляться или удаляться.

Наша задача — собрать все данные со всех листов в одну таблицу, чтобы потом с ней работать (фильтровать, сортировать, построить сводную и т.д.) Сделать это можно разными способами, но самыми удобными будут, пожалуй, Power Query и макросы.

Способ 1. Сборка данных с листов с помощью Power Query

Если вы ещё не сталкивались в своей работе с Power Query, то очень советую копнуть в этом направлении. Использование этой бесплатной и уже встроенной по умолчанию в Excel надстройки, способно полностью перевернуть весь ваш процесс сбора и анализа данных, упростив всё в разы. С задачей сбора данных с листов Power Query справляется весьма успешно.

Шаг 1. Подключаемся к файлу

Для начала, создадим новый пустой файл в Excel, куда и будут собираться данные.

Если у вас Excel 2010-2013 и вы установили Power Query как отдельную надстройку, то откройте вкладку Power Query, если у вас Excel 2016 или новее, то вкладку Данные (Data). Нажмите кнопку Получить данные / Создать запрос — Из файла — Книга Excel (Get Data / New Query — From file — From Excel) и укажите наш файл с исходными листами:

Указываем файл

В появившемся окне Навигатора (Navigator) выберите слева любой лист и нажмите в правом нижнем углу кнопку Преобразовать данные (Transform Data) или Изменить (Edit):

Выбираем любой лист

Должно появиться окно редактора запросов Power Query, где отобразятся данные с выбранного листа. Поскольку нам нужен, на самом деле, не один лист, а все, то удалим в правой панели все шаги, кроме первого шага Источник (Source) используя крестик слева от названия шага:

Удаляем лишние шаги

То, что останется после удаления шагов — это список всех объектов, которые Power Query «видит» во внешних файлах, а это:

  • листы (Sheet)
  • «умные таблицы» (Table)
  • именованные диапазоны (Defined Name)
  • области печати (Print Area), которые, по сути, являются одним из видов именованного диапазона

Шаг 2. Отбираем нужные листы

В исходном файле может быть много всего лишнего, что нам не требуется собирать: случайные ненужные листы, служебные именованные диапазоны, побочные умные таблицы и т.п. Очень важно отфильтровать этот «информационный мусор», т.к. в будущем из-за любого подобного объекта наш запорс будет, скорее всего, вылетать с ошибкой или некорректно собирать данные. Для решения этой задачи можно использовать несколько подходов.

Во-первых, легко можно отфильтровать нужные объекты по типу по столбцу Kind. Например, если вам нужны только листы:

Фильтруем листы

Во-вторых, если нам нужны только видимые листы, то дополнительно можно отфильтровать ещё по столбцу Hidden.

В-третьих, если вы точно знаете размер таблиц, которые вам нужны, то можно легко добавить к нашему списку вычисляемый столбец с формулой, выводящей количество столбцов или строк и использовать потом эти числа для отбора. Для этого выберем на вкладке Добавление столбца — Настраиваемый столбец (Add Column — Custom Column) и введём в открывшееся окно следующую формулу (с учётом регистра):

Подсчет числа столбцов

Для подсчёта количества строк можно использовать аналогичную функцию Table.RowCount. Получившийся столбец затем можно использовать для фильтрации «мусорных» таблиц.

В-четвёртых, можно извлечь с каждого листа содержимое любой ячейки (например, А1) и использовать его для отбора. Например, если там нет слова «Товар«, то это не наш лист. Для извлечения нужно будет также добавить вычисляемый столбец с такой конструкцией:

=[Data][Column1]{0}

Здесь:

  • [Data] — имя столбца, где в каждой ячейке лежат таблицы с содержимым каждого листа (убийственная формулировка для рядового пользователя Excel, да, я знаю)
  • [Column1] — имя столбца на листе, из которого мы хотим извлечь данные
  • {0} — номер строки (считая с нуля), откуда мы хотим взять данные

Извлекаем содержимое А1 с каждого листа

После фильтрации «мусора» все добавленные вспомогательные столбцы можно, конечно же, спокойно удалить, оставив только колонки Name и Data.

Шаг 3. Разворачиваем таблицы

Теперь развернём содержимое таблиц в одно целое, используя кнопку с двойными стрелками в заголовке столбца Data, отключив флажок Использовать исходное имя столбца как префикс (Use original column name as prefix):

Разворачиваем вложенные таблицы

После нажатия на ОК Power Query соберёт для нас все данные в одну мегатаблицу со всех отобранных листов нашего файла:

Собранные данные

Останется лишь «навести блеск», а именно:

  1. Поднять первую строку в шапку таблицы кнопкой Использовать первую строку в качестве заголовков (Use first row as headers) на вкладке Главная (Home).
  2. Переименовать первый столбец в Город двойным щелчком на заголовку.
  3. Удалить повторяющиеся шапки таблиц, попавшие в одну кучу вместе с данными, используя фильтр по столбцу Товар.

Всё. Осталось только дать нашему запросу подходящее имя (например, Сборка) в панели справа и выгрузить затем собранные данные обратно в Excel кнопкой Закрыть и загрузить на вкладке Главная (Home — Close & Load):

Собранные данные

В будущем, при любых изменениях в исходном файле достаточно будет лишь обновить наш запрос, щелкнув по собранной таблице правой кнопкой мыши и выбрав команду Обновить (Refresh) или такой же кнопкой на вкладке Данные (Data) или сочетанием клавиш Ctrl+Alt+F5.

Плюсы такого подхода:

  • Не нужно уметь программировать, всё делается быстро и почти без использования клавиатуры.
  • Последовательность столбцов на разных листах может быть различной — это не играет роли, столбцы правильно встанут друг под друга в итоговой сборке.
  • Можно быстро обновлять запрос при изменении исходных данных.

Минусы этого способа:

  • Собираются только значения, т.е. формулы с исходных листов не сохраняются.
  • Названия столбцов должны на всех листах совпадать с точностью до регистра.
  • Нельзя выбрать какой именно диапазон берётся с каждого листа — это определяется автоматически (берётся всё, что есть).
  • Для обновления нужен Excel 2016 или новее или установленная надстройка Power Query.

Способ 2. Сборка данных с листов макросом на VBA

Похожего результата можно добиться и с помощью более «классического» подохода — макросом на VBA. Для этого на вкладке Разработчик (Developer) нажмите кнпоку Visual Basic или воспользуйтесь сочетанием клавиш Alt+F11. В открывшемся окне добавьте новый модуль через меню Insert — Module и скопируйте туда текст вот такого макроса:

Sub CollectDataFromAllSheets()
    Dim ws As Worksheet
    
    Set wbCurrent = ActiveWorkbook
    Workbooks.Add
    Set wbReport = ActiveWorkbook
    
    'копируем на итоговый лист шапку таблицы из первого листа
    wbCurrent.Worksheets(1).Range("A1:D1").Copy Destination:=wbReport.Worksheets(1).Range("A1")
    
    'проходим в цикле по всем листам исходного файла
    For Each ws In wbCurrent.Worksheets
    
        'определяем номер последней строки на текущем листе и на листе сборки
        n = wbReport.Worksheets(1).Range("A1").CurrentRegion.Rows.Count
        
        'задаем исходный диапазон, который надо скопировать с каждого листа - любой вариант на выбор:
        Set rngData = ws.Range("A1:D5")            'фиксированный диапазон или
        Set rngData = ws.UsedRange                 'всё, что есть на листе или
        Set rngData = ws.Range("F5").CurrentRegion    'область, начиная от ячейки F5 или
        Set rngData = ws.Range("A2", ws.Range("A2").SpecialCells(xlCellTypeLastCell))    'от А2 и до конца листа
        
        'копируем исходный диапазон и вставляем в итоговую книгу со следующей строки
        rngData.Copy Destination:=wbReport.Worksheets(1).Cells(n + 1, 1)
        
    Next ws
End Sub

Запустить созданный макрос можно на вкладке Разработчик кнопкой Макросы (Developer — Macros) или с помощью сочетания клавиш Alt+F8. Макрос автоматически создаст новую книгу и скопирует туда нужные вам данные.

Плюсы такого подхода:

  • Формулы с исходных листов сохраняются в сборке.
  • Имена столбцов не играют роли.
  • Макрос будет работать в любой версии Excel.
  • Можно выбирать, что именно брать с каждого листа (конкретный фиксированный диапазон или весь лист).

Минусы этого способа:

  • Последовательность столбцов на всех листах должна быть одинаковой, т.к. происходит, по сути, тупое копирование таблиц друг-под-друга.
  • Защита от макросов должна быть отключена.
  • Быстрого обновления, как это было с Power Query, здесь, к сожалению, не будет. При изменении исходных данных придётся запустить макрос повторно.

Способ 3. Готовый макрос из надстройки PLEX

Если лень возиться с макросами или Power Query, то можно пойти по пути наименьшего сопротивления — использовать готовый макрос (кнопка Собрать) из моей надстройки PLEX для Excel. Это, может, и не спортивно, но зато эффективно:

Сборка данных с листов через PLEX

В общем, выбирайте любой удобный вам вариант и действуйте. Выбор — это всегда хорошо.

Ссылки по теме

  • Что такое Power Query и с чем его едят.
  • Как создавать свои макросы, использовать чужие и запускать их в своих файлах.
  • Сборка данных из нескольких файлов с помощью Power Query.

Как обратится по порядковому номеру листа

Ghenek

Дата: Вторник, 13.06.2017, 12:35 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Здравствуйте. Подскажите как присвоить ячейке значение ячейки из другого листа обратившись к листу по порядковому номеру (без использования макросов)?

 

Ответить

Michael_S

Дата: Вторник, 13.06.2017, 12:42 |
Сообщение № 2

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016

без макросов — никак.

 

Ответить

Nic70y

Дата: Вторник, 13.06.2017, 12:52 |
Сообщение № 3

Группа: Друзья

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

Замечаний:
0% ±


Excel 2010

листы то как именуются?
как попало?
можно ли составить список листов вручную?
и еще куча вопросов.


ЮMoney 41001841029809

 

Ответить

Ghenek

Дата: Вторник, 13.06.2017, 12:59 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Смысл в следующем, мне дают таблицы, первые листы всегда называется по разному, но их структура всегда одинаковая.

Я хотел бы создать вторую страницу и на ней сделать необходимые мне вычисления.
А потом в следующих файлах просто вставлять эту вторую страницу.

 

Ответить

китин

Дата: Вторник, 13.06.2017, 13:01 |
Сообщение № 5

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Nic70y

Дата: Вторник, 13.06.2017, 13:08 |
Сообщение № 6

Группа: Друзья

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

Замечаний:
0% ±


Excel 2010

тода без макросов низя


ЮMoney 41001841029809

 

Ответить

Ghenek

Дата: Вторник, 13.06.2017, 13:17 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Как вариант, может пройдёт такой фокус если я заранее переименую первую страницу в тоже название что и в исходнике?

 

Ответить

AlexM

Дата: Вторник, 13.06.2017, 13:43 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Макрофункцией можно.

К сообщению приложен файл:

___.xls
(24.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

sboy

Дата: Вторник, 13.06.2017, 13:48 |
Сообщение № 9

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Добрый день.
можно с помощью макрофункции

Код

=ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1)

применить формулу для обращения к первому листу в книге

Код

=ДВССЫЛ(СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(ИНДЕКС(листы;1);»]»;ПОВТОР(» «;99));99))&»!»&ЯЧЕЙКА(«адрес»;C1))

К сообщению приложен файл:

1476172.xlsm
(10.2 Kb)


Яндекс: 410016850021169

 

Ответить

Nic70y

Дата: Вторник, 13.06.2017, 14:21 |
Сообщение № 10

Группа: Друзья

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

Замечаний:
0% ±


Excel 2010

Код

=ДВССЫЛ(«‘»&ИНДЕКС(листы;1)&»‘!»&АДРЕС(СТРОКА();3))


ЮMoney 41001841029809

 

Ответить

sboy

Дата: Вторник, 13.06.2017, 14:52 |
Сообщение № 11

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Nic70y, О! точно, можно же не обрезать название файла, только добавить столбец относительный!

Код

=ДВССЫЛ(«‘»&ИНДЕКС(листы;1)&»‘!»&АДРЕС(СТРОКА();СТОЛБЕЦ()))


Яндекс: 410016850021169

 

Ответить

zs

Дата: Вторник, 13.06.2017, 20:02 |
Сообщение № 12

Группа: Заблокированные

Ранг: Участник

Сообщений: 87


Репутация:

-19

±

Замечаний:
100% ±


Excel 2003

Код

=ДВССЫЛ(АДРЕС(2;4;4;1;B2);ИСТИНА)

где В2 название листа из выпадающего списка листов

 

Ответить

Ghenek

Дата: Суббота, 17.06.2017, 12:31 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Я в шоке. Такие громадные формулы, толщиной по 20-30 символов…
Как вы всём этом разбираетесь =).

Спасибо большое!

 

Ответить

AndreTM

Дата: Суббота, 17.06.2017, 13:16 |
Сообщение № 14

Группа: Друзья

Ранг: Старожил

Сообщений: 1762


Репутация:

498

±

Замечаний:
0% ±


2003 & 2010

Такие громадные формулы, толщиной по 20-30 символов…

Разве это много?

Вот это вот — «много»

Такие громадные формулы, толщиной по 20-30 символов…

Разве это много?

Вот это вот — «много» :)

Код

=ПОДСТАВИТЬ(ПРОПНАЧ(ИНДЕКС(n_4;ПСТР(ТЕКСТ(A3;n0);1;1)+1)&ИНДЕКС(n0x;ПСТР(ТЕКСТ(A3;n0);2;1)+1;ПСТР(ТЕКСТ(A3;n0);3;1)+1)&ЕСЛИ(-ПСТР(ТЕКСТ(A3;n0);1;3);»миллиард»&ВПР(ПСТР(ТЕКСТ(A3;n0);3;1)*И(ПСТР(ТЕКСТ(A3;n0);2;1)-1);мил;2);»»)&ИНДЕКС(n_4;ПСТР(ТЕКСТ(A3;n0);4;1)+1)&ИНДЕКС(n0x;ПСТР(ТЕКСТ(A3;n0);5;1)+1;ПСТР(ТЕКСТ(A3;n0);6;1)+1)&ЕСЛИ(-ПСТР(ТЕКСТ(A3;n0);4;3);»миллион»&ВПР(ПСТР(ТЕКСТ(A3;n0);6;1)*И(ПСТР(ТЕКСТ(A3;n0);5;1)-1);мил;2);»»)&ИНДЕКС(n_4;ПСТР(ТЕКСТ(A3;n0);7;1)+1)&ИНДЕКС(n1x;ПСТР(ТЕКСТ(A3;n0);8;1)+1;ПСТР(ТЕКСТ(A3;n0);9;1)+1)&ЕСЛИ(-ПСТР(ТЕКСТ(A3;n0);7;3);ВПР(ПСТР(ТЕКСТ(A3;n0);9;1)*И(ПСТР(ТЕКСТ(A3;n0);8;1)-1);тыс;2);»»)&ИНДЕКС(n_4;ПСТР(ТЕКСТ(A3;n0);10;1)+1)&ИНДЕКС(n0x;ПСТР(ТЕКСТ(A3;n0);11;1)+1;ПСТР(ТЕКСТ(A3;n0);12;1)+1));»z»;» «)&ЕСЛИ(ОТБР(ТЕКСТ(A3;n0));»»;»Ноль «)&»рубл»&ВПР(ОСТАТ(МАКС(ОСТАТ(ПСТР(ТЕКСТ(A3;n0);11;2)-11;100);9);10);{0;»ь «:1;»я «:4;»ей «};2)&ПРАВСИМВ(ТЕКСТ(A3;n0);2)&» копе»&ВПР(ОСТАТ(МАКС(ОСТАТ(ПРАВСИМВ(ТЕКСТ(A3;n0);2)-11;100);9);10);{0;»йка»:1;»йки»:4;»ек»};2)

Причем формула вполне себе востребованная


Skype: andre.tm.007
Donate: Qiwi: 9517375010

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Запрос к нескольким таблицам excel
  • Запрос данных в excel power query
  • Запрос в базу данных для excel
  • Запрос в excel с кнопкой
  • Запрос в excel с другого листа