Запросы в эксель как делать

от admin

SQL запросы в Microsoft Excel

SQL – популярный язык программирования, который применяется при работе с базами данных (БД). Хотя для операций с базами данных в пакете Microsoft Office имеется отдельное приложение — Access, но программа Excel тоже может работать с БД, делая SQL запросы. Давайте узнаем, как различными способами можно сформировать подобный запрос.

Создание SQL запроса в Excel

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

Способ 1: использование надстройки

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

Принятие лицензиного соглашение на использование компонента Microsoft NET Framework 4

    После того, как вы скачали файл надстройки xltools.exe, следует приступить к его установке. Для запуска инсталлятора нужно произвести двойной щелчок левой кнопки мыши по установочному файлу. После этого запустится окно, в котором нужно будет подтвердить согласие с лицензионным соглашением на использование продукции компании Microsoft — NET Framework 4. Для этого всего лишь нужно кликнуть по кнопке «Принимаю» внизу окошка.

Lumpics.ru

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

Далее пишется текст команды, которую вы хотите применить к выбранным объектам. Команды составляются при помощи специальных операторов. Вот основные операторы SQL:

  • ORDER BY – сортировка значений;
  • JOIN – объединение таблиц;
  • GROUP BY – группировка значений;
  • SUM – суммирование значений;
  • DISTINCT – удаление дубликатов.

Кроме того, в построении запроса можно использовать операторы MAX, MIN, AVG, COUNT, LEFT и др.

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

Способ 2: использование встроенных инструментов Excel

Существует также способ создать SQL запрос к выбранному источнику данных с помощью встроенных инструментов Эксель.

  1. Запускаем программу Excel. После этого перемещаемся во вкладку «Данные». Переход во вкладку Данные в Microsoft Excel
  2. В блоке инструментов «Получение внешних данных», который расположен на ленте, жмем на значок «Из других источников». Открывается список дальнейших вариантов действий. Выбираем в нем пункт «Из мастера подключения данных». Переход в Мастер подключения данных в Microsoft Excel
  3. Запускается Мастер подключения данных. В перечне типов источников данных выбираем «ODBC DSN». После этого щелкаем по кнопке «Далее». Окно Мастера подключения данных в Microsoft Excel
  4. Открывается окно Мастера подключения данных, в котором нужно выбрать тип источника. Выбираем наименование «MS Access Database». Затем щелкаем по кнопке «Далее». Окно выбора типа источника Мастера подключения данных в Microsoft Excel
  5. Открывается небольшое окошко навигации, в котором следует перейти в директорию расположения базы данных в формате mdb или accdb и выбрать нужный файл БД. Навигация между логическими дисками при этом производится в специальном поле «Диски». Между каталогами производится переход в центральной области окна под названием «Каталоги». В левой области окна отображаются файлы, расположенные в текущем каталоге, если они имеют расширение mdb или accdb. Именно в этой области нужно выбрать наименование файла, после чего кликнуть на кнопку «OK». Окно выбора базы данных в Microsoft Excel
  6. Вслед за этим запускается окно выбора таблицы в указанной базе данных. В центральной области следует выбрать наименование нужной таблицы (если их несколько), а потом нажать на кнопку «Далее». Окно выбора таблицы базы данных в Microsoft Excel
  7. После этого открывается окно сохранения файла подключения данных. Тут указаны основные сведения о подключении, которое мы настроили. В данном окне достаточно нажать на кнопку «Готово». Окно сохранения файла подключения данных в Microsoft Excel
  8. На листе Excel запускается окошко импорта данных. В нем можно указать, в каком именно виде вы хотите, чтобы данные были представлены:
    • Таблица;
    • Отчёт сводной таблицы;
    • Сводная диаграмма.

Выбираем нужный вариант. Чуть ниже требуется указать, куда именно следует поместить данные: на новый лист или на текущем листе. В последнем случае предоставляется также возможность выбора координат размещения. По умолчанию данные размещаются на текущем листе. Левый верхний угол импортируемого объекта размещается в ячейке A1.

Способ 3: подключение к серверу SQL Server

Кроме того, посредством инструментов Excel существует возможность соединения с сервером SQL Server и посыла к нему запросов. Построение запроса не отличается от предыдущего варианта, но прежде всего, нужно установить само подключение. Посмотрим, как это сделать.

Переход к окну подключения к серверу SQL Server в Microsoft Excel

  1. Запускаем программу Excel и переходим во вкладку «Данные». После этого щелкаем по кнопке «Из других источников», которая размещается на ленте в блоке инструментов «Получение внешних данных». На этот раз из раскрывшегося списка выбираем вариант «С сервера SQL Server».
  2. Происходит открытие окна подключения к серверу баз данных. В поле «Имя сервера» указываем наименование того сервера, к которому выполняем подключение. В группе параметров «Учетные сведения» нужно определиться, как именно будет происходить подключение: с использованием проверки подлинности Windows или путем введения имени пользователя и пароля. Выставляем переключатель согласно принятому решению. Если вы выбрали второй вариант, то кроме того в соответствующие поля придется ввести имя пользователя и пароль. После того, как все настройки проведены, жмем на кнопку «Далее». После выполнения этого действия происходит подключение к указанному серверу. Дальнейшие действия по организации запроса к базе данных аналогичны тем, которые мы описывали в предыдущем способе.

Как видим, в Экселе SQL запрос можно организовать, как встроенными инструментами программы, так и при помощи сторонних надстроек. Каждый пользователь может выбрать тот вариант, который удобнее для него и является более подходящим для решения конкретно поставленной задачи. Хотя, возможности надстройки XLTools, в целом, все-таки несколько более продвинутые, чем у встроенных инструментов Excel. Главный же недостаток XLTools заключается в том, что срок бесплатного пользования надстройкой ограничен всего двумя календарными неделями.

Как сформировать SQL запросы в Excel?

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

Выйти из подобной ситуации поможет Excel.

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

Для того чтобы обойти проблему, нам потребуется таблица с целевой выборкой, в которой содержатся идентификаторы, по которым можно достаточно корректно получить недостающую информацию (это может быть уникальный идентификатор, назовем его ID, или набор из данных, находящихся в разных столбцах), ПК с установленным MS Excel, и доступом к БД с недостающей информацией и, конечно, желание получить ту самую информацию.

Создаем в MS Excel книгу, на листе которой размещаем таблицу с идентификаторами, по которым будем в дальнейшем формировать запрос (если у нас есть уникальный идентификатор, для обеспечения максимальной скорости обработки таблицу лучше представить в виде одного столбца), сохраняем книгу в формате *.xlsm, после чего приступаем к созданию макроса.

Через меню «Разработчик» открываем встроенный VBA редактор и начинаем творить.

Sub job_sql() — Пусть наш макрос называется job_sql.

Пропишем переменные для подключения к БД, записи данных и запроса:

Опишем параметры подключения:

Объявим процедуру свойства, для присвоения значения:

Вот теперь можно приступать непосредственно к делу.

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

Тогда открытие цикла будет выглядеть так:

Как я уже говорил выше MS Excel является мощным инструментом для аналитики, и возможности Excel VBA не заканчиваются на простом переборе значений или комбинаций значений. При наличии известных Вам закономерностей можно ограничить объем выгружаемой из БД информации путем добавления в макрос простых условий, например:

Итак, мы определились с объемом и условиями выборки, организовали подключение к БД и готовы формировать запрос. Предположим, что нам нужно получить информацию о размере ежемесячного платежа [Ежемесячный платеж] из таблицы [payments].[refinans_credit], но только по тем случаям, когда размер ежемесячного платежа больше 0

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

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

Запросы в Excel. Часть 1

Этой статьей я открываю цикл про выполнение запросов в Excel и оптимизацию работы с крупными таблицами Excel.

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

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

Пускай наша таблица содержит такие поля:

  • Таб_N
  • Фамилия
  • Имя
  • Отчество
  • Пол
  • Дата рождения
  • ИНН
  • Должность
  • Отдел
  • Последний отпуск (дата)
  • Прием на работу (дата)
  • Уволен (дата)

Думаю, для иллюстрации работы этого будет достаточно.

Теперь немного напомню, какие требования к таблице стоит соблюдать:

  1. Она не упорядочена сверху вниз — поэтому я не вводил нумерацию, а оставил табельный номер. Новых сотрудников можно просто добавлять снизу или даже куда-нибудь в середину.
  2. Нет одинаковых строк — у нас в любом случае за это отвечает табельный номер.
  3. Данные в столбцах должны представлять собой логически неделимую информацию. Хорошо видно на Ф.И.О. Если мы укажем всё в одном столбце, то найти человека или отсортировать данные по имени-отчеству будет проблематично.

Ещё один момент! Этой таблице нужно присвоить ИМЯ. Допустим, банально, но привычно — Кадры. �� Я имею в виду не имя файла, а задать имя для таблицы средствами редактора. Это делается командой Имя таблицы, расположенной на закладке Конструктор таблицы в области Свойства. Благодаря имени мы сможет обращаться к таблице из других файлов (книг) Excel и видеть её поля и данные.

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

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

Вот такую таблицу мы получим:

запросы в Excel

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

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

Excel Power Query: создание основных запросов ⁠ ⁠

В Power Query можно создавать различные виды запросов и подключений к данным:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Рассмотрим самые часто используемые: с листа книги (таблицы/диапазона), из книги, из папки, из Google Таблицы.

Создание запроса к данным листа книги

Откройте лист Excel с данными:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Вкладка Данные ► Получить данные ► Из других источников ►Из таблицы/диапазона:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Нажмите ОК, откроется окно редактора Power Query:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

В окне Параметры запроса ►Свойства ► Имя, можно изменить название запроса.

Загрузите запрос, окно редактора запросов, Главная ►Закрыть и загрузить ► Закрыть и загрузить в. :

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

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

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

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

Вкладка Данные ► Получить данные ► Из файла ► Из книги:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

В открывшемся окне укажите путь к файлу и нажмите Импорт:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

В окне Навигатор выберите Лист или Таблицу, нажмите Преобразовать данные:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Создание запроса из папки

Вкладка Данные ► Получить данные ► Из файла ►Из папки:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

В открывшемся окне укажите путь к папке и нажмите ОК:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Нажмите Преобразовать данные:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

В редакторе удалите все столбцы, кроме двух первых, для этого выделите лишние столбцы зажав SHIFT, правая кнопка мыши по шапке столбца (пкм) ► Удалить столбцы:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Создайте пользовательский столбец, вкладка Добавление столбца ► Настраиваемый столбец, прописав в нём формулу Excel.Workbook([Content]):

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

В созданном столбце, выберите вариант Data, уберите галку Использовать исходное имя столбца как префикс ► ОК:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Преобразуйте названия строк в заголовки столбцов, Главная ► Использовать первую строку в качестве заголовков:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Удалите повторяющиеся заголовки, используя фильтр, сняв галку:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Удалите лишние столбцы, пкм ► Удалить столбцы;

Создание запроса из Google Таблиц

Копируйте ссылку на файл в настройках доступа:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Создайте запрос, Данные ► Получить данные ►Из других источников ► Из интернета:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Укажите путь к файлу, измените окончание ссылки с /edit?usp=sharing на /export и нажмите ОК:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

В окне Навигатор выберите Лист и нажмите Преобразовать данные:

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

Проверить, что получилось: выберите в окне Запросы и подключение ► пкм ► Загрузить в. :

Excel Power Query: создание основных запросов Microsoft Excel, Microsoft office, Офис, Продуктивность, Маркетинг, Бухгалтерия, Отдел кадров, Аналитика, Видео, Длиннопост

635 постов 14.5K подписчиков

Правила сообщества

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.

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

Важно — сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.

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

Иллюстрация к комментарию

@ExceLifeHack можешь помочь, пожалуйста. У меня есть готовый запрос (только как подключение). Я хочу построить умную таблицу на основе этого запроса, когда я нажимаю «Существующие подключения-выбираю нужный запрос-открыть-таблица» у меня создается дубликат этого запроса. Можно ли выгружать на базе одного запроса без создания этих дубликатов?

Таблица Excel лежит в SharePoint’e. Как вытащить из неё данные? Пробовал по куче статей из тырнетика — ничерта не получается.

Вы недооформились! (Снова о кадровиках)⁠ ⁠

Устроился на новую работу. В первый день на оформлении выдали кучу документов на подпись: и согласие на обработку персональных данных, и заявление на перечисление зарплаты на карту (с реквизитами), и трудовой договор, и ознакомление во всех журналах со всеми регламентами и инструктажами. Пол дня всё это заняло.

День на третий видит меня кадровичка в коридоре и издалека на всю контору кричит:

К: VanyaDW, подождите, подойдите ко мне! Вы недооформились!

Я, естественно, в непонятках, спрашиваю, что это значит?

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

Я: Что значит «я не предоставил»?

А меня разозлило так.

Я: Вы серьезно думаете, что мне дали бланк, а я его принципиально заполнять не стал? Чтобы предприятие мне зарплату не могло заплатить? Может быть, это вы просто предоставленный документ потеряли?

К: Ой, ну может быть, сотрудница просто не приложила! Вы только так не нервничайте!

Нравится мне этот подход: не «Мы — курицы, ваш документ потеряли, извините. «, а «Вы недооформились!».

Ответ на пост «Кадровики-формалисты на страже уровня зарплаты»⁠ ⁠

Год назад уволился по сокращению отдела, бюджетная организация. 21 год проработал. Уволился с радостью, 40 с лишним офицального трудового стажа, из них 15 лет Крайнего Севера. Пенсионер МВД с 1998 г. Никуда не устроился и не собираюсь. Что бы там не пели терешковы и им подобные, ранняя заработанная неплохая пенсия — это прекрасно.
При увольнении кадры сделали всё правильно, но в бухгалтерии молодая расчетчица насчитала выплаты по сокращению в полтора раза меньше, чем положено по ТК. Устные претензии бухгалтерия не приняла — «программа так считает».
Ранее я писал жалобы своему руководителю про график работы, оплату сверхурочных, несвоевременную выплату ночных. Вопросы решались положительно для меня. Написал и на этот раз, выплатили всё как положено.
Недавно звонок от приятеля, там работает. В ходе разговора сказал, что зам. (тот вообще под 30 лет там проработал) вспоминал меня «добрым» словом, мол, был такой редиска-жалобщик, и уволить его до сокращения никак не получалось, и премии лишить никак.
Мне было приятно.

Если человек не подошёл к нам в компанию, так , что , он не человек?⁠ ⁠

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

Ответ Faruga в «Хобби при собеседовании»⁠ ⁠

А я как-то проходила собеседование в одну фирму. Уже пообщалась с двумя руководителями, определили, что меня надо в другой отдел, пообщалась с руководителем этого отдела. В конце решили направить меня к генеральному директору, тоже пообщаться познакомиться. Не помню что он у меня спрашивал, как-то просто непринуждённо поговорили, а потом он говорит что всегда задаёт соискателям один вопрос: кубический корень из 27. Я конечно ответила) Работа если что не тесно связана с математикой. Видимо так он проверяет насколько человек свой. В эту компанию меня взяли, но я в итоге осталась на предыдущей работе, потому что когда там узнали, что я ухожу, смогли уговорить остаться.

Скрипт для экселя- ссылка в тайминг⁠ ⁠

Всем добрый день.
Хочу обратиться к Пикабу-разуму в вопросе Офиса.

Для размещения поста на Пикабу имеется заранее подготовленная таблица в Эксель.
первая колонка- тайминг новости, вторая колонка — тело новости, третья колонка — ссылка на новость, что является обязательным в теге «политика».
в сильно упрощенном виде это выглядит банально:

Скрипт для экселя- ссылка в тайминг Скрипт, Microsoft office, Microsoft Excel, Вопрос

До недавних нововведений в редакторе постов Пикабу, CSV сохраненный из Экселя втаскивался в редактор через скрипт в обозревателе. И получался хорошо известный некоторым вариант

Скрипт для экселя- ссылка в тайминг Скрипт, Microsoft office, Microsoft Excel, Вопрос

НО в свете все известных событий (прогресс не остановить!) скрипт отвалился и судя по консилиуму специалистов воскрешению не подлежит, методологически так сказать.
Отсюда простой вопрос: можно ли скриптом или как-то иначе автоматизировать в Экселе или в ОпенОфисе вставку ссылок в тайминги?
То есть мы из 3 колонок должны получить две.

Для интересующихся — в обычном финальном Пузыре 60-90 новостей.
Вставлять руками можно, но ЛЛ меня и так гнобит

Ответ на пост «Работничек»⁠ ⁠

Дают задачу для доработки бекенда. Там простой фикс, говорили они. Думаешь, сейчас сделаешь за 20 минут и готово, но там:

1. Название задачи «Нужно починить сайт»
2. Есть сваггер, последнее обновление год назад
3. Схема запросов, ответов и описание никто не актуализировал
4. Описание задачи максимально абстрактное, очевидно, писал менеджер
5. Разработчик, который писал код, уволился полгода назад
6. Менеджер ушёл в отпуск
7. Дедлайн через пару дней в пятницу
8. У тебя испытательный срок

Ответ на пост «Работничек» Работа, Продуктивность, Разработчики, Задача, Офис, Ответ на пост

Работничек⁠ ⁠

Работничек Комиксы, Настенькины комиксы, Скетч, Веб-комикс, Работа, Продуктивность, Разработчики, Задача, Офис

EXCEL — ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО⁠ ⁠

Я решил с двух ног ворваться в тему макросов.

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Кто-то про них слышал, кто-то даже видел, отдельные сверхразумы их даже использовали. Сегодня будет ознакомительный пост: что это вообще такое и как с этим начать работать. Обратите внимание – этот пост тех, кто не знает, что такое макросы и никогда с ними не работал

Первым делом нужно включить вкладку «Разработчик». По умолчанию в Excel ее спрятали, чтобы не взорвать мозг юзерам. Идем в Параметры -> Настройка ленты -> Основные вкладки -> Разработчик (поставить галочку).

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Теперь идем в эту вкладку, нажимаем «Записать макрос» выбираем имя жмакаем «ок». Все, теперь любые действия в Excel надежным образом записываются.

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Давайте теперь что-то сделаем. На пример поменяем заливку ячейки А1, в ячейку A2 напишем значение «Мама, я программист», а в ячейке А3 пропишем формулу текущей даты «=Сегодня()»

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Останавливаем запись макроса. Нажимаем иконку «Макросы», выбираем наш макрос как мы его обозвали, нажимаем кнопку «изменить».

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Появляется окно Microsoft Visual Basic for Applications. Кстати оно также вызывается комбинацией клавиш (Alt + F11) У меня почему-то вызывается только левым Altом, а правым нет, видимо намекая на то что для написания макросов лучше иметь 2 руки (хотя я и одной нажать могу). Появился редактор языка VBA – это язык, который написан специально под офис чтобы на нем писать макросы. В основном окне видим саму эту запись, которую автоматически сделал Excel.

Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range(«A2»).Select
ActiveCell.FormulaR1C1 = «Мама, я программист»
Range(«A3»).Select
ActiveCell.FormulaR1C1 = «=TODAY()»
Range(«A4»).Select
End Sub

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

Теперь давайте разбираться что делает этот макрос

Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With

(Весь этот кусок от начала говорит нам о том, что с тем элементом что был выделен ранее происходит некоторое дерьмо, в том числе изменение цвета. Вот там, где Color = 255. Все остальное это параметры заливки, которые по итогу не менялись, но макрорекордер решил их тоже записать, на всякий. Это связано с внутренними особенностями работы excel как я понял. Вообще привыкайте к тому что макрорекордер пишет много того что потом вообще можно удалить. Конструкция With – End With позволяет делать несколько действий с одним объектом, на пример выше берется объект Selection.Interior, то есть фон выбранной области и ряду параметров этой заливки назначаются конкретные значения. То есть With нужен для облегчения записи кода, чтобы Selection.Interior не писать вначале каждой строчки.

Range(«A2»).Select –выделяем ячейку «A2»
ActiveCell.FormulaR1C1 = «Мама, я программист» – пишем в ячейку значение
Range(«A3»).Select – выделяем ячейку «А3»
ActiveCell.FormulaR1C1 = «=TODAY()» –пишем в ячейку формулу
Range(«A4»).Select – зачем то выделяем ячейку А4.
End Sub

Теперь при создании нового листа и запуске этого макроса он будет делать все то же самое.

Тут стоит понимать, что половину того что записал макрос можно опустить, так как нам важен результат, а не путь по которому к этому результату пришли, а макрорекордер записывает именно путь. На пример вместо всей конструкции With можно записать

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

Range(“A2”).Value = ”Мама, я программист”

или писать формулу как в третей ячейке

С формулами и значениями лично мне не понятно, как excel их интерпретирует, но в макрорекордре он записывает любой ввод в ячейку как ввод формулы. Благо лично у меня при написании макросов не возникает необходимости писать формулы в ячейки. На пример вместо вставки формулы как это было выше можно написать Range(“A3”).Value = Date(), тогда макрос вставит сразу текущую дату в ячейку как значение.

Опытные макроделы пишут макросы сразу без их записи макрорекордером, но это полезный инструмент для самостоятельного изучения при написании макросов: если не знаешь, что как делается в VBА то запускаешь и делаешь, потом смотришь что он там написал.

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

Sub Colorization()
‘начало нашего макроса и его название
Dim x As Integer
‘объявляем переменную х типа интеджер, это тип для целых чисел от -32 768 до 32 767 (2 байта),
‘она нам нужна для перебора ячеек
For x = 1 To ActiveSheet.UsedRange.Rows.Count
‘перебираем х от 1 до конца использованной части листа, то есть не весь лист, а там где есть данные.
‘Тут цикл For повторяется от этой строки до строки Next x, которая прописана ниже
If Cells(x, 1).Value = «красный» Then Cells(x, 1).Interior.Color = RGB(255, 0, 0)
‘если значение в ячейке равно «красный» то закрашиваем ячейку в красный цвет. Функция If выполняет часть
‘после Then если условие между If и Then верно. Так как у нас необходимое действие занимает одну
‘строку можно писать в таком виде, если же действий несколько применяется конструкция:
‘If … Then
‘…
‘…
‘End If
If Cells(x, 1).Value = «зеленый» Then Cells(x, 1).Interior.Color = RGB(0, 255, 0)
‘как выше только в зеленый цвет
If Cells(x, 1).Value = «синий» Then Cells(x, 1).Interior.Color = RGB(0, 0, 255)
‘в синий цвет
Next x ‘берем следующее значение х, конец цикла For, который мы начали выше
End Sub ‘конец макроса
Как работает этот макрос: берет первый столбец, сначала 1 ячейку, смотрит что в ней написано, и если это равно «красный», «зеленый» или «синий», то красит фон ячейки в этот цвет, если нет по пропускает. Потом берет вторую и т. д. до конца активной части текущего листа.
Для проверки работы макроса нам нужен лист, где в первом столбце будут случайным образом прописаны цвета «красный», «зеленый», «синий». Запускаем макрос – когда он отработает ячейки будут раскрашены:

EXCEL - ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО Макрос, Microsoft Excel, Обучение, Офис, Работа, Длиннопост

Некоторые пояснения: если не писать просто Cells то макрос будет делать все в активном листе активного окна. Но макрос может идти и в другие листы, файлы, даже в другие приложения офиса, но об этом не сегодня.

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

Итак, на этом пока все. Надеюсь теперь те, кто никогда не видел макросов получат о них начальное представление. Дальше буду писать про более практичное применение.

Читать:
Как проверить наличие папки c

Похожие статьи