606

Защита данных в Excel

Приветствую всех! В этот раз мы рассмотрим способы защиты данных в Excel, от примитивных приёмов, до более серьёзных с паролированием.


Спрятать содержимое ячеек


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

Нажимаем Ctrl+1 или выбираем «Формат ячеек», в открывшемся меню «Число»-«Все форматы»-«Тип» вводим подряд 3 точки с запятой без пробелов.

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

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

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


Защита ячеек листа от изменений


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

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

По умолчанию этот флажок всегда включён для всех ячеек.

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

Этот приём необходим т.к. в Excel команда «защитить диапазон», отсутствует, а есть только «защитить лист» и «защитить книгу», поэтому таким образом мы решаем эту проблему.


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

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

Например, необходимо оставить пользователям:

- возможность помечать ячейки маркером (но не менять их содержимое) –включаем флажок «Форматирование».

- использование фильтрации и/или сортировки (через Автофильтр) – включаем флажки «Использование автофильтра» и/или «Сортировка». Только перед включением защиты сперва создайте сам фильтр на вкладке «Данные».


Чтобы предотвратить выделение защищённых ячеек и копирование их на новый лист с последующим редактированием, снимите в списке разрешений все флажки, кроме второго. В результате вы разрешаете выделять только разблокированные ячейки (для которых вы предварительно выключили флажок «Защищаемая ячейка»), а все остальные ячейки на листе выделить и скопировать будет невозможно.


Выборочная защита диапазонов листа для разных пользователей


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

Чтобы это сделать, выбираем на вкладке «Рецензирование» кнопку «Разрешить изменение диапазонов».

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

В появившемся окне нажимаем кнопку «Создать» и вводим имя диапазона, адреса ячеек и пароль к нему:

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

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

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


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


С помощью кнопки «Защитить книгу» на вкладке «Рецензирование» защищаем документ от удаления, переименования, перемещения листов в книге, изменения закрепленных областей (зафиксированной «шапки» таблиц и т.п.), возможности сворачивать/перемещать/изменять размеры окна книги внутри окна Excel:

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

Флажок «Структуру» отмечен по умолчанию, т.к. он подразумевает стандартный набор функций защиты листов от удаления, переименования, копирования.

Флажок «Окна» не обязательный и необходим для запрета пользователю сворачивать и/или изменять размеры окна книги внутри окна Excel или изменять закрепление областей.


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

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

Шифрование книги


В Excel имеется возможность зашифровать весь файл книги, используя алгоритм шифрования AES 128-bit. Взломать его напрямую невозможно, а автоматический подбор пароля осложнён низкой скоростью перебора вариантов, поэтому не забывайте свои пароли.


Данную защиту можно задать при сохранении книги, выбрав «Файл» – «Сохранить как» или клавишу F12, в окне сохранения нажать «Сервис» – «Общие параметры».

В появившемся окне можно ввести два разных пароля – на открытие файла (только чтение) и на изменение:

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

Если задать первый пароль (для открытия), то пользователь не сможет даже открыть файл для просмотра.

Если же пользователь знает первый пароль, но мы задали и второй (для изменения), то пользователю надо будет либо ввести пароль для изменения, либо ограничиться просмотром, нажав на кнопку «Только для чтения».

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

Кстати, в Microsoft Word этот способ тоже работает.


Суперскрытый лист


Иногда некоторые листы (например, с личными заметками) приходится скрывать от глаз пользователей. Простым способом является скрытие листа нажав правой кнопкой мыши по ярлыку листа «Скрыть», но это малоэффективно.

Чтобы улучшить защиту у нас должно быть открыто минимум два листа (т.к. один лист мы скроем), затем открываем редактор Visual Basic, на вкладке «Разработчик» или нажатием Alt+F11, выбираем «Visual Basic».


Нажатием Project Explorer или Ctrl+R откроется меню

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

В верхней части выделяем наш Лист1, а в нижней части находим свойство Visible и делаем его xlSheetVeryHidden.

Защита данных в Excel Excel, Защита, Защита информации, Полезное, На заметку, Длиннопост

Можно переименовать Лист2 на какое-нибудь слово, чтобы не палиться о наличии Листа1 и теперь узнать о его существовании можно только в редакторе Visual Basic, в других местах он отображаться не будет.


Берегите свои данные, чаще сохраняйтесь Shift+F12 и вы никогда ничего не потеряете.

Найдены дубликаты

+12
С офиса 2007 года, пароль снять с таблицы, две минуты делов то. Парольная защита в офисе это фикция и защита от реальных дураков.
https://answit.com/kak-snyat-parol-s-excel/ нужен только блокнот и все.
раскрыть ветку 26
+3
Абсолютно согласен. Мне по работе иногда приходится скачивать тендерную документацию, и снимать защиту от редактирования - пользуюсь именно этим способом. Однако однажды столкнулся с интересным способом защиты: пароль ставился автоматически на основе шифра Виженера. То есть, сам файл я открыть смог, отредактировать смог. Но перед сохранением опять ставилась защита паролем. И при повторном открытии файла он опять был защищён. Окончательно убрать защиту я смог только деактивировав макрос шифрования. Когда будет время я выложу пример макрос - думаю будет интересно
раскрыть ветку 10
+1
Выложи, пожалуйста. Я хочу посмотреть
раскрыть ветку 9
+3

вроде бы как раз в старом формате Excel, который xls, защита слабая, а в xlsx уже сильнее?

Но Elcomsoft Advanced Password Recovery и их ломает.

раскрыть ветку 1
+8

xlsx это xml в zip архиве, нет там никакой защиты

0

Пароль это защита от случайной разблокировки.

-1
Пароль с книги таким образом снять не получится (который запрашивается еще до открытия книги) в архиве не оказывается папки xl. Лично я всегда пользуюсь таким, чтобы даже содержимое не было видно посторонним.
раскрыть ветку 11
+2
Все получится. Способ с архивом универсальный. Просто надо тщательнее читать инструкции.
раскрыть ветку 10
+5

Спасибо, про ;;; не знал. Делал белым цветом, чтобы видно не было.
Мое шифрование, сделал, чтобы в рабочие листы не лазили. Исправят там, затем на меня гнали.


Sub Шифрование()


Листов = Worksheets.Count

For i = 2 To Листов


'Защита листа без выделения с генерацией случайного пароля

ActiveSheet.Protect (Rnd), DrawingObjects:=True, Contents:=True, Scenarios:=True

ActiveSheet.EnableSelection = xlNoSelection


'Скрываем листы так, чтобы они были не видны даже скрытыми

ActiveWorkbook.Sheets(i).Visible = xlSheetVeryHidden


Next i


End Sub

раскрыть ветку 4
+1
А ещё добавить защиту на открытие проекта VBA и вообще супер будет. Эта защита тоже снимается, но немного сложнее - потребуется шестандцатеричный редактор (его ещё надо найти, скачать, установить - не все будут морочиться)
раскрыть ветку 3
+5
А вообще я придумал свой универсальный способ защиты для действительно важных документов, которые никак не должны попасть в чужие руки:
Способ в обычном отвлечении внимания - на видимой части диапазона находятся какие то банальные данные, типа какого то бланка, или реестра или ещё чего-то неважного
А вся конфиденциальная информация находится в скрытом диапазоне строк, например, от 1000 и ниже.
Показ строк вызывается макросом при выделении определённой ячейки на листе, например, W1.
После редактирования данных скрытие строк и переход к видимому диапазону происходит вызовом другого макроса, при выделении, например, ячейки W1001
Лист кстати лучше запаролить. Пароли прописать в скрытом листе, например. Или использовать метод шифрования.

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

С этой защитой попытались морочаться, в той книге листов более 40.

раскрыть ветку 1
+2

Как отключить автоматический перевод числа в дату без смены числового формата ячейки? Когда вводишь например десятичное число 12.03 он исправляет на 12 марта. Я давно никак не могу найти способ.

раскрыть ветку 3
+1

контрл+1 тип ячейки - текстовый

0

Писать перед значением ‘

0
Попробуй через запятую писать. 12,03, у меня в таком случае не переводит
+1

Как работают три точки с запятой? Не показывать знак, не показывать целую часть, не показывать дробную часть?

+1
Замечательный пост. Про три ; тоже не знал, спасибо! :)
0
Помоги пожалуйста.
Хочу сделать так, чтоб при нажатии на ячейку выпадал список, в котором будет только текущая дата.
Выпадающий список я нашел, текущую дату нашел =сегодня(), но вот в список я ее не могу вставить, потому что в ячейке она автоматически меняет =сегодня() на текущую дату.
Может есть другой способ, более простой? Суть в том, чтоб сегодняшнюю дату было максимально легко вставить с телефона.
раскрыть ветку 1
0

Не знаю как это можно реализовать с телефона, но сочетание клавиш ctrl+shift+4 (которая над буквами) выставляет текущую дату. Ввод даты без разделителей попробуй этот способ, возможно он будет работать в телефоне, но я не проверял

0
Подскажите, пож-ста, как снять Шифрование листа, если при заведении пароля не была проставлена галка "рекомендовать доступ только для чтения"? Т.е.файл открывается и не выскакивает окно, предлагающее вести пароль. Сам пароль известен. А вот, где его вносить, чтобы изменить файл...🤷♀️ Пароль на изменения
раскрыть ветку 5
0

Чтобы снять защиту листа, сделайте следующее:

1. Выберите лист, защиту которого вы хотите снять.

2. Нажмите - Файл > Сведения > Защита > Снять защиту листа или РецензированиеИзменения > Снять защиту листа.

3. Введите пароль в диалоговом окне Защита листа и нажмите кнопку OK.

раскрыть ветку 4
0
Спасибо. Но это не то. Т.е.мой косяк, не правильно написала в своём вопросе. Шифрование не листа было сделано, а книги, через Файл - сохранить как - сервис - общие параметры. И в окне был введён пароль для изменений. Теперь, заходя в файл и что-то изменяя, в итоге даёт сохранить только копией файла. Окно о том, что файл доступен только для чтения не выскакивает при открытии (галка не была проставлена при запароливании).
раскрыть ветку 3
0
Прятать значения ячеек путем изменения формата отображения? К чему такой гемор? А если разные ячейки с разным форматом, потом еще и форматирование отдельно восстанавливать? Не проще ли цвет текста сделать цветом фона?
раскрыть ветку 2
+2

Такую защиту грамотный пользователь за пару секунд снимет, выделив весь текст и выбрав цвет чёрный, а с этим способом незнающему человеку придётся повозиться

0

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

0

Насколько я помню, пароль в экселе (в том числе и в VB) до 2007го снимался на раз-два.

С более новыми версиями - не в курcе

раскрыть ветку 7
0

Он и в нынешнем (по крайней мере, в 2013-ом) снимается просто удалением строчки из раззипованного эксемельника

раскрыть ветку 1
+1
Самое забавное было, что после какой-то манипуляции, мой тотал командер сам стал открывать все файлы офиса как архивы
0
Да есть проги, длинна ключа всего 40 бит и пароль на раз два подбирался, при такой длине ключа, подходило несколько разных ключей, с 07 офиса, чтобы снять пароль с экселевской таблицы, даже программ не надо.
раскрыть ветку 4
0

Благодаря системе шифрования AES 128-bit защита документа увеличивается в разы

раскрыть ветку 2
-1

Без подбора

-5

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

ещё комментарий
Похожие посты
569

Как напечатать заголовки таблицы Excel на каждой странице

Короткое видео на тему ⬇⬇⬇

Шаги:

Перейдите на вкладку Разметка страницы ► Печатать заголовки:

Как напечатать заголовки таблицы Excel на каждой странице Excel, Ms Office, Обучение, Офис, Маркетинг, Видео, Длиннопост, Полезное, Работа, Отдел кадров

В открывшемся окне, на вкладке Лист ► Печатать заголовки ► сквозные строки (для печати столбцов, сквозные столбцы):

Как напечатать заголовки таблицы Excel на каждой странице Excel, Ms Office, Обучение, Офис, Маркетинг, Видео, Длиннопост, Полезное, Работа, Отдел кадров

Добавьте ссылку на диапазон с заголовками (или столбцами):

Как напечатать заголовки таблицы Excel на каждой странице Excel, Ms Office, Обучение, Офис, Маркетинг, Видео, Длиннопост, Полезное, Работа, Отдел кадров

Готово.

Показать полностью 2
195

Три способа перевернуть таблицу в Excel

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


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

Короткое видео ⬇⬇⬇

Первый способ: Специальная вставка

Копируйте данные;

Встаньте в необходимом месте и нажав сочетание клавиш CTRL+ALT+V, или правая кнопка мыши (пкм), в меню иконка Транспонировать или выберите Специальная вставка:

Три способа перевернуть таблицу в Excel Excel, Ms Office, Обучение, Офис, Маркетинг, Видео, Длиннопост, Полезное, Работа

В открывшемся окне поставьте галку напротив Транспонировать:

Три способа перевернуть таблицу в Excel Excel, Ms Office, Обучение, Офис, Маркетинг, Видео, Длиннопост, Полезное, Работа

Готово.

Свойства: при обновлении данных в исходной таблице, данные в новой таблице не обновляются, это обычное копирование.

Способ второй: функция ТРАНСП

Выделите область, в которую необходимо вставить таблицу (в размер будущей перевернутой таблицы);

Введите =ТРАНСП(массив), где массив — это диапазон исходной таблицы;

Нажмите CTRL+SHIFT+ENTER, т.к. это формула массива и просто ENTER не сработает;

Готово.

Свойства: при обновлении данных в исходной таблице, данные в новой таблице обновляются.

Способ третий: транспонирование с помощью Power Query

В зависимости от версии вашего Excel, путь для загрузки в редактор может отличаться, подробнее в статье Power Query: мощь и простота работы с данными в Excel

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

Последовательно выполните действия:

1. Главная ► Использовать первую строку в качестве заголовка ► Использовать заголовки как первую строку;

2. Преобразование ► Транспонировать;

3. Главная ► Использовать первую строку в качестве заголовка;

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

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

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

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

Свойства: при добавлении или обновлении данных в исходной таблице, данные в новой таблице обновляются. Самый автоматизированный вариант, если вам нужны связанные данные. Связь может быть, как с таблицей в текущей книге, так и с другим файлом (-ами). Подробнее Excel Power Query: создание основных запросов

Показать полностью 1
540

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

В этой статье мы рассмотрим пример использования функции ВПР для подсчёта оставшегося количества дней до заданной даты.


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

Количество оставшихся дней до контрольной даты Excel, Сроки, Таблица, Впр, Полезное, На заметку

=-ВПР(;B2-ДАТА(ГОД(B2)+{1:0};МЕСЯЦ(A2);ДЕНЬ(A2));1)

=-VLOOKUP(;B2-DATE(YEAR(B2)+{1:0};MONTH(A2);DAY(A2));1)


Рассмотрим формулу подробнее:

- Искомое значение в ВПР() ноль, а массив в котором происходит поиск состоит из двух значений. Последний аргумент функции опущен.

Описание из справки формулы ВПР: «Интервальный_просмотр — это логическое значение, которое определяет, нужно ли, чтобы ВПР искала точное или приближенное соответствие. Если этот аргумент имеет значение ИСТИНА или опущен, то возвращается приблизительно соответствующее значение; другими словами, если точное соответствие не найдено, то возвращается наибольшее значение, которое меньше, чем искомое_значение».

- Найденное значение это и есть количество дней до контрольного дня, но со знаком минус. Знак минус перед ВПР() меняет знак результата.

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


Также есть другой вариант этой же формулы:

Количество оставшихся дней до контрольной даты Excel, Сроки, Таблица, Впр, Полезное, На заметку

=-ВПР(;B1-(МЕСЯЦ(A1)&{-1:0}-ГОД(B1))-ДЕНЬ(A1)+1;1)

=-VLOOKUP(;B1-(MONTH(A1)&{-1:0}-YEAR(B1))-DAY(A1)+1;1)


Кроме того, данный приём можно использовать для подсчёта оставшихся дней до дня рождения, применив в столбце «Текущая дата» формулу =СЕГОДНЯ()

Количество оставшихся дней до контрольной даты Excel, Сроки, Таблица, Впр, Полезное, На заметку

Формулы взяты отсюда, пост оформлен мною.

Показать полностью 2
640

Сортировка по дням рождения в Excel

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


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

Сортировка по дням рождения в Excel Excel, Таблица, День рождения, Сортировка, Полезное, На заметку, Длиннопост

Для отображения нужного порядка дней рождений сотрудников, нам необходимо сделать маленький приём.


В соседнем столбце используем функцию ТЕКСТ (TEXT), которая представляет числа и даты в заданном формате: =ТЕКСТ(B4;"ММ ДД")

Сортировка по дням рождения в Excel Excel, Таблица, День рождения, Сортировка, Полезное, На заметку, Длиннопост

Формат «ММ ДД» означает, что нужно из всей даты отобразить только номер месяца и день.


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

Сортировка по дням рождения в Excel Excel, Таблица, День рождения, Сортировка, Полезное, На заметку, Длиннопост

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


Выделяем весь список (кроме заголовка) и на вкладке Главная выбираем - Условное форматирование - Создать правило (Home - Conditional formatting - Create Rule). В появившемся окне выбираем - Использовать формулу для определения форматируемых ячеек и вводим формулу: =МЕСЯЦ($B2)<>МЕСЯЦ($B3)


В разделе Формат на вкладке Границы (Borders) выбираем нижнюю границу ячейки, задаём понравившийся цвет линии и убираем лишние знаки доллара в формуле, чтобы закрепить в ней только столбцы.

Сортировка по дням рождения в Excel Excel, Таблица, День рождения, Сортировка, Полезное, На заметку, Длиннопост

Также можно на вкладке Вид выбрать Закрепить областиЗафиксировать верхнюю строку и ввести формулу =СЕГОДНЯ() для ежедневного обновления даты и визуального удобства.


P.S. При создании таблицы ни один шрифт не пострадал, только глаза)))

Шрифты для друзей _Arabian, a_Algerius, WienLight, Benguiat Rus, Romic

Показать полностью 3
393

ВПР и числа-как-текст

Обычные числа и числа-как-текст (т.е. числа, которые только выглядят как числа, а, по-сути, являются текстом) - это причина многих проблем и сложностей при работе с данными в Microsoft Excel. Одна из подобных ситуаций - использование функции ВПР (VLOOKUP) для поиска и подстановки, когда в исходных данных есть эти пресловутые числа в текстовом формате.


Рассмотрим классический пример - подстановку цен из прайс-листа в таблицу заказов по совпадению артикулов:

ВПР и числа-как-текст Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Как и множество других функций и инструментов Excel, ВПР считает числа как текст не равноценными этим же числам в нормальном виде, поэтому выдаёт ошибку #Н/Д, сигнализируя, что искомое значение не обнаружено, хотя визуально оно, вроде бы, есть.


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


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


Вариант 1. Числа-как-текст в искомых значениях


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


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

- умножения или деления на 1

- прибавления или вычитания 0

- двойного знака минус перед артикулом (равносильно двойному умножению на -1)


Значение артикула от выполнения такой безобидной математической операции никак не изменится, но сам факт её выполнения заставит Excel воспринимать артикул именно как число. А значит и ВПР найдет текстовые значения без проблем:

ВПР и числа-как-текст Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Вариант 2. Числа-как-текст в таблице, где ищем


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

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

ВПР и числа-как-текст Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

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


Вариант 3. Пропадание начальных нулей


Частным случаем предыдущего примера бывает сценарий, когда артикулы в прайс-листе не просто текстовые, но ещё и содержат нули в начале строк, дополняющие их до заданной разрядности. Тут поможет функция ТЕКСТ (TEXT), которая умеет любое число выводить как текст по заданному шаблону:

ВПР и числа-как-текст Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Вариант 4. Числа-как-текст вперемешку с числами в обеих таблицах


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

Звучит страшно, но решается легко - нужно просто скомбинировать первый и второй способы, вложив их в функцию ЕСЛИОШИБКА (IFERROR). Эта функция прокачает обе версии ВПР - "текстовую" и "числовую" - и выдаст ту, которая не приводит к ошибке #Н/Д:

ВПР и числа-как-текст Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Вот и всё - и никаких больше ошибок :)

Источник

Показать полностью 4
269

Редизайнер таблиц в Excel

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


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

- простая однострочная шапка, где у каждого столбца будет свое уникальное название (имя поля)

- одна строка - одна законченная операция (сделка, продажа, проводка, проект и т.д.)

- без объединенных ячеек

- без разрывов в виде пустых строк и столбцов


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

из такой таблицы

Редизайнер таблиц в Excel Excel, Макрос, Vba, Таблица, Полезное, На заметку, Длиннопост

сделать

Редизайнер таблиц в Excel Excel, Макрос, Vba, Таблица, Полезное, На заметку, Длиннопост

В терминах баз данных нижнюю таблицу обычно называют плоской (flat) - именно по таким таблицам лучше всего строить отчеты сводных таблиц (pivot tables) и проводить аналитику.


Преобразовать двумерную таблицу в плоскую можно при помощи простого макроса. Откройте редактор Visual Basic через вкладку Разработчик - Visual Basic (Developer - Visual Basic Editor) или сочетанием клавиш Alt+F11. Вставьте новый модуль (Insert - Module) и скопируйте туда текст этого макроса:

Sub Redesigner()

Dim i As Long

Dim hc As Integer, hr As Integer

Dim ns As Worksheet

hr = InputBox("Сколько строк с подписями сверху?")

hc = InputBox("Сколько столбцов с подписями слева?")

Application.ScreenUpdating = False

i = 1

Set inpdata = Selection

Set ns = Worksheets.Add

For r = (hr + 1) To inpdata.Rows.Count

For c = (hc + 1) To inpdata.Columns.Count

For j = 1 To hc

ns.Cells(i, j) = inpdata.Cells(r, j)

Next j

For k = 1 To hr

ns.Cells(i, j + k - 1) = inpdata.Cells(k, c)

Next k

ns.Cells(i, j + k - 1) = inpdata.Cells(r, c)

i = i + 1

Next c

Next r

End Sub

После этого можно закрыть редактор VBA и вернуться в Excel. Теперь можно выделить исходную таблицу (полностью, с шапкой и первым столбцом с месяцами) и запустить наш макрос через Разработчик - Макросы (Developer - Macros) или нажав сочетание Alt+F8.


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


Также есть второй вариант для работы с большими таблицами

Sub Redesigner()

Dim inpdata As Range, realdata As Range, ns As Worksheet

Dim i&, j&, k&, c&, r&, hc&, hr&

Dim out(), dataArr, hcArr, hrArr

hr = Val(InputBox("Сколько строк с подписями данных сверху?"))

hc = Val(InputBox("Сколько столбцов с подписями данных слева?"))

Set inpdata = Selection

If inpdata.Rows.Count <= hr Or inpdata.Columns.Count <= hc Then Exit Sub

Set realdata = inpdata.Offset(hr, hc).Resize(inpdata.Rows.Count - hr, inpdata.Columns.Count - hc)

dataArr = realdata.Value

If hr Then hrArr = inpdata.Offset(0, hc).Resize(hr, inpdata.Columns.Count - hc).Value

If hc Then hcArr = inpdata.Offset(hr, 0).Resize(inpdata.Rows.Count - hr, hc).Value

ReDim out(1 To Application.CountA(realdata), 1 To hr + hc + 1)

Set ns = Worksheets.Add

For i = 1 To UBound(dataArr, 1)

For j = 1 To UBound(dataArr, 2)

If Not IsEmpty(dataArr(i, j)) Then

k = k + 1

For c = 1 To hc: out(k, c) = hcArr(i, c): Next c

For r = 1 To hr: out(k, c + r - 1) = hrArr(r, j): Next r

out(k, c + r - 1) = dataArr(i, j)

End If

Next j, i

ns.Cells(2, 1).Resize(UBound(out, 1), UBound(out, 2)) = out

End Sub

Редизайн таблиц сэкономит кучу времени, нервов и сил, чтобы в оставшееся время почитать пикабу))

Взято отсюда

Показать полностью
214

Надстройка для MS Excel (часть 2)

Всем привет!

В прошлом посте я представил на суд общественности свой open-source проект - надстройку для MS Excel, с набором полезных функций. Пост был встречен очень тепло, многие пикабушники оставили пожелания о добавлении новых функций, а несколько человек написали мне с предложениями подключиться к разработке. Спасибо @1041618 за редизайн - мы обзавелись новыми иконками в едином стиле и поддержкой серой и тёмной тем, а также учитываем в локализации язык пакета MS Office.

Надстройка для MS Excel (часть 2) Excel, Надстройка, Полезное, Длиннопост

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


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

Транслитерация кириллицы в латинские буквы


Конвертирует содержимое текстовых ячеек, содержащих символы кириллицы, в латинские символы (по стандарту ICAO doc 9303), за идею спасибо @negotivko

Надстройка для MS Excel (часть 2) Excel, Надстройка, Полезное, Длиннопост

Подсветка дублей


Раскрашивает разными цветами группы одинаковых значений:

Надстройка для MS Excel (часть 2) Excel, Надстройка, Полезное, Длиннопост

«Размерживание» объединенных ячеек с их заполнением


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

Экспорт таблицы в markdown


Markdown - это удобный язык разметки, используемый при форматировании текстов во многих системах: wiki (Confluence), GitHub, Gitlab, Reddit, Stack Exchange, OpenStreetMap и множество других. Функция копирования таблицы в markdown помещает в буфер обмена отформатированную таблицу с заголовками, и Вы легко можете вставить ее в свой документ:

Надстройка для MS Excel (часть 2) Excel, Надстройка, Полезное, Длиннопост

Проверка значений в выделенных ячейках (числа, даты, ИНН ЮЛ/ФЛ и т.д.)


Можно проверить, например, список ИНН организаций на корректность (по контрольным цифрам в номере):

Надстройка для MS Excel (часть 2) Excel, Надстройка, Полезное, Длиннопост

Кроме того, есть две функции по работе с XML-файлами. Они не относятся напрямую к функциональности Excel, но иногда в них возникает потребность:

Сформировать пример XML файла на основе XSD-схемы


Если у вас есть файл XSD, который содержит xml-схему, Вы можете сформировать образец XML-файла на основе этой схемы:

Надстройка для MS Excel (часть 2) Excel, Надстройка, Полезное, Длиннопост

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


Проверить XML по XSD-схеме


Позволяет проверить имеющийся XML-документ на соответствие схеме, описанной в XSD-файле. Выберите оба файла, и при наличии ошибок все они будут выведены на лист Excel.

Установка надстройки


Для установки надстройки выберите последнюю по времени успешную сборку пайплайна NavfertyExcelAddIn - Publish и скачайте опубликованные файлы:

Надстройка для MS Excel (часть 2) Excel, Надстройка, Полезное, Длиннопост

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


Для установки надстройки нужно запустить файл .vsto


Хотел бы предупредить об одном ограничении: при вызове функций надстройки (как COM-надстроек, так и VBA) в MS Excel очищается стек последних действий пользователя для отмены (Undo). Я работаю над тем, чтобы обойти это ограничение хотя бы для возможности отмены выполнения самой функции, но пока что будьте внимательны при запуске функций - отменить действие можно будет, только закрыв книгу без сохранения.


Более подробная инструкция по установке, а также инструкции по использованию и исходный код - на странице проекта в гитхабе:

https://github.com/navferty/NavfertyExcelAddIn


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


Если Вы .NET-разработчик и хотите присоединиться к работе над проектом, пишите мне на почту (указана в профиле гитхаба), заводите issue и пулл-реквесты.

Если Вы только изучаете платформу .NET, и хотите поучаствовать - не стесняйтесь! Читайте исходный код, задавайте вопросы, если что-то непонятно - буду рад объяснить и поделиться знаниями =)

Показать полностью 6
859

Надстройка для MS Excel

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

Надстройка для MS Excel Excel, Надстройка, Полезное, Длиннопост

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


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

Ниже приведу краткое описание некоторых функций.

Конвертация чисел, форматированных как текст


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


Ниже пример преобразования чисел при помощи надстройки. Столбец B для примера заполнен формулой "=A2+1", которая демонстрирует, является ли значение слева числом:

Надстройка для MS Excel Excel, Надстройка, Полезное, Длиннопост

Переключение регистра текста


В MS Word есть удобная функция, доступная по Shift+F3, которая переключает регистр выделенного текста (в последовательности "Sentence case" -> "lowercase" -> "UPPERCASE"). Иногда такой функции не хватает и в Excel, но надстройка восполняет этот пробел:

Надстройка для MS Excel Excel, Надстройка, Полезное, Длиннопост

Очистка текста от пробельных символов


Позволяет очистить текст от пробелов в начале и конце значения, а также от повторяющихся пробелов и переносов строки в середине текста:

Надстройка для MS Excel Excel, Надстройка, Полезное, Длиннопост

Интерактивный поиск ячеек, в которых произошла ошибка вычисления


Показывает список всех ячеек с ошибкой (например, "#Н/Д"), и позволяет быстро перемещаться к выбранной ячейке:

Надстройка для MS Excel Excel, Надстройка, Полезное, Длиннопост

И другие функции:


- Подсветка дублей (разными цветами группы одинаковых значений)

- «Размерживание» объединенных ячеек с их заполнением

- Снятие пароля с защищённой книги и листов

- Экспорт таблицы в markdown

- Проверка значений в выделенном диапазоне ячеек (числа, даты, корректный ИНН ЮЛ/ФЛ и т.д.)


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


- Сформировать пример XML файла на основе XSD-схемы

- Проверить XML по XSD-схеме


Установка надстройки


Для автоматической сборки установочных файлов настроена сборка в Azure.

Выберите последнюю по времени успешную сборку пайплайна NavfertyExcelAddIn - Publish и скачайте опубликованные файлы:

Надстройка для MS Excel Excel, Надстройка, Полезное, Длиннопост

Важный момент: при установке надстройки Excel "запоминает" путь к папке, из которой она была установлена, и в будущем установка обновлений будет возможна только из этой папки, в противном случае нужно будет воспользоваться "установкой и удалением программ" через Панель управления Windows.


Для установки надстройки нужно запустить файл .vsto. Разумеется, установка возможно только при наличии установленного MS Excel =)


Если всё сделано правильно, то Вы увидите новую вкладку при следующем запуске Excel:

Надстройка для MS Excel Excel, Надстройка, Полезное, Длиннопост

Если Вы .NET-разработчик и хотите присоединиться к работе над проектом, пишите мне на почту (указана в профиле гитхаба), заводите issue и пулл-реквесты.

Если Вы только изучаете платформу .NET, и хотите поучаствовать - не стесняйтесь! Читайте исходный код, задавайте вопросы, если что-то непонятно - буду рад объяснить и поделиться знаниями =)

Еще раз ссылка на проект (там же инструкции по использованию и установке):

https://github.com/navferty/NavfertyExcelAddIn

Показать полностью 6
591

Отслеживание входа пользователей в книгу Excel

Как понятно из заголовка, мы сделаем так, чтобы открытие рабочего файла на общем сетевом диске не осталось бесследным. Макрос будет фиксировать на отдельном (скрытом) листе имя пользователя, открывшего файл, а также дату-время открытия и закрытия файла.


Этап 1. Создаем "Лог"

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

Отслеживание входа пользователей в книгу Excel Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Этап 2. Макросы фиксации входа-выхода

Теперь добавим макросы для записи на лист Лог даты-времени и имен пользователей при открытии и закрытии книги. Для этого нужно открыть редактор Visual Basic с помощью сочетания Alt+F11 или с помощью кнопки Visual Basic на вкладке Разработчик (Developer) и найти в левом верхнем углу панель Project (если она не отображается, то включить ее можно сочетанием клавиш Ctrl+R):

Отслеживание входа пользователей в книгу Excel Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Двойным щелчком откройте модуль ЭтаКнига (ThisWorkbook) и вставьте туда пару наших макросов для обработки событий открытия и закрытия книги:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'ищем последнюю занятую строчку в логах

lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row

'заносим дату-время выхода из файла

If lastrow>1 Then Worksheets("Лог").Cells(lastrow, 3) = Now

'сохраняемся перед выходом

ActiveWorkbook.Save

End Sub

Private Sub Workbook_Open()

'ищем последнюю занятую строчку в логах

lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row

'заносим имя пользователя и дату-время входа в файл

Worksheets("Лог").Cells(lastrow + 1, 1) = Environ("USERNAME")

Worksheets("Лог").Cells(lastrow + 1, 2) = Now

End Sub

Попробуйте открыть-закрыть этот файл пару раз и убедитесь, что на лист Лог попадает ваше имя пользователя (логин входа в Windows) и дата-время:

Отслеживание входа пользователей в книгу Excel Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Этап 3. Улучшаем надежность

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

Отслеживание входа пользователей в книгу Excel Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Но что если пользователь не разрешит выполнение макросов или они отключены у него по умолчанию? Тогда наши макросы отслеживания выполняться не будут и фиксации имени и даты не произойдет :( Как же заставить пользователя разрешить использование макросов?

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

Отслеживание входа пользователей в книгу Excel Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Суть в том, чтобы по умолчанию скрыть в книге все листы кроме этого, а рабочие листы с данными отображать с помощью специального макроса. Если пользователь не разрешил выполнение макросов, то он увидит в книге только один лист с предупреждением. Если же макросы разрешены, то наш макрос обработки события открытия книги скроет лист с предупреждением и отобразит листы с данными. Чтобы пользователь сам не отобразил их - используем суперскрытие вместо обычного скрытия листов (параметр xlSheetVeryHidden вместо обычного False).

Чтобы реализовать все описанное, слегка изменим наши процедуры в модуле ЭтаКнига (ThisWorkbook)

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'ищем последнюю занятую строчку в логах

lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row

'заносим дату-время выхода из файла

If lastrow > 1 Then Worksheets("Лог").Cells(lastrow, 3) = Now

'скрываем все листы, кроме листа ПРЕДУПРЕЖДЕНИЕ

Worksheets("Предупреждение").Visible = True

For Each sh In ActiveWorkbook.Worksheets

If sh.Name = "Предупреждение" Then

sh.Visible = True

Else

sh.Visible = xlSheetVeryHidden

End If

Next sh

'сохраняемся перед выходом

ActiveWorkbook.Save

End Sub


Private Sub Workbook_Open()

'ищем последнюю занятую строчку в логах

lastrow = Worksheets("Лог").Range("A60000").End(xlUp).Row

'заносим имя пользователя и дату-время входа в файл

Worksheets("Лог").Cells(lastrow + 1, 1) = Environ("USERNAME")

Worksheets("Лог").Cells(lastrow + 1, 2) = Now

'отображаем все листы

For Each sh In ActiveWorkbook.Worksheets

sh.Visible = True

Next sh

'скрываем листы ПРЕДУПРЕЖДЕНИЕ и ЛОГ

Worksheets("Предупреждение").Visible = xlSheetVeryHidden

Worksheets("Лог").Visible = xlSheetVeryHidden

End Sub

Чтобы просмотреть скрытый Лог откройте редактор VisualBasic (Alt+F11), выделите лист на панели Project и измените его видимость на панели Properties, используя свойство Visible:

Отслеживание входа пользователей в книгу Excel Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Если пользователи настолько продвинутые, что знают про суперскрытые листы и могут их отобразить через редактор Visual Basic или нарушить работу наших макросов, то можно дополнительно поставить пароль на просмотр и изменение макросов. Для этого щелкните правой кнопкой мыши по имени файла в панели Project (строка VBAProject (blackbox.xls)), выберите команду VBA Project Properties и включите флажок Lock project for viewing и задайте пароль на вкладке Protection:

Отслеживание входа пользователей в книгу Excel Excel, Vba, Макрос, Полезное, Контроль, На заметку, Длиннопост, Системное администрирование

Теперь точно никто не уйдет безнаказанным.


Интересные поправки в макрос из комментария источника:

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

Private Sub Workbook_Open()

Worksheets("Реестр изменений").Rows("2:2").Insert Shift:=xlDown 'вставляем между строками 1 и 2 новую строку

Worksheets("Реестр изменений").Rows("501:501").Delete Shift:=xlUp 'удаляем строку 501 (реестр на 500 строк)

Worksheets("Реестр изменений").Cells(2, 1) = Environ("USERNAME") 'запись в первую ячейку второй строки

Worksheets("Реестр изменений").Cells(2, 2) = Now 'запись во вторую ячейку второй строки

Показать полностью 5
160

Макрос для выделения дубликатов разными цветами

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

Достаточно выделить диапазон, задать цвет заливки, - и все повторяющиеся (или, наоборот, уникальные) значения будут выделены.

Но иногда требуется, чтобы различные повторяющиеся значения были выделены РАЗНЫМИ ЦВЕТАМИ.

В этом случае, без макросов не обойтись. Нажимаем сочетание клавиш Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer), вставляем новый пустой модуль через меню Insert - Module и копируем туда код этого макроса:

Sub ВыделитьДубликатыРазнымиЦветами()

On Error Resume Next

' массив цветов, используемых для заливки ячеек-дубликатов

Colors = Array(12900829, 15849925, 14408946, 14610923, 15986394, 14281213, 14277081, _

9944516, 14994616, 12040422, 12379352, 15921906, 14336204, 15261367, 14281213)

Dim coll As New Collection, dupes As New Collection, _

cols As New Collection, ra As Range, cell As Range, n&

Err.Clear: Set ra = Intersect(Selection, ActiveSheet.UsedRange)

If Err Then Exit Sub

ra.Interior.ColorIndex = xlColorIndexNone: Application.ScreenUpdating = False

For Each cell In ra.Cells ' запонимаем значение дубликатов в коллекции dupes

Err.Clear: If Len(Trim(cell)) Then coll.Add CStr(cell.Value), CStr(cell.Value)

If Err Then dupes.Add CStr(cell.Value), CStr(cell.Value)

Next cell

For i& = 1 To dupes.Count ' заполняем коллекцию cols цветами для разных дубликатов

n = n Mod (UBound(Colors) + 1): cols.Add Colors(n), dupes(i): n = n + 1

Next

For Each cell In ra.Cells ' окрашиваем ячейки, если для её значения назначен цвет

cell.Interior.color = cols(CStr(cell.Value))

Next cell

Application.ScreenUpdating = True

End Sub

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

Макрос для выделения дубликатов разными цветами Excel, Макрос, Vba, Полезное, На заметку

Плюсом этого макроса является то, что он не виснет при выделении всего листа (или столбца) целиком и не вылетает с ошибкой, если найдено более 55 дубликатов. Макрос взят здесь

Показать полностью 1
618

Сравнение скорости работы функции ВПР

Сравнение проведено Николаем Павловым на таблице в 500.000 и 600 строк. Тестируемые функции:

1. ВПР

2. ВПР с выделением столбцов целиком

3. ИНДЕКС и ПОИСКПОЗ

4. СУММЕСЛИ

5. СУММПРОИЗВ

6. ПРОСМОТР

7. Новая функция ПРОСМОТРХ

8. Запрос Power Query

- Итоговая таблица и выводы

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Это книга Excel с одним листом, где расположены две таблицы: отгрузки (500 000 строк) и прайс-лист (600 строк).

Задача - подставить цены из прайс-листа в таблицу отгрузок. Для каждого способа будем вводить формулу в ячейку С2 и копировать вниз на весь столбец, замеряя время, которое потребуется Excel, чтобы просчитать весь столбец из полумиллиона ячеек. Полученные значения, безусловно, зависят от множества факторов (поколение процессора, объем оперативной памяти, текущая загрузка системы, версия Office и т.д.), но нам важны не конкретные цифры, а, скорее, их сравнение друг с другом. Важно понимать прожорливость каждого способа и их ограничения.


Способ 1. ВПР

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Здесь участвуют следующие аргументы:

B2 - искомое значение, т.е. название товара, который мы хотим найти в прайс-листе

$G$2:$H$600 - закреплённая знаками доллара (чтобы не сползала при копировании формулы вниз) абсолютная ссылка на прайс

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

0 или ЛОЖЬ - переключение в режим поиска точного соответствия, когда любое некорректное название товара (например, ФОНЕРА) в столбце "B" в таблице отгрузок приведёт к появлению ошибки #Н/Д как результата работы функции.

Время вычисления = 4,3 сек.

Способ 2. ВПР с выделением столбцов целиком

Многие пользователи, применяя ВПР, во втором аргументе этой функции, где нужно задать поисковую таблицу (прайс), выделяют не ограниченный диапазон ($G$2:$H$600), а сразу столбцы G:H целиком. Это проще, быстрее, позволяет не думать про F4 и то, что завтра прайс-лист может быть на несколько строк больше. Формула в этом случае выглядит тоже компактнее:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

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

Время вычисления = 14,5 сек.

Способ 3. ИНДЕКС и ПОИСКПОЗ

Следующей после ВПР ступенью эволюции для многих пользователей Excel обычно является переход на использование связки функций ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH). Выглядит эта формула так:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Здесь:

Функция ИНДЕКС извлекает из заданного в первом аргументе диапазона (столбца $H$2:$H$600 с ценами в прайс-листе) содержимое ячейки с заданным номером. А номер этот, в свою очередь, определяется функцией ПОИСКПОЗ, у которой три аргумента:

- Что нужно найти - название товара из B2

- Где мы это ищем - столбец с названиями товаров в прайсе ($G$2:$G$600)

- Режим поиска: 0 - точный, 1 или -1 - приблизительный с округлением в меньшую или большую сторону, соответственно.


Формула выходит чуть сложнее, но, при этом имеет несколько ощутимых преимуществ перед классической ВПР, а именно:

- Не нужно отсчитывать номер столбца (как в третьем аргументе ВПР).

- Можно извлекать данные, которые находятся левее столбца, где происходит поиск.

По скорости, однако же, этот способ проигрывает ВПР почти в два раза:

Время вычисления = 7,8 сек.

Если же, вдобавок, полениться и выделять не ограниченные диапазоны, а столбцы целиком:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

... то результат получается совсем печальный:

Время вычисления = 28,5 сек.

Способ 4. СУММЕСЛИ

Если нужно найти не текстовые, а именно числовые данные (как в нашем случае - цену), то вместо ВПР вполне можно использовать функцию СУММЕСЛИ (SUMIF). Изначально она задумывалась как инструмент для выборочного суммирования данных по условию (найди и сложи мне все продажи кабелей, например), но можно заставить её искать нужный нам товар и в прайс-листе. Если грузы в нём не повторяются, то суммировать будет не с чем и эта функция просто выведет искомое значение:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Здесь:

- Первый аргумент СУММЕСЛИ - это диапазон проверяемых ячеек, т.е. названия товаров в прайсе ($G$2:$G$600).

- Второй аргумент (B2) - что мы ищем.

- Третий аргумент - диапазон ячеек с ценами $H$2:$H$600, числа из которых мы хотим просуммировать, если в соседних ячейках проверяемого диапазона есть искомое значение.


Очевидным минусом такого подхода является то, что он работает только с числами. Также этот способ не удобен, если прайс-лист находится в отдельном файле - придется всё время держать его открытым, т.к. функция СУММЕСЛИ не умеет брать данные из закрытых книг, в отличие от ВПР, для которой это не проблема.


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

Время вычисления = 12,8 сек.

При выделении столбцов целиком, т.е. использовании формулы вида =СУММЕСЛИ(G:G; B2; H:H) всё ещё хуже:

Время вычисления = 41,7 сек.

Способ 5. СУММПРОИЗВ

Этот подход сейчас встречается не часто, но всё ещё достаточно регулярно. Обычно так любят извращаться пользователи старой школы, ещё хорошо помнящие те времена, когда в Excel было всего 255 столбцов и 56 цветов :)


Суть этого метода заключается в использовании функции СУММПРОИЗВ (SUMPRODUCT), изначально предназначенной для поэлементного перемножения нескольких диапазонов с последующим суммированием полученных произведений. В нашем случае, вместо одного из массивов будет выступать условие, а вторым будут цены:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Выражение ($G$2:$G$600=B2), по сути, проверяет каждое название груза в прайс-листе на предмет соответствия искомому значению (ФАНЕРА ПР). Результатом каждого сравнения будет логическое значение ИСТИНА (TRUE) или ЛОЖЬ (FALSE), что в Excel интерпретируется как 1 и 0, соответственно. Последующее умножение этих нулей и единиц на цены оставит в живых цену только того товара, который нам, в данном случае, и нужен.


Эта формула является, по сути, формулой массива, но не требует нажатия обычного для них сочетания клавиш Ctrl+Shift+Enter, т.к. функция СУММПРОИЗВ поддерживает массивы уже сама по себе. Возможно, по этой же причине (формулы массива всегда медленнее, чем обычные) такой скорость пересчёта такой формулы - не очень:

Время вычисления = 11,8 сек.

К плюсам же такого подхода можно отнести:

- Совместимость с любыми, самыми древними версиями Excel.

- Возможность задавать сложные условия (и несколько)

- Способность этой формулы работать с данными из закрытых файлов, если добавить перед ней двойное бинарное отрицание (два подряд знака "минус"). СУММЕСЛИМН таким похвастаться не может.


Способ 6. ПРОСМОТР

Ещё один относительно экзотический способ поиска и подстановки данных, наравне с ВПР - это использование функции ПРОСМОТР (LOOKUP). Только не перепутайте её с новой функцией ПРОСМОТРХ (XLOOKUP) - про неё мы поговорим дальше особо. Функция ПРОСМОТР существовала в Excel начиная с самых ранних версий и тоже вполне может решить нашу задачу:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Здесь:

- B2 - название груза, которое мы ищем

- $G$2:$G$600 - одномерный диапазон-вектор (столбец или строка), где мы ищем совпадение

- $H$2:$H$600 - такого же размера диапазон, откуда нужно вернуть найденный результат (цену)


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

- Эта функция требует обязательной сортировки прайс-листа по возрастанию (алфавиту) и без этого не работает.

- Если в таблице отгрузок искомое значение будет написано с опечаткой (например, АГЕДОЛ вместо АГИДОЛ), то функция ПРОСМОТР выдаст не ошибку #Н/Д, а цену для ближайшего предыдущего товара:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

При работе с неидеальными данными в реальном мире это гарантированно создаст проблемы, как вы понимаете.

Скорость же вычислений у функции ПРОСМОТР (LOOKUP) весьма приличная:

Время вычисления = 7,6 сек.

Способ 7. Новая функция ПРОСМОТРХ

Эта функция пришла с одним из недавних обновлений пока только пользователям Office 365 и пока отсутствует во всех остальных версиях (Excel 2010, 2013, 2016, 2019). По сравнению с классической ВПР у этой функции есть масса преимуществ (упрощенный синтаксис, возможность искать не только сверху-вниз, возможность сразу задать значение вместо #Н/Д и т.д.) Формула для решения нашей задачи будет выглядеть в этом случае так:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Если не брать в расчёт необязательные 4,5,6 аргументы, то синтаксис этой функции полностью совпадает с её предшественником - функцией ПРОСМОТР (LOOKUP). Скорость вычислений при тестировании на наши 500000 строк тоже оказалась аналогичной:

Время вычисления = 7,6 сек.

Почти в два раза медленнее, чем у ВПР, вместо которой Microsoft предлагает теперь использовать ПРОСМОТРХ. Жаль.

И, опять же, если полениться и выделить диапазоны в прайс-листе целыми столбцами:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

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

Время вычисления = 28,3 сек.

А если на динамических массивах?

Прошлогоднее (осень 2019) обновление вычислительного движка Microsoft Excel добавило ему поддержку динамических массивов (Dynamic Arrays). Это принципиально новый подход к работе с данными, который можно использовать почти с любыми классическими функциями Excel. На примере ВПР это будет выглядеть так:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

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


Скорость пересчета в таком варианте меня, откровенно говоря, ошеломила - пауза между нажатием на Enter после ввода формулы и получением результатов почти отсутствовала.

Время вычисления = 1 сек.

Что интересно, и новая ПРОСМОТРХ, и старая ПРОСМОТР, и связка ИНДЕКС+ПОИСКПОЗ в таком режиме тоже были очень быстрыми - время вычислений не больше 1 секунды! Фантастика.


А вот олдскульные подходы на основе СУММПРОИЗВ и СУММЕСЛИ(МН) с динамическими массивами работать отказались :(


Что с умными таблицами?

Обрадовавшись фантастическим результатам, полученным на динамических массивах, я решил вдогон попробовать протестировать разницу в скорости при работе с обычными и "умными" таблицами. Я имею ввиду те самые "красивые таблицы", в которые вы можете преобразовать ваш диапазон с помощью команды Форматировать как таблицу на вкладке Главная (Home - Format as Table) или с помощью сочетания клавиш Ctrl+T.


Если предварительно превратить наши отгрузки и прайс в "умные" (по умолчанию они получат имена Таблица1 и Таблица2, соответственно), то формула с той же ВПР будет выглядеть как:

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Здесь:

[@Груз] - ссылка на ячейку B2, означающая, в данном случае, что нужно взять значение из той же строки из столбца Груз текущей умной таблицы.

Таблица2 - ссылка на прайс-лист


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


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

Время вычисления = 1 сек.

У меня есть подозрение, что дело тут не в самих "умных" таблицах, а всё в том же обновлении вычислительного движка, т.к. на старых версиях Excel такого прироста в скорости на умных таблицах я не помню.


Бонус. Запрос Power Query

Замерять, так замерять! Давайте, для полноты картины, сравним наши перечисленные способы еще и с запросом Power Query, который тоже может решить нашу задачу. Кто-то скажет, что некорректно сравнивать пересчёт формул с механизмом обновления запроса, но мне, откровенно говоря, просто самому было интересно - кто быстрее?

Итак:

1. Превращаем обе наши таблицы в "умные" с помощью команды Форматировать как таблицу на вкладке Главная (Home - Format as Table) или с помощью сочетания клавиш Ctrl+T.

2. По очереди загружаем таблицы в Power Query с помощью команды Данные - Из таблицы / диапазона (Data - From Table/Range).

3. После загрузки в Power Query возвращаемся обратно в Excel, оставляя загруженные данные как подключение. Для этого в окне Power Query выбираем Главная - Закрыть и загрузить - Закрыть и загрузить в... - Только создать подключение (Home - Close&Load - Close&Load to... - Only create connection).

4. После того, как обе исходные таблицы будут загружены как подключения, создадим ещё один, третий запрос, который будет объединять их между собой, подставляя цены из прайса в отгрузки. Для этого на вкладке Данные выберем Получить данные / Создать запрос - Объединить запросы - Объединить (Get Data / New Query - Merge queries - Merge):

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

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

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

После нажатия на ОК мы вернемся в окно Power Query, где увидим нашу таблицу отгрузок с добавленным к ней столбцом, где в каждой ячейке будет лежать фрагмент прайс-листа, соответствующий этому грузу. Развернем вложенные таблицы с помощью кнопки с двойными стрелками в шапке столбца, выбрав нужные нам данные (цены):

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

7. Останется выгрузить готовую таблицу обратно на лист с помощью уже знакомой команды Главная - Закрыть и загрузить (Home - Close&Load).


В отличие от формул, запросы Power Query не обновляются автоматически "на лету", а требуют щелчка правой кнопкой мыши по таблице (или запросу в правой панели) и выбору команды Обновить (Refresh). Также можно воспользоваться командой Обновить все (Refresh All) на вкладке Данные (Data).

Время обновления = 8,2 сек.

Итоговая таблица и выводы

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

Сравнение скорости работы функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Само-собой, у каждого из нас свои предпочтения, задачи и тараканы, но для себя я сформулировал выводы после этого тестирования так:

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

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

- Экзотические способы из прошлого типа СУММПРОИЗВ и СУММЕСЛИ - в топку. Они работают очень медленно и, вдобавок, не поддерживают динамические массивы.

- Динамические массивы и умные таблицы - это будущее.

Показать полностью 15
451

Ад Условного Форматирования в Excel

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


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

Ад Условного Форматирования в Excel Excel, Таблица, Полезное, На заметку, Длиннопост

Для наглядности к таблице добавлены три правила условного форматирования:

Ад Условного Форматирования в Excel Excel, Таблица, Полезное, На заметку, Длиннопост

Первое правило делает синие гистограммы на столбце с суммами сделок.

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

Третье - делает нижнюю границу всей строки красной, если день меняется на следующий, т.е. дата в текущей строке не равна дате в следующей.


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

Ад Условного Форматирования в Excel Excel, Таблица, Полезное, На заметку, Длиннопост

Красная линия между 2 и 3-м марта почему-то исчезла, а наше правило условного форматирования для разделения дат развалилось на два, причем одно из них с ошибкой #ССЫЛКА (т.е. не работает), а другое применяется к двум не смежным диапазонам A2:E8 и A10:E29 (не ко всей таблице!).

Шикарно, правда?!


Теперь представим, что Кирилл Краснов повторил свою сделку в Тольятти с магазином "Лента" (строка 25) и вам нужно внести эти данные в таблицу.

Как вы поступите?

Скорее всего, как любой нормальный человек, вы скопируете 25-ю строчку и вставите её в конец таблицы, верно?

Ад Условного Форматирования в Excel Excel, Таблица, Полезное, На заметку, Длиннопост

Ага, и получите в наследство вот такой бардак в правилах условного форматирования:

Ад Условного Форматирования в Excel Excel, Таблица, Полезное, На заметку, Длиннопост

Excel зачем-то продублировал те же правила для добавленной строки вместо того, чтобы просто растянуть диапазон в поле Применяется к (Applied to).


Ну, и на десерт вставим пустую строку в середину таблицы, между 4 и 5-й строчками:

Ад Условного Форматирования в Excel Excel, Таблица, Полезное, На заметку, Длиннопост

В списке правил условного форматирования это приведёт к появлению еще одного дубликата и раздроблению диапазона уже существующего 5-го правила на кучу фрагментов:

Ад Условного Форматирования в Excel Excel, Таблица, Полезное, На заметку, Длиннопост

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


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


Как же всё исправить?

Способ 1. Вручную


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


Для этого делаем следующее:

1. Выделяем в нашей таблице все строки кроме первой.

2. Удаляем все правила условного форматирования с выделенных ячеек через Главная - Условное форматирование - Удалить правила - Удалить правила из выделенных ячеек (Home - Conditional formatting - Clear rules - Clear rules from selected cells).

3. Выделяем первую строку, жмём кнопку-кисточку Формат по образцу на Главной (Home - Format Painter) и выделяем все остальные строки, копируя на них формат с первой.


Способ 2. Макросом


Если есть ощущение, что подобную процедуру вам придётся проделывать ещё не раз, то имеет смысл автоматизировать весь процесс с помощью макроса. Для этого:

1. Жмём сочетание клавиш Alt+F11 или на вкладке Разработчик кнопку Visual Basic (Developer - Visual Basic).

2. В открывшемся окне редактора макросов добавляем в нашу книгу новый модуль через меню Insert - Module.

3. Вставляем в созданный пустой модуль наш макрос:

Sub Fix_СF_Hell()

'создаем ссылки на диапазоны

Set rngAll = Selection

Set rngRow1 = Selection.Rows(1)

Set rngRow2 = Selection.Rows(2)

Set rngRowLast = Selection.Rows(rngAll.Rows.Count)

'удаляем все правила форматирования со всех строк кроме первой

Range(rngRow2, rngRowLast).FormatConditions.Delete

'копируем форматы с первой строки на все остальные

rngRow1.Copy

Range(rngRow1, rngRowLast).PasteSpecial Paste:=xlPasteFormats

Application.CutCopyMode = False

End Sub

Теперь можно будет просто выделить все строки в таблице (кроме шапки) и запустить макрос через Разрабочик - Макросы (Developer - Macros) или сочетанием клавиш Alt+F8.

И всё будет хорошо :)


P.S.

Не забудьте сохранить файл в формате с поддержкой макросов (xlsm).

Если нужно применять этот макрос в других файлах, то имеет смысл поместить его в Личную Книгу Макросов (Personal Macro Workbook).


Здоровья вам и вашим близким) материал взят отсюда

Показать полностью 5
191

Приблизительный поиск с помощью функции ВПР

Продолжаем раскрывать тему ВПР. В этот раз мы рассмотрим, как рассчитать доплаты к окладам сотрудников за выслугу лет или добавочные бонусы к зарплате.

Приблизительный поиск с помощью функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Если сотрудник проработал в компании меньше года – он не получает ничего. Если проработал от года до двух – получает 10% доплаты. Если от двух до трёх – 15%. Если от трёх до пяти – 25% и т.д. Максимальный бонус в 100% полагается тем, кто работает в компании больше 10 лет.


Выделяем первую ячейку (G2), куда будем вводить функцию ВПР, на вкладке «Формулы» нажимаем «Вставить функцию». В категории «Ссылки и массивы» (Lookup and Reference) находим ВПР (VLOOKUP) и жмём ОК. В появившемся окне вводим аргументы для функции:

Приблизительный поиск с помощью функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

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

Таблица – сама таблица бонусов. Не забываем нажать клавишу F4, чтобы сделать ссылку абсолютной.

Номер столбца – порядковый номер столбца в таблице бонусов, откуда мы берем размер доплаты (у нас всего два столбца и номер, очевидно, 2).

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


Вот ещё примеры использования функции ВПР:

Найти нужную скидку в таблице скидок, если размер скидки зависит от количества купленного товара или его стоимости (от 1 до 5 шт. – скидки нет, от 6 до 10 шт. – скидка уже 3%, свыше 11 шт. – скидка 5% и т.д.):

Приблизительный поиск с помощью функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

Определить цену билета для пригородной зоны, если известно, до какой станции (на какое расстояние) едет пассажир:

Приблизительный поиск с помощью функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост

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

Приблизительный поиск с помощью функции ВПР Excel, Впр, Таблица, Полезное, На заметку, Длиннопост
Показать полностью 4
168

Ответ на пост «Функция ВПР в Excel» 

Отличный гайд, но есть неточности.

- ИСТИНА - поиск приблизительного соответствия.

Это, строго говоря, неправда. Хоть то же самое написано на сайте office.microsoft.com, но это всё равно неправда.


Значение "ИСТИНА" параметра "Тип поиска" означает, что ВПР выполнит бинарный поиск и вернёт то, что найдёт. Если массив отсортирован по возрастанию, то это действительно будет ближайшее "снизу" значение (например, для числа 123 это будет число 122, а для текста "абв" это будет "абб", при условии, конечно, что эти значения есть в массиве поиска). Если же массив не отсортирован или отсортирован не по возрастанию - алгоритм бинарного поиска либо вернёт ошибку "#Н/Д", либо всё-таки что-то найдёт. Скорее всего, совсем не то, что вы искали (даже если искомое значение есть в массиве!). Дело в том, что, во-первых, ВПР не проверяет, отсортирован массив или нет, а во-вторых, он не проверят действительно ли найденное алгоритмом бинарного поиска значение совпадает с тем, что искалось.


Функция ВПР выдаёт ошибку #Н/Д если:
...
2. Включен приблизительный поиск (Интервальный просмотр=1), но Таблица, в которой происходит поиск, не отсортирована по возрастанию наименований.

Это тоже неправда. Как я писал выше, ВПР может что-то найти даже в несортированном массиве.


Зачем вообще нужен алгоритм бинарного поиска в ВПР?


Дело в том, что бинарный поиск работает намного, намного быстрее, чем "обычный" (O(log n) против O(n)). Особенно эта разница будет заметна на больших массивах данных. Но пользоваться им надо с осторожностью. Чтобы отсечь неправильно найденные значения (по причине проблем с сортировкой или из-за отсутствия искомого значения в массиве), можно воспользоваться приёмом под названием "двойной ВПР":


=ЕСЛИ(
ВПР(Искомое_значение; Первый_столбец_таблицы; 1; ИСТИНА) = Искомое_значение;  ВПР(Искомое_значение; Таблица_где_ищем; Номер_столбца_результатов; ИСТИНА);
НД()
)

Т.е. сначала мы проверяем, что ВПР находит то, что нужно, а только затем возвращаем найденное. Скорость работы больше обычного ВПР в 10-100 (sic!) раз. Такой разброс скорее всего связан с тем, насколько хорошо у Excel получается оптимизировать ваш "обычный" поиск.

465

Защита лошади

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

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

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

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

1) Бинты

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

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

2) Ногавки

Ногавки подбираются по толщине ног лошади. Защищают от внешних ударов. В том числе от засечек (когда на повороте конь сам себя бьет копытом по ноге) и от травм после падения.

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

3) Колокольчики

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

На фото ниже их можно увидеть над самым копытом. Они как бы надеты поверх копыта.

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

4) Седло

Самая сложная конструкция в амуниции. Она призвана защищать конскую спину от внешних факторов. В том числе и от механического воздействия всадника.

Как ни странно, при езде без седла, давление на спину лошади больше, чем при езде с седлом. Равномерное распределение нагрузки создает гораздо меньше дискомфорта её спине, именно поэтому, так кропотливо подбирается седло в каждом конкретном случае.


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


На фото ниже продемонстрировано универсальное седло. Обратите внимание на размер подушки.

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

А теперь взгляните на размер подушки казачьего седла, которое используют в джигитовке.

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

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

Но седло - это не единственное, что защищает спину лошади от повреждения.


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

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

Потник

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

Вальтрап


6) Прочие амортизаторы под седло: меховушка и гель.

Корректирует положение седла. Корректирует посадку всадника. Устраняет неравномерное давление на спину. Не даст седлу набить холку и натереть кожу.

https://82.img.avito.st/1280x960/2360708682.jpg

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

Меховушка

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

Гель


7) Сетка от мух.

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

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

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

8) Попона.

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

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

9) Подковы.

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


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


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


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

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

10) Транспортировочные бинты и ногавки.

Отличаются от тех, что я назвала выше, как внешним видом, так строением.

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


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

Их можно использовать отдельно или с бинтами.


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

Транспортировочные бинты и ногавки защищают ноги от копыт до колен.

Защита лошади Амуниция, Защита, Лошади, Кони, Интересное, Полезное, Длиннопост

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

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

Показать полностью 13
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: