Excel как закрыть запрос

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

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше

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

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

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

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

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

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

Стандартный Excel Обычное представление редактора Power Query

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

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

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

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

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

  1. Импорт некоторых данных. Дополнительные сведения см. в том, как импортировать данные из внешних источников.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  6. Завершив внесение изменений в редакторе 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 не меняет результаты запроса на месте или в данных модели данных и примечаниях.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Справка по Power Query для Excel

Управление запросами в Excel

Нужна дополнительная помощь?

Работа с диалогами

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

  • сообщить пользователю о выполнении кода;
  • получить от пользователя подтверждение на выполнение того или иного действия;
  • запросить какие-то данные(число, текст для поиска, диапазон поиска и т.п.).

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

Из основных можно выделить три типа:
MsgBox — окно информирования пользователя с возможностью запроса действия (Да, Нет, Отмена и т.п.);
InputBox — окно запроса текстовой информации от пользователя (текст для поиска, дата, число и т.п.);
Application.InputBox — чуть более расширенная версия InputBox с возможностью указания не только текста и чисел, но и выделения диапазона ячеек (например для указания ячеек, в которых осуществлять поиск значения или которые необходимо закрасить).

ИНФОРМАЦИОННЫЙ ДИАЛОГ MSGBOX

Самый простой тип. Используется для информирования пользователя. Как правило применяется по окончании выполнения кода:
MsgBox Promt, [Buttons], [Title], [HelpFile], [Context]
Обязательным к указанию является только первый параметр — Promt , в котором указывается непосредственно сообщение для вывода:

MsgBox «Обработка завершена»

Все остальные параметры указывать не обязательно, но их использование несколько расширяет возможности данного диалогового окна.
Buttons — указывается тип выводимых кнопок и стиль окна. По умолчанию применяется vbOKOnly — одна только кнопка Ок:

‘показываем окно с кнопкой по умолчанию и типом важного сообщения MsgBox «Обработка завершена», vbCritical

Значение Числовая константа Описание
vbOKOnly 0 Отображает только кнопку OK
vbOKCancel 1 Отображает кнопки ОК и Отмена
vbAbortRetryIgnore 2 Отображает кнопки Прервать, Повтор и Пропустить
vbYesNoCancel 3 Отображает кнопки Да, Нет и Отмена
vbYesNo 4 Отображает кнопки Да и Нет
vbRetryCancel 5 Отображает кнопки Повтор и Отмена
vbCritical 16 Отображает значок важного сообщения
vbQuestion 32 Отображает значок важного запроса
vbExclamation 48 Отображает значок предупреждающего сообщения
vbInformation 64 Отображает значок информационного сообщения
vbDefaultButton1 0 По умолчанию выделена первая кнопка
vbDefaultButton2 256 По умолчанию выделена вторая кнопка
vbDefaultButton3 512 По умолчанию выделена третья кнопка
vbDefaultButton4 768 По умолчанию выделена четвертая кнопка
vbApplicationModal 4098 Все приложения приостанавливают свою работу до момента, пока пользователь ответит на запрос в окне сообщения (работает не во всех случаях)
vbMsgBoxHelpButton 16384 Показываются кнопки Ок и Help

Константы Buttons могут быть объединены между собой. Ниже приведен код, который показывает диалоговое окно с возможностью выбора одного из трех вариантов — Прервать, Повтор, Пропустить:

‘————————————————————————————— ‘ Procedure : test ‘ DateTime : 19.10.2014 19:24 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ WebMoney — R298726502453; Яндекс.Деньги — 41001332272872 ‘ http://www.excel-vba.ru ‘ Purpose : Процедура показывает диалоговое окно с возможностью выбора одного из трех вариантов: ‘ Прервать, Повтор, Пропустить ‘ По умолчанию выделена кнопка Прервать, т.к. иное не указано ‘————————————————————————————— Sub test() Dim lRetVal As Long ‘для получения выбранного значения Retry_: lRetVal = MsgBox(«Обработка завершена», vbAbortRetryIgnore + vbQuestion) Select Case lRetVal Case vbAbort ‘3/Прервать/Abort Exit Sub ‘выходим из процедуры Case vbRetry ‘4/Повтор/Retry GoTo Retry_ ‘переход на метку Retry_ Case vbIgnore ‘5/Пропустить/Ignore End Select End Sub

Следующий код показывает то же окно, но по умолчанию выделяет кнопку Пропустить

‘————————————————————————————— ‘ Procedure : test ‘ DateTime : 19.10.2014 19:24 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ WebMoney — R298726502453; Яндекс.Деньги — 41001332272872 ‘ http://www.excel-vba.ru ‘ Purpose : Процедура показывает диалоговое окно с возможностью выбора одного из трех вариантов: ‘ Прервать, Повтор, Пропустить ‘ По умолчанию выделена кнопка Пропустить(3-я по счету — значит vbDefaultButton3) ‘————————————————————————————— Sub test() Dim lRetVal As Long ‘для получения выбранного значения Retry_: lRetVal = MsgBox(«Обработка завершена», vbAbortRetryIgnore + vbQuestion + vbDefaultButton3) Select Case lRetVal Case vbAbort ‘3/Прервать/Abort Exit Sub ‘выходим из процедуры Case vbRetry ‘4/Повтор/Retry GoTo Retry_ ‘переход на метку Retry_ Case vbIgnore ‘5/Пропустить/Ignore End Select End Sub

Вместо текстового представления констант можно применить их числовые значения:

Sub test() Dim lRetVal As Long ‘для получения выбранного значения Retry_: lRetVal = MsgBox(«Обработка завершена», 2 + 32 + 512) Select Case lRetVal Case 3 ‘vbAbort Exit Sub ‘выходим из процедуры Case 4 ‘vbRetry GoTo Retry_ ‘переход на метку Retry_ Case 5 ‘vbIgnore End Select End Sub

Нетрудно после этого предположить, что можно указать просто сумму данных чисел:

MsgBox «Обработка завершена», 546

Доступные константы значений возврата:

Константа Значение Нажатая кнопка
vboK 1 ОК
vbCancel 2 Отмена
vbAbort 3 Прервать
vbRetry 4 Повтор
vblgnore 5 Пропустить
vbYes 6 Да
vbNo 7 Нет

Title — указывается текст заголовка окна. Например, можно указать либо что это ошибка, либо имя своего приложения:

MsgBox «Обработка завершена», vbOKOnly, «Мое приложение»

HelpFile — указывается имя файла-справки в формате HLP. Применяется, если параметр Buttons указан как vbMsgBoxHelpButton . Файл справки должен существовать.
Context — целое число. Указывается индекс страницы файла-справки, которую необходимо открыть. Указывается только если указан параметр HelpFile .

Небольшой практический пример применения простого диалогового окна MsgBox.
Цель процедуры(макроса): очистить все ячейки листа.
Согласитесь, что неплохо бы перед этим запросить у пользователя решение — он согласен с этим и это является обдуманным решением или случайностью?

‘————————————————————————————— ‘ Procedure : ClearRange ‘ DateTime : 19.10.2014 20:06 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ WebMoney — R298726502453; Яндекс.Деньги — 41001332272872 ‘ http://www.excel-vba.ru ‘ Purpose : ‘————————————————————————————— Sub ClearRange() Dim lRetVal As Long ‘для получения выбранного значения lRetVal = MsgBox(«Все данные выделенных ячеек будут удалены.» & _ Chr(10) & «Действительно хотите продолжить?», _ vbYesNo + vbQuestion, «Запрос на выполнение») If lRetVal = vbNo Then Exit Sub ‘выходим из процедуры без выполнения End If Selection.Clear End Sub

Так же на странице Полезные программы для Excel и VBA можно найти программу MsgBox Generator , которая просто и наглядно формирует коды показа MsgBox.

MsgBox, автоматически закрываемый по истечении указанного времени
Диалог MsgBox удобен, если надо проинформировать пользователя о каких-то событиях или предоставить ему выбор Да или Нет. Но в тоже время есть один недостаток: этот диалог не закроется, пока пользователь не нажмет хоть какую-то кнопку. Но бывает необходимо просто проинформировать и закрыть окно независимо от реакции пользователя. Показали окно, подождали секунд 5-7 и даже если пользователь ничего не нажал — закрыли окно и продолжили выполнение кода. Стандартно такой опции в MsgBox нет. Однако можно использовать функции API(это встроенные в ОС Windows функции, которые можно вызывать из любого языка программирования).
Код такого диалога:

Declare Function MessageBoxTimeOut Lib «User32» Alias «MessageBoxTimeoutA» _ (ByVal hwnd As Long, ByVal lpText As String, _ ByVal lpCaption As String, ByVal uType As VbMsgBoxStyle, _ ByVal wLanguageId As Long, ByVal dwMilliseconds As Long) As Long Sub AutoCloseMsgBox() Const lSeconds As Long = 5 MessageBoxTimeOut 0, «Отчет сформирован. Это окно закроется автоматически через 5 секунд», «www.excel-vba.ru», _ vbInformation + vbOKOnly, 0&, lSeconds * 1000 End Sub

Основную роль здесь играет строка:

Declare Function MessageBoxTimeOut Lib «User32» Alias «MessageBoxTimeoutA» _ (ByVal hwnd As Long, ByVal lpText As String, _ ByVal lpCaption As String, ByVal uType As VbMsgBoxStyle, _ ByVal wLanguageId As Long, ByVal dwMilliseconds As Long) As Long

это и есть сама функция, создающая MsgBox.
Главное: эта строка должна располагаться в самом верху стандартного модуля(в области объявлений, перед всеми процедурами и функциями).

Так же следует помнить, что это функция API и в некоторых версиях Excel именно в таком виде может не работать — вся строка будет подсвечена красным. Если проявился такой эффект, то можно просто добавить ключевое слово PtrSafe, отвечающее за совместимость функции с 64-битными ОС:

Declare PtrSafe Function MessageBoxTimeOut Lib «User32» Alias «MessageBoxTimeoutA» _ (ByVal hwnd As Long, ByVal lpText As String, _ ByVal lpCaption As String, ByVal uType As VbMsgBoxStyle, _ ByVal wLanguageId As Long, ByVal dwMilliseconds As Long) As Long

Помимо очевидного текста сообщения и заголовка, который можно заменить на свой, главное внимание уделим константе lSeconds . Она отвечает за количество секунд показа сообщения. В примере выше сообщение будет показано на 5 секунд, после чего закроется само собой, если ранее не была нажата кнопка Ок.
Если необходимо показать сообщение на 10 секунд, то надо лишь заменить 5 на 10:
Const lSeconds As Long = 10
Параметр uType работает точно так же, как параметр Buttons у стандартного MsgBox. Т.е. можно комбинировать различные виды кнопок и использовать этот MsgBox как стандартный, но при этом закрыть его автоматически, если пользователь случайно «уснул» или ему лень/некогда что-то нажимать:

Sub AutoCloseMsgBox() Const lSeconds As Long = 10 Dim retval retval = MessageBoxTimeOut(0, «Файлы обработаны. Вывести список?» & vbNewLine & _ «Если действие не будет выбрано окно закроется через 10 секунд», «www.excel-vba.ru», _ vbInformation + vbYesNo, 0&, lSeconds * 1000) If retval = 6 Then ‘была нажата кнопка Да(Yes) ‘выводим отчет Else ‘была нажата кнопка Нет(No) или окно закрылось само ‘другое действие End If End Sub

ДИАЛОГ ВВОДА ИНФОРМАЦИИ ПОЛЬЗОВАТЕЛЕМ — INPUTBOX
InputBox позволяет запросить от пользователя любую текстовую информацию.

InputBox Promt, [Title], [DefaultValue], [XPos], [YPos], [HelpFile], [Context]
Так же как и с MsgBox обязательным аргументом для указания является только Promt — это тот текст, который будет расположен непосредственно на самой форме диалога. Как правило это пояснение, что должен ввести пользователь.

Dim vRetVal ‘для получения выбранного значения vRetVal = InputBox(«Укажите значение для поиска:», «Запрос данных», «») If vRetVal = «» Then Exit Sub ‘завершаем процедуру, если строка пуста

Title — текст, отображаемый в заголовке окна. В приведенном выше примере это «Запрос данных».
DefaultValue — значение, которое будет показано в поле ввода до указания значения пользователем. Как правило оно указывается в случаях, когда требуемое значение изменяется редко по запросу пользователя, но возможность такую оставить все же требуется.
Пример: необходимо по нажатию кнопки удалять всегда столбец 5. Но иногда столбец в отчете смещается и требуется запрашивать у пользователя реальный номер столбца:

Sub DelCols() Dim vRetVal ‘для получения выбранного значения vRetVal = InputBox(«Укажите номер столбца для удаления(целое число):», «Запрос данных», 5) ‘используем Val для преобразования текста vRetVal в число ‘Val() преобразует число как текст в число. ‘Если указан текст(например «третий») — он будет преобразован в 0 vRetVal = Val(vRetVal) If Val(vRetVal) = 0 Then MsgBox «Номер столбца должен быть целым числом больше нуля!», vbCritical, «DelCols» Exit Sub End If Columns(vRetVal).Delete End Sub

Важно знать: InputBox всегда возвращает только текст. Даже если указать — 5 — он вернет «5». В некоторых случаях это может привести к ошибке типов данных, поэтому я привел выше один из примеров преобразования типов данных к нужному.
Так же по прошествии какого-то времени появится вопрос, как отследить нажатие кнопки Отмена. Ведь ориентир на vRetVal = «» не всегда верен, иногда надо принять пустое значение(в случаях, скажем, замены значений) и отследить именно нажатие Отмена. Сделать это можно так:

vRetVal = InputBox(«Укажите номер столбца для удаления(целое число):», «Запрос данных», «») If StrPtr(vRetVal) = 0 Then MsgBox «Нажата кнопка Отмена. Процедура прервана», vbCritical, «DelCols» Exit Sub End If

Больше всего вопросов здесь явно вызовет StrPtr . Эта специальная функция VBA, которая указывает, что переданы некие строковые данные. Если никаких данных не передавалось(а в случае с нажатием кнопки Отмена так и есть) указатель вернет 0. Если какие-то данные были переданы или нажата кнопка Ок(автоматом будет передана строка нулевой длины) — указатель StrPtr вернет значение отличное от нуля.

XPos — положение окна InputBox в твипах по горизонтали относительно левого края экрана. Следует учитывать, что именно относительно экрана, а не окна Excel.
YPos — положение окна InputBox в твипах по вертикали относительно верхнего края экрана.
HelpFile — указывается имя файла-справки в формате HLP. В отличие от MsgBox указание файла допускается при любых значениях. При этом к уже имеющимся в InputBox кнопкам добавляется еще одна — Help, которая и отвечает за вызов справки.
Context — целое число. Указывается индекс страницы файла-справки, которую необходимо открыть при нажатии кнопки Help. Указывается только если указан параметр HelpFile.

В дополнение приведу классический пример применения InputBox — выполнение процедуры только после введения пароля:

Sub ClearAllCells() Dim vRetVal vRetVal = InputBox(«Введите пароль:», «Авторизация», «») If StrPtr(vRetVal) = 0 Then ‘Нажата кнопка Отмена Exit Sub End If ‘если пароль неверный — завершаем процедуру без выполнения действий If vRetVal <> «1234» Then MsgBox «Введенный пароль неверный», vbCritical, «ClearAllCells» Exit Sub End If ‘будет выполнено только если введен правильный пароль — 1234 ‘полная очистка всех ячеек активного листа ActiveSheet.Cells.Clear End Sub

А вот еще один пример применения — запрос имени пользователя и запись его в лист LOG, чтобы можно было отследить кто и когда открывал файл. При этом если пользователь нажал Отмена, то книга закроется, а если не укажет имя пользователя — появится сообщение и заново запрос. И так до тех пор, пока имя пользователя не будет введено или не будет нажата кнопка Отмена:

Private Sub Workbook_Open() ‘ThisWorkbook — Обращение к книге с кодом ‘Но из модуля самой книги можно обращаться и проще — Me ThisWorkbook.Visible = False Dim user As String, lastrow As Long ‘цикл, пока не будут указаны данные пользователя Do While user = «» user = InputBox(«Введите имя пользователя:», «Авторизация», «») If StrPtr(user) = 0 Then MsgBox «Приложение будет закрыто», vbCritical, «Авторизация» ThisWorkbook.Close Exit Sub End If If user = «» Then MsgBox «Не указано имя пользователя!», vbCritical, «Авторизация» End If Loop With ThisWorkbook.Worksheets(«LOG») ‘получаем последнюю заполненную ячейку на листе «LOG» lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row ‘записываем имя пользователя .Cells(lastrow + 1, 1) = user ‘записываем время входа .Cells(lastrow + 1, 2) = Now End With End Sub

Что важно: этот код записывается в модуль ЭтаКнига(ThisWorkbook) и тогда при любом открытии книги будет появляться запрос на имя пользователя.

Так же некоторые примеры применения InputBox можно найти в статьях на сайте. Например:
Как удалить строки по условию?
Как массово изменить гиперссылки?

ДИАЛОГ ВВОДА ИНФОРМАЦИИ ПОЛЬЗОВАТЕЛЕМ — APPLICATION.INPUTBOX


В общем-то данный диалог мало отличается от обычного InputBox, за исключением типов возвращаемых данных. У данного диалога намного богаче функционал определения типов данных.

InputBox Promt, [Title], [DefaultValue], [Left], [Top], [HelpFile], [HelpContextID], [Type]
почти все параметры аналогичны таким же параметрам в InputBox.
Promt — текст, отображаемый на самой форме. Иначе говоря — сама суть показа диалога.
Title — текст, отображаемый в заголовке окна. В приведенном выше примере это «Запрос данных».
DefaultValue — значение, которое будет показано в поле ввода до указания значения пользователем.
Left — положение окна InputBox в поинтах по горизонтали относительно левого края экрана. В отличие от простого InputBox положение определяется на основании расположения самого окна Excel, а не экрана.
Top — положение окна InputBox в твипах по вертикали относительно верхнего края экрана.
HelpFile — указывается имя файла-справки в формате HLP. В отличие от MsgBox указание файла допускается при любых значениях. При этом к уже имеющимся в InputBox кнопкам добавляется еще одна — Help, которая и отвечает за вызов справки. Сам вызов справки осуществляется путем нажатия на иконку со знаком вопроса в заголовке диалога.
HelpContextID — целое число. Указывается индекс страницы файла-справки, которую необходимо открыть при нажатии кнопки Help. Указывается только если указан параметр HelpFile.
Type — целое число. Указывается одно из предустановленных значений, указывающих диалогу Application.InputBox тип данных, которые предполагается получить от пользователя. Ниже приведен листинг кода, демонстрирующий запрос данных всех типов с описанием ограничений и нюансов.

Dim vRetVal ‘для получения выбранного значения ‘запрос формулы — Type:=0 ‘возвращает либо произвольный текст, указанный в поле или ссылку на указанную ячейку в стиле R1C1 vRetVal = Application.InputBox(«Укажите формулу:», «Запрос данных», «», Type:=0) ‘запрос числа — Type:=1 ‘возвращает число. Не даст ввести текст, выдав сообщение об ошибке vRetVal = Application.InputBox(«Укажите любое число:», «Запрос данных», «», Type:=1) ‘запрос текст — Type:=2 ‘возвращает указанный текст. При указании числа оно будет в виде текста: 1=»1″ vRetVal = Application.InputBox(«Укажите любой текст:», «Запрос данных», «», Type:=2) ‘запрос логического значения True или False — Type:=4 ‘значение указывает в текущей локализации офиса ‘для русской это ИСТИНА или ЛОЖЬ ‘так же можно указать универсальные числовые константы — 1 или 0. 1 — ИСТИНА; 0 — ЛОЖЬ ‘Не даст ввести иные значения, выдав сообщение об ошибке ‘возвращает указанное логическое значение в английской локализации vRetVal = Application.InputBox(«Укажите ИСТИНА или ЛОЖЬ:», «Запрос данных», «», Type:=4) ‘запрос диапазона — Type:=8 ‘возвращает ссылку на диапазон ‘При получении такого значения обязательно следует использовать оператор Set ‘В противном случае вернет значение массива(Array), содержащего значения указанных ячеек ‘при указании через Set и нажатии Отмена будет ошибка VBA Set vRetVal = Application.InputBox(«Укажите диапазон для очистки ячеек:», «Запрос данных», «», Type:=8) ‘запрос значения ошибки #Н/Д — Type:=16 ‘всегда возвращает значение ошибки #Н/Д независимо от введенного значения vRetVal = Application.InputBox(«Укажите диапазон для очистки ячеек:», «Запрос данных», «», Type:=16) ‘запрос диапазона ячеек для создания массива — Type:=64 ‘возвращает массив ячеек с границами начала от 1(Option Base 1) ‘если указать всего одну ячейку vRetVal будет содержать значение этой ячейки, а не массив vRetVal = Application.InputBox(«Укажите диапазон для создания массива:», «Запрос данных», «», Type:=64)

Конечно, чаще всего используют Type:=8 , т.к. это избавляет от необходимости рисования своих форм и прочих заморочек для запроса указания диапазона от пользователя. Еще раз обращаю внимание, что для Type:=8 необходим ключевой оператор присвоения Set , т.к. в результате необходимо получить именно диапазон(т.е. объект). Ниже приведена процедура, которая запрашивает диапазон для очистки и корректно обрабатывает ситуацию при нажатии кнопки Отмена(т.е. не показывает никаких ошибок пользователю, а просто не выполняется). Стандартно при нажатии Отмена процедура завершается с ошибкой VBA вида Type Mismatch , что не очень грамотно с точки зрения взаимодействия с пользователем — он не должен видеть внутренние ошибки:

Источник


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

Фильтра

). Произведем отбор значений из исходной таблицы с помощью

формул массива

. В отличие от применения

Фильтра

(

CTRL+SHIFT+L

или Данные/ Сортировка и фильтр/ Фильтр ) отобранные строки будут помещены в отдельную таблицу.

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

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

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

Один критерий — число

).

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

Решить эту и последующие задачи можно легко с помощью

стандартного фильтра

. Для этого выделите заголовки Исходной таблицы и нажмите

CTRL+SHIFT+L

. Через выпадающий список у заголовка Цены выберите

Числовые фильтры…

, затем задайте необходимые условия фильтрации и нажмите ОК.

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

Другим подходом является использование

формул массива

. В отличие от

фильтра

отобранные строки будут помещены в отдельную таблицу — своеобразный

Отчет

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

Критерий (минимальную цену) разместим в ячейке

Е6

, таблицу для отфильтрованных данных — в диапазоне

D10:E19

.

Теперь выделим диапазон

D11:D19

(столбец Товар) и в

Строке формул

введем

формулу массива

:

=ИНДЕКС(A11:A19;НАИМЕНЬШИЙ(ЕСЛИ($E$6<=B11:B19;СТРОКА(B11:B19);»»);СТРОКА()-СТРОКА($B$10))-СТРОКА($B$10))

Вместо

ENTER

нажмите сочетание клавиш

CTRL+SHIFT+ENTER

(формула массива будет

возвращать несколько значений

).

Те же манипуляции произведем с диапазоном

E11:E19

(столбец Цена) куда и введем аналогичную

формулу массива

:

=ИНДЕКС(B11:B19;НАИМЕНЬШИЙ(ЕСЛИ($E$6<=B11:B19;СТРОКА(B11:B19);»»);СТРОКА()-СТРОКА($B$10))-СТРОКА($B$10))

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

Е6

.

Чтобы показать динамизм полученного Запроса на выборку, введем в

Е6

значение 55. В новую таблицу попадет только 2 записи.

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


Примечание

. Также для вывода отфильтрованных данных можно использовать

Расширенный фильтр

и

Сводные таблицы

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

Если Вам не удобно использовать

формулу массива

, которая возвращает несколько значений, то можно использовать другой подход, который рассмотрен в разделах ниже: 5.а, 7, 10 и 11. В этих случаях используются

формулы массива, возвращающие одно значение

.

2. Два числовых критерия (Выбрать те Товары, у которых цена попадает в диапазон)

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

Диапазон Чисел

).

Критерии (нижнюю и верхнюю границы цены) разместим в диапазоне

Е5:Е6

.

Т.е. если Цена Товара попадает в указанный интервал, то такая запись появится в новой таблице Отфильтрованные данные.

В отличие от предыдущей задачи создадим два

Динамических диапазона

: Товары и Цены (без них можно обойтись, но они удобны при написании формул). Соответствующие формулы должны выглядеть в Диспетчере имен ( Формулы/ Определенные имена/ Диспетчер имен ) следующим образом (см. рисунок ниже).

Теперь выделим диапазон

D11:D19

и в

Строке формул

введем

формулу массива

:

=ИНДЕКС(Товары;НАИМЕНЬШИЙ(ЕСЛИ(($E$5<=Цены)*($E$6>=Цены);СТРОКА(Цены);»»);СТРОКА(Цены)-СТРОКА($B$10))-СТРОКА($B$10))

Вместо

ENTER

нажмите сочетание клавиш

CTRL+SHIFT+ENTER

.

Те же манипуляции произведем с диапазоном

E11:E19

куда и введем аналогичную

формулу массива

:

=ИНДЕКС(Цены;НАИМЕНЬШИЙ(ЕСЛИ(($E$5<=Цены)*($E$6>=Цены);СТРОКА(Цены);»»);СТРОКА(Цены)-СТРОКА($B$10))-СТРОКА($B$10))

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

Е5

и

Е6

.

Чтобы показать динамизм полученного Отчета (Запроса на выборку) введем в

Е6

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

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

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

Обработка ошибок

).

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

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

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

Один критерий — Дата

).

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

= ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ($E$6=B12:B20;СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))

=ИНДЕКС(B12:B20;НАИМЕНЬШИЙ(ЕСЛИ($E$6=B12:B20;СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))

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

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

Диапазон Дат

).

Обратите внимание, что столбец Дат НЕ СОРТИРОВАН.


Решение1

: Для отбора строк можно использовать

формулы массива, возвращающие одно значение

.

Введите в ячейку

D12

формулу массива:

=ИНДЕКС(A$12:A$20;НАИБОЛЬШИЙ(($E$6<=$B$12:$B$20)*($E$7>=$B$12:$B$20)*(СТРОКА($B$12:$B$20)-СТРОКА($B$11));$J$12-СТРОКА(A12)+СТРОКА($B$11)+1))


Примечание

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

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

скрыты с помощью Условного форматирования

.

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

В ячейке

J12

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

=СЧЁТЕСЛИМН(B12:B20;»>=»&$E$6;B12:B20;»<=»&$E$7)

Строки исходной таблицы, которые удовлетворяют критериям,

выделены также Условным форматированием

.


Решение2

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

формулы массива, возвращающие несколько значений

):

= ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ(($E$6<=B12:B20)*($E$7>=B12:B20);СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))

=ИНДЕКС(B12:B20;НАИМЕНЬШИЙ(ЕСЛИ(($E$6<=B12:B20)*($E$7>=B12:B20);СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))

Для ввода первой формулы выделите диапазон ячеек

G12:G20

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


Решение3

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

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

с помощью функции СМЕЩ()

.

Этот пример еще раз наглядно демонстрирует насколько

предварительная сортировка данных

облегчает написание формул.

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

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

Один критерий — Дата (не позже)

).

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

= ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ($E$7<=B12:B20;СТРОКА(B12:B20);»»);СТРОКА(B12:B20)-СТРОКА($B$11))-СТРОКА($B$11))

Также в файле примера приведены формулы для условий: Не раньше (не включая); Не позже (включая); Не позже (не включая).

Эта формула введена как

формула массив

а, возвращающая множество значений (см. здесь

Формулы массива в MS EXCEL, возвращающие несколько значений

). Эту формулу можно переделать, чтобы

возвращалось только 1 значение

, см. следующую задачу 5а.

5а. Один критерий Дата (Выбрать События, которые Закончились/ не начались/ происходят на заданную дату)

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

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

Т.е. нам потребуется формула, обрабатывающая 3 вышеуказанные ситуации. Можно использовать нижеуказанную формулу, которую нужно ввести в строке для каждого события

= ВЫБОР($C$6;$B$7>C15;И($B$7>=B15;$B$7<=C15);$B$7

Формула возвращает ЛОЖЬ или ИСТИНА в зависимости от того удовлетворят ли Событие указанным критерием. Результат этой формулы мы будем использовать как для

Условного форматирования

, чтобы выделить События, так и для вывода Событий в отдельный диапазон.

Для вывода Событий в соседний диапазон используйте формулу:

= ИНДЕКС(A$15:A$21;НАИМЕНЬШИЙ(ЕСЛИ($D$15:$D$21;СТРОКА(A$15:A$21);»»);СТРОКА()-СТРОКА($B$14))-СТРОКА($B$14))

Формула делает следующее:

— если Событие удовлетворяет условию, то формула запоминает номер строки этого События: ЕСЛИ($D$15:$D$21;СТРОКА(A$15:A$21);»»)

Функция НАИМЕНЬШИЙ()

сортирует

полученный массив номеров строк: первыми идут номера строк Событий, которые удовлетворяют критерию;

Функция ИНДЕКС()

выводит названия Событий из указанный строк.

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

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

2 критерия — Дата-Текст

).

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

отсортирован

(для каждого из товаров), по товару сортировка не требуется.

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

= ИНДЕКС(A13:A21; НАИМЕНЬШИЙ(ЕСЛИ(($E$7=$A$13:$A$21)*($E$8>=$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 критерия — текст (И)

).

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

= ИНДЕКС($A$11:$A$19; НАИМЕНЬШИЙ(ЕСЛИ(($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19);СТРОКА($A$11:$A$19)-СТРОКА($A$10);30);СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19)))))

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

Выражение СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19))) формирует

массив последовательных чисел

{1:2:3:4:5:6:7:8:9}, т.е. номера строк в таблице.

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 критерий).

Вышеуказанное выражение вернет массив {0:0:0:0:1:1:1:0:0}. Умножив его на выражение СТРОКА($A$11:$A$19)-СТРОКА($A$10) , т.е. на

массив последовательных чисел

{1:2:3:4:5:6:7:8:9}, получим массив позиций (номеров строк таблицы), удовлетворяющих критериям. В нашем случае это будет массив {0:0:0:0:5:6:7:0:0}.

С помощью функции НАИБОЛЬШИЙ() выведем 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. Отбор значений с учетом повторов

В разделе

Отбор на основании повторяемости

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

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

Отбор уникальных значений (убираем повторы из списка) в MS EXCEL

Отбор уникальных значений с суммированием по соседнему столбцу в MS EXCEL

Отбор повторяющихся значений в MS EXCEL

Отбор уникальных значений из двух диапазонов в MS EXCEL

Отбор уникальных СТРОК с помощью Расширенного фильтра в MS EXCEL

В качестве примера приведем решения следующей задачи:

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

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

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

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

=НАИМЕНЬШИЙ(СТРОКА($A$14:$A$27)*($C$14:$C$27>=$B$7)*($C$14:$C$27<=$C$7)*($D$14:$D$27>=$B$10);F14+($G$8-$G$9))

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

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

В файле примера на листе «10.Критерий — колич-во повторов» настроено

Условное форматирование

, которое позволяет визуально определить строки удовлетворяющие критериям, а также

скрыть ячейки, в которых формула массива возвращает ошибку #ЧИСЛО!

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

В фильтре

Сводных таблиц

MS EXCEL используется значение (Все), чтобы вывести все значения столбца. Другими словами, в

выпадающем списке

значений критерия содержится особое значение, которое отменяет сам критерий (см. статью

Отчеты в MS EXCEL

, Отчет №3).

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

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

=ЕСЛИ($C$8=»(Все)»;НАИМЕНЬШИЙ((СТРОКА($B$13:$B$26)-СТРОКА($B$12))*($D$13:$D$26>=$D$8);F13+($G$6-$G$7));НАИМЕНЬШИЙ((СТРОКА($B$13:$B$26)-СТРОКА($B$12))*($D$13:$D$26>=$D$8)*($C$13:$C$26=$C$8);F13+($G$6-$G$7)))

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

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

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

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

1) сначала сформируем перечень товаров без повторов

Отбор уникальных значений (убираем повторы из списка) в MS EXCEL

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

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

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

В файле примера приведено решение на листе 12. Актуальная цена.

Содержание:

1.
О продукте


Возможности Microsoft Excel


2.
Новые ключевые
возможности Microsoft Excel

3. Дополнительные новые
возможности Microsoft Excel


4. 
Специальные
возможности в Microsoft Excel


Технические характеристики и компоненты
Microsoft Excel


5.
Технические характеристики и ограничения Microsoft Excel

6. Компоненты,
устанавливаемые вместе с Microsoft Excel


Настройка Microsoft Excel


7. Настройка элементов
окна программы

8. Изменение
значений по умолчанию и настроек

9.  Настройка панелей инструментов и меню

10. Настройка
параметров запуска Microsoft Excel

11. Использование надстроек и дополнительных компонентов

12.

Разрешение вопросов, связанных с
настройкой приложения Microsoft Excel


Управление и печать файлов


13. Создание и
открытие книг

14.
Поиск и предварительный просмотр файлов

15.
Настройка свойств
файлов

16. Печать
файлов

17. Сохранение и закрытие файлов

18.
Преобразование
файлов в формат
Microsoft
Excel
и обратно

19. Работа с
шаблонами

20. Разрешение вопросов, связанных с управлением и
печатью файлов



Работа с книгами и листами


21.
Управление
листами

22. Размещение окон и просмотр листов

23.
Сохранение настроек
отображения и печати как представления

24.
Разрешение вопросов
при работе с книгами и листами


Работа с
данными на листах


25.
Ввод данных

26.
Выбор данных

27.
Редактирование данных на
листе

28.
Копирование и перемещение
данных

29.
Проверка орфографии

30.
Использование буфера обмена
Microsoft Office

31.
Форматирование листов

32.
Использование границ и
заливки

33.
Использование условных
форматов

34.
Изменение размера ячеек и
положения текста

35.
Использование числовых
форматов

36.
Использование стилей

37.
Работа с текстом и данными

38.
Отбор

39.
Сортировка

40.
Проверка записей в ячейках

41.
Разрешение вопросов,
связанных с данными на листах


Использование
Microsoft Excel  при работе в
Интернете


42.
Публикация данных
Microsoft Excel
в Интернете

43.
Загрузка и анализ данных из
Интернета

44.
Работа с гиперссылками

45.
Работа с веб-папками

46.
Автоматизация содержимого
веб-страниц

47.
Работа с файлами и узлами
FTP

48.
Разрешение вопросов

по использованию
Microsoft Excel
при работе в
Интернете


Импорт данных


49.
Импорт данных

50.
Работа с данными
OLAP

51.

Создание и выполнение
запросов

52.
Настройка
Microsoft Query
и источников
данных

53.
Работа с внешними данными на
листе

54.
Разрешение вопросов,
связанных с внешними данными


Анализ и
управление данными


55.
Автоматический расчёт
итоговых данных

56.
Структуризация данных

57.
Консолидация данных

58.
Анализ данных с помощью
свободных таблиц и отчётов

59.
Создание и удаление
свободных таблиц и отчётов

60.
Настройка вида и разметки
свободных таблиц

61.
Печать свободных таблиц

62.
Создание свободных таблиц с
помощью групповых операций и формул

63.
Извлечение и обновление
данных

64.
Выполнение анализов
«что-если» для данных на листах

65.
Анализ таблиц данных

66.
Процедура поиска решения

67.
Работа со сценариями

68.
Разрешение вопросов,
связанных с анализом и управлением
данными


Создание и
использование форм


69.
Создание и использование форм

70.
Создание форм

71.
Использование форм

72.
Разрешение вопросов,
связанных с созданием и использованием
форм


Создание и
исправление формул


73.
Создание формул

74.
Использование ссылок

75.
Формулы массивов

76.
Имена и заголовки

77.
Условные формулы

78.
Формулы даты и времени

79.
Математические формулы

80.
Текстовые формулы

81.
Формулы сравнения

82.
Финансовые формулы

83.
Создание связей

84.
Управление расчётами

85.
Исправление формул

86.
Работа с Евро

87.
Разрешение вопросов,
связанных с созданием и исправлением
формул


Работа с
функциями


88.
Справка по функциям

89.
Внешние функции

90.
Инженерные функции

91.
Информационные функции

92.
Логические функции

93.
Математические функции

94.
Статистические функции

95.
Текстовые функции и функции
обработки данных

96.
Финансовые функции

97.
Функции баз данных

98.
Функции даты и времени

99.
Функции просмотра


Работа с
рисунками и диаграммами


100.
Работа с рисунками и
диаграммами

101.
Создание фигур, линий,
полулиний и других графический объектов

102.
Форматирование графических
объектов

103.
Добавление текста и особых
текстовых эффектов

104.
Группировка, выравнивание и
перемещение графических объектов

105.
Работа с импортированными
рисунками и картинками

106.
Работа со схемами и
организационными диаграммами

107.
Разрешение вопросов,
связанных с графическими объектами и
рисунками


Работа с
диаграммами


108.
Создание диаграмм

109.
Отображение диаграмм

110.
Работа с маркерами данных,
подписями значений и текстом

111.
Редактирование данных в
диаграмме

112.
Планки погрешностей и линии
тренда

113.
разрешение вопросов ,
связанных с диаграммами


Система
безопасности


114.
Защита от вирусов

115.
Цифровые подписи и
сертификаты

116.
Защита книг и листов

117.
Обеспечение
конфиденциальности

118.
Разрешение вопросов,
связанных с безопасностью


Совместная
работа


119.
Работа с общими книгами

120.
Отправка данных на рецензию

121.
Отслеживание изменений

122.
Пометка и просмотр изменений

123.
Слияние книг

124.
Работа с примечаниями

125.
Работа с обсуждениями

126.
Проведение собраний по
сети

127.
Взаимодействие
Microsoft Excel
и Lotus Notes

128.
Разрешение вопросов,
связанных с совместной работой


Доступ к данным
совместно с другими программами


129.
Доступ к данным совместно с
другими программами

130.
Обмен данными между
Microsoft Excel,
Microsoft Word
и
Microsoft PowerPoint

131.
Обмен данными между
Microsoft Excel
и Microsoft Access

132.
Взаимодействие между
Microsoft Excel 
Microsoft outlook

133.
Разрешение вопросов,
связанных с совместным доступом к данным


Рукописный текст
и речь


134.
Распознание рукописного
текста и речи

135.
Обработка рукописного текста

136.
Распознавание рукописного
текста на восточно-азиатских языках

137.
Обработка речи

138.
Разрешение вопросов,
связанных с распознаванием рукописного
текста и речи


Смарт-теги


139.
Использование смарт-тегов

140.
Разрешение вопросов,
связанных со смарт-тегами


Автоматизация
задач


141.
Работа с макросами

142.
Разрешение вопросов,
связанных с автоматизацией задач

Создание
и выполнение запросов



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

  1. Щелкните ячейку в диапазоне
    внешних данных, который требуется изменить.

  2. На панели инструментов
    Внешние данные нажмите кнопку
    Изменить запрос
    .

Примечание.  
Дополнительные сведения о создании и редактировании запросов в
Microsoft Query содержатся в справочной системе Microsoft Query.


Копирование диапазона
внешних данных и его запроса

  1. Нажмите стрелку рядом с полем
    Имя в строке формул и выберите имя
    диапазона внешних данных, который требуется скопировать.

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

  2. Нажмите кнопку
    Копировать
    .

  3. Откройте окно книги, в которую
    требуется вставить диапазон внешних данных.

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

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

  5. Нажмите кнопку
    Вставить
    .

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


Настройка запроса с
параметрами

Запросы с параметрами должны
быть созданы в Microsoft Query. Дополнительные сведения о создании
запросов с параметрами см в справке Microsoft Query.

Изменение сообщения запроса с
параметрами в Microsoft Excel

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

  2. На панели инструментов
    Внешние данные нажмите
    кнопку Параметры запроса
    .

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

  4. В поле
    запрос
    на ввод параметра пользователем
    введите текст сообщения и
    нажмите кнопку OK. Сообщение может
    содержать до 100 знаков.

  5. Чтобы применить новое
    сообщение и обновить данные, выберите
    Обновить данные
    на
    панели инструментов Внешние
    данные
    .

Примечание.  
Данная процедура изменяет пользовательский запрос только для
текущего сеанса работы с книгой. Чтобы постоянно выводить на экран
новое сообщение, сохраните книгу или введите новое сообщение для
запроса в Microsoft Query. Более подробные сведения об изменении
запроса см. в справке Microsoft Query.

Использование данных из ячейки в
качестве значения параметра

  1. На листе введите значения,
    которые следует использовать в качестве условий запроса.

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

  3. На панели инструментов
    Внешние данные нажмите
    кнопку Параметры запроса
    .

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

  5. Выберите вариант
    значение
    параметра берется из ячейки
    .

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

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

    Автоматически обновлять при изменении значения ячейки
    .

  7. Нажмите кнопку
    OK.

  8. Чтобы обновить данные,
    нажмите кнопку Обновить данные
    на
    панели инструментов Внешние
    данные
    .

Использование постоянного
значения параметра в запросе

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

  2. На панели инструментов
    Внешние данные нажмите
    кнопку Параметры запроса
    .

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

  4. Выберите вариант
    используется значение.

  5. Введите значение параметра и
    нажмите кнопку OK.

  6. Чтобы обновить данные,
    нажмите кнопку Обновить данные
    на
    панели инструментов Внешние
    данные
    .


Выполнение запроса в
фоновом режиме или с прерыванием работы

Выполнение запроса в
фоновом режиме позволяет не прерывать работу в Microsoft Excel на
время выполнения запроса.

  1. Выделите ячейку в диапазоне
    внешних данных, а затем нажмите на панели инструментов
    Внешние данные кнопку
    Свойства диапазона данных
    .

  2. Установите флажок
    фоновое обновление
    для выполнения запросов в фоновом режиме или снимите его для
    приостановки работы на время выполнения запросов.

Примечания

  • Прерывание запроса.  
    Если флажок фоновое
    обновление
      снят, запрос прерывается нажатием клавиши ESC.

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

  • Запись макроса.   Во
    время записи макроса, содержащего запрос, запуск запроса в фоновом
    режиме невозможен. Чтобы получить возможность запускать записанный
    макрос в фоновом режиме, вызовите редактор Visual Basic и измените
    способ обновления объекта QueryTable с «BackgroundQuery := False» на
    «BackgroundQuery := True». Сведения о написании макросов см. в
    справке Visual Basic.

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

Ссылки в Excel чаще всего используются вместе с такими функциями, как ВПР, для извлечения информации из другой книги. Это может быть специальная ссылка, содержащая адрес не только ячейки, но и книги, в которой находятся данные. В результате эта ссылка выглядит так: = VLOOKUP (A2; ‘[Sales 2018.xlsx] Report’! $ A: $ F; 4; 0). Или, для упрощения представления, представьте адрес в следующей форме: = ‘Report [Sales 2018.xlsx]’! $ A1. Давайте посмотрим на каждый из соединительных элементов этого типа:

  1. [Продажи 2018.xlsx]. Этот фрагмент содержит ссылку на файл, из которого вам нужно получить информацию. Его еще называют источником.
  2. Отношение. Мы использовали следующее имя, но это не обязательно. Этот блок содержит имя листа, на котором вы хотите найти информацию.
  3. $ A: $ F и $ A1 — это адрес ячейки или диапазона с данными, содержащимися в этом документе.

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

Суть проблемы

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

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

Как разорвать ссылки в Excel

Кроме того, можно изменить ссылки, используя соответствующую кнопку, расположенную на вкладке «Данные». Пользователь также может узнать, что соединение разорвано, из-за ошибки #LINK, которая появляется, когда Excel не может получить доступ к информации, расположенной по определенному адресу, из-за того, что сам адрес недействителен.

Как разорвать связь в Эксель

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

  1. Откройте меню «Данные».
  2. Находим раздел «Подключения» и там — опцию «Изменить подключения».
  3. Затем нажмите «Отключить соединение».

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

Как разорвать связь со всеми книгами

Но если количество ссылок становится слишком большим, их удаление вручную может занять много времени. Решить эту проблему за один раз можно с помощью специального макроса. Он находится в надстройке VBA-Excel. Вам необходимо активировать его и перейти на одноименную вкладку. Будет раздел «Ссылки», в котором мы должны нажать кнопку «Разорвать все ссылки».

Как разорвать ссылки в Excel

Код на VBA

Если вы не можете активировать это дополнение, вы можете создать макрос самостоятельно. Для этого откройте редактор Visual Basic, нажав Alt + F11, и напишите следующие строки в поле ввода кода.

Sub UnlinkWorkBooks()

    Тусклый WbLink

    Тусклый я пока

    Выберите Case MsgBox («Все ссылки на другие книги будут удалены из этого файла, а формулы, которые ссылаются на другие книги, будут заменены значениями». & VbCrLf & «Вы уверены, что хотите продолжить?», 36, «Разорвать ссылку?»)

    Дело 7 «No

        Выйти ниже

    Конец выбора

    WbLinks = ActiveWorkbook.LinkSources (Тип: = xlLinkTypeExcelLinks)

    Если не пусто (WbLinks) Тогда

        Для i = 1 для UBound (WbLinks)

            ActiveWorkbook.BreakLink Имя: = WbLinks (i), Тип: = xlLinkTypeExcelLinks

        Следующий

    Другой

        MsgBox «В этом файле нет ссылок на другие книги.», 64, «Ссылки на другие книги»

    Конец, если

Конец подзаголовка

Как разорвать связи только в выделенном диапазоне

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

  1. Выберите набор данных, в который вы хотите внести изменения.
  2. Установите надстройку VBA-Excel, затем перейдите на соответствующую вкладку.
  3. Затем найдите меню «Ссылки» и нажмите кнопку «Разорвать ссылки в выбранных диапазонах».

Как разорвать ссылки в Excel

После этого все ссылки в выбранном наборе ячеек будут удалены.

Что делать, если связи не разрываются

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

  1. Во-первых, вам нужно проверить, содержится ли какая-либо информация в названных диапазонах. Для этого нажмите комбинацию клавиш Ctrl + F3 или откройте вкладку «Формулы» — «Диспетчер имен». Если имя файла полное, вам просто нужно его отредактировать или удалить совсем. Перед удалением именованных диапазонов вам необходимо скопировать файл в другое место, чтобы вы могли вернуться к исходной версии, если вы сделаете что-то неправильно.
  2. Если вы не можете решить проблему, удалив имена, вы можете проверить условное форматирование. Вы можете ссылаться на ячейки из другой таблицы в правилах условного форматирования. Для этого нужно найти соответствующий пункт на вкладке «Главная», затем нажать кнопку «Диспетчер файлов». Как разорвать ссылки в Excel
    Обычно Excel не предлагает возможности предоставить адрес других книг в условном форматировании, но это делается путем ссылки на именованный диапазон со ссылкой на другой файл. Обычно даже после удаления ссылки ссылка остается. Удалить такую ​​ссылку не составит труда, потому что она фактически не работает. Поэтому ничего плохого не произойдет, если вы его удалите.

Вы также можете использовать функцию проверки данных, чтобы увидеть, нет ли ненужных ссылок. Ссылки обычно остаются, если используется тип проверки данных «Список». Но что делать, если ячеек много? Неужели нужно постоянно проверять каждую из них? Очевидно нет. В конце концов, это займет много времени. Поэтому необходимо использовать специальный код, чтобы сохранить его значимым образом.
Явный вариант

‘—————————————————————————————

Автор: The_Prist (Дмитрий Щербаков)

‘Профессиональная разработка приложений MS Office любой сложности

‘Проведение обучающих курсов в MS Excel

https://www.excel-vba.ru

‘info@excel-vba.ru

WebMoney — R298726502453; Яндекс.Деньги — 41001332272872

‘Сфера:

‘—————————————————————————————

Sub FindErrLink()

    ‘вам нужно посмотреть ссылку Data — Изменить ссылки на исходный файл

    ‘и напишите здесь ключевые слова в нижнем регистре (часть имени файла)

    ‘звездочка просто заменяет любое количество символов, поэтому вам не важно точное имя

    Const sToFndLink $ = «* продажи за 2018 год*»

    Dim rr As Range, rc As Range, rres As Range, s$

    ‘определить все ячейки с проверкой данных

    В случае ошибки Продолжить Далее

    Установите rr = ActiveSheet.UsedRange.SpecialCells (xlCellTypeAllValidation)

    Если rr ничего, тогда

        MsgBox «На активном листе нет ячеек с проверкой данных», vbInformation, «www.excel-vba.ru»

        Выйти ниже

    Конец, если

    При ошибке Перейти к 0

    ‘проверить каждую ячейку на наличие соединений

    Для каждого rc In rr

        ‘на всякий случай пропустим ошибки — это тоже может быть

        ‘но наши связи должны быть без них, и они обязательно будут найдены

        s = «»

        В случае ошибки Продолжить Далее

        s = rc.Convalida.Formula1

        При ошибке Перейти к 0

        ‘нашел — все собираем в отдельный ряд

        Если LCase (s) как sToFndLink, то

            Если ничего нет, то

                Установите rres = rc

            Другой

                Установить rres = Union (rc, rres)

            Конец, если

        Конец, если

    Следующий

    ‘если есть соединение, выберите все ячейки с этими элементами управления данными

    Если ничего нет, то

        rres.Select

‘rres.Interior.Color = vbRed’, если вам также нужно выделить цветом

    Конец, если

Конец подзаголовка

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

  1. Прежде чем искать ссылку, которая больше не актуальна, вы должны сначала определить внешний вид ссылки, по которой она была создана. Для этого зайдите в меню «Данные» и найдите пункт «Редактировать ссылки». Далее нужно посмотреть имя файла и указать его в кавычках. Например, вот так: Const sToFndLink $ = «* 2018 продажи*»
  2. имя можно написать не полностью, а просто заменить ненужные символы звездочкой. И в кавычках пишите имя файла строчными буквами. В этом случае Excel найдет в конце все файлы, содержащие эту строку.
  3. Этот код может проверять ссылки только на текущем активном листе.
  4. С помощью этого макроса вы можете выбрать только найденные ячейки. Придется удалить все вручную. Это преимущество, потому что вы можете все перепроверить.
  5. Вы также можете выделить ячейки специальным цветом. Для этого удалите апостроф перед этой строкой rres.Interior.Color = vbRed

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

  1. Сделайте резервную копию документа.
  2. Откроем этот документ с помощью архиватора. Вы можете использовать любой формат, поддерживающий формат ZIP, но WinRar, а также тот, который встроен в Windows, будет.
  3. В появившемся архиве нужно найти папку xl и открыть там externalLinks.
  4. В этой папке находятся все внешние ссылки, каждая из которых соответствует файлу формата externalLink1.xml. Все только пронумерованы, поэтому пользователь не может понять, что это за соединение. Чтобы разобраться, что за подключение, нужно открыть папку _rels и посмотреть ее там.
  5. Затем мы удаляем все определенные ссылки на основе того, что мы узнали из файла externalLinkX.xml.rels.
  6. Далее открываем наш файл с помощью Excel. Появится информация об ошибке, например «Ошибка в части содержания книги». Даём согласие. После этого появится другое диалоговое окно. Закрываем.

После этого все ссылки необходимо удалить.

1 Power Query. Знакомство с Power Query В этом уроке мы познакомимся в Power Query.
Зачем нужен Power Query
Как установить Power Query
Как его Настроить
Как изменить запрос 2 Power Query. Подключение XML В этом уроке мы научимся подключаться к файлам в формате XML и импортировать эти данные в Excel. 3 Power Query. Уникальные значения двух столбцов В этом уроке мы получим уникальные значения из двух столбцов таблицы. 4 Power Query. Импорт таблиц PDF Импорт таблиц из файла PDF, импорт таблиц из множества PDF файлов с объединением в один датасет. 5 Power Query. Собрать разбитую строку В этом практическом уроке мы научимся соединять разбитую строку. Этот пример взят из реальной практики одного из спонсоров канала. 6 Power Query. Пивот со счетом В этом уроке мы создадим пивот, в котором будут пронумерованы столбцы. 7 Power Query. Минимальное значение в диапазоне В этом уроке мы найдем минимальное значение в диапазоне строк. 8 Power Query. Нарастающий итог 2 В этом уроке мы изучим еще один способ сделать нарастающий итог в Power Query. 9 Power Query. Нарастающий итог 3 В этом уроке мы разберем еще один способ выполнить нарастающий итог в Power Query. 10 Power Query. Прирост населения Китая В этом уроке мы сравним прирост населения Китая с приростом населения мира в целом за последние 200 лет. 11 Power Query. Повторяющиеся значения в строке В этом уроке разберем как определить есть ли в строке повторения. 12 Power Query. Таблица навигации по функциям М В этом уроке вы узнаете как создать таблицу навигации по всем функциям языка Power Query. 13 Power Query. Удалить запросы и модель данных из книги Разберем как быстро удалить все запросы и модель данных из текущей книги. 14 Power Query. Открыть еще 1 Excel и еще 3 трюка В этом видео я покажу как открыть еще 1 файл Excel, если у вас уже запущен Power Query. 15 Power Query. Подключиться к ZIP архиву Пользовательская функция для подключения к zip файлу. Подключимся к txt файлу, который находится в zip архиве. 16 Power Query. Импорт Word Импортируем таблицу из документа Word. Для спонсоров разберем импорт таблицы с объединенными ячейками. 17 Power Query. Фильтрация списком В этом уроке мы хотим отфильтровать таблицу при помощи списка, например, хотим получить продажи определенных товаров. 18 Power Query. Пользовательская функция Switch В этом уроке мы создадим пользовательскую функцию Switch. 19 Power Query. Информация о формате, Чтение zip В этом уроке мы узнаем как получить информацию о формате ячеек при помощи Power Query. 20 Power Query. Импорт данных из gz В этом уроке мы разберем как импортировать файл в формате gz. 21 Power Query. Удалить лишние пробелы, Text.Split В этом уроке мы научимся удалять лишние пробелы в текстовом столбце таблицы. 22 Power Query. Параметры в SQL-запросе Вы хотите, чтобы в ваш SQL-запрос подставлялось значение из параметра, источником которого является ячейка с листа Excel. 23 Power Query. Параметры в SQL-запросе 2 Ваш запрос очень большой и количество параметров в нем большое. Как организовать все так, чтобы было удобно работать. 24 Power Query. Добавить столбец в каждую таблицу табличного столбца В этом уроке вы узнаете как трансформировать табличный столбец, например, вы сможете добавить столбец индекса внутрь каждой таблицы табличного столбца. 25 Power Query. Интервальный просмотр 1 (ВПР 1) Объединить 2 таблицы с интервальным просмотром = 1. 26 Power Query. Относительный путь к файлу и папке Если ваш источник находится в той же папке, что и отчет, то вы можете указать относительный путь. В таком случае подключение не будет ломаться, если вы запустите файл на другом компьютере. 27 Power Query. Нарастающий итог в каждой категории Применим функцию нарастающего итога не ко всей таблице, а к определенному окну. 28 Power Query. ВПР без Merge или Join Вам нужно подставить данные из столбца другой таблицы. Как это сделать без объединения таблиц.

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Excel как закрепить ячейки формулы при копировании
  • Excel как закрепить ширину столбца
  • Excel как закрепить шапку таблицы при прокрутке
  • Excel как закрепить формат ячейки
  • Excel как закрепить формат ячеек

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии