Сообщество - MS, Libreoffice & Google docs

MS, Libreoffice & Google docs

762 поста 14 933 подписчика

Популярные теги в сообществе:

192

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

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

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


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

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

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

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

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


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

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

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

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

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

Разбивка на дни и часы

Добрый день. Подскажите, пожалуйста, какую формулу использовать для разбивки суммы часов в ячейке на дни и часы. К примеру, дана цифра 248. Если поделить ее на 24 часа, то получится 10 дней и 8 часов. Мне необходимо чтобы в нужной ячейке отображалось именно 10 дней 8 часов. Какую формулу использовать? Заранее благодарен.

52

VBA Excel - массовая безопасная замена

Решил поделиться ещё одним полезным отрывком кода. Была задача массовой замены в документе одних значений на другие, при этом они могли пересекаться (изменилась нумерация) и обычная последовательная замена приводила к хаосу. В результате получилась вот такая процедурка для замены в 2 прохода.

Sub SafeReplace(TargetRange As Range, ReplaceRules As Range)
' безопасный массовый поиск и замена
' TargetRange: где ищем, ReplaceRules: правила замены, первый столбец - что найти, второй - на что заменить
For i = 1 To ReplaceRules.Rows.Count ' for each
TargetRange.Replace _
What:=ReplaceRules.Cells(i, 1), Replacement:="!SafeReplace" + CStr(i) + "!", _
MatchCase:=False
Next ' замена 1 проход
For i = 1 To ReplaceRules.Rows.Count ' for each
TargetRange.Replace _
What:="!SafeReplace" + CStr(i) + "!", Replacement:=ReplaceRules.Cells(i, 2), _
MatchCase:=True
Next ' замена 2 проход
End Sub
с форматированием - на pastebin.com

Пример использования: на вкладке ReplaceRules есть таблица замены

VBA Excel - массовая безопасная замена

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

Sub ReplaceSelected()
Application.ScreenUpdating = False
Dim ReplaceRulePos As Range
Set ReplaceRulePos = Worksheets("ReplaceRules").Range("A1").CurrentRegion.Offset(1, 0) ' смещение на 1 строку, без заголовка
Call SafeReplace(Selection, ReplaceRulePos.Resize(ReplaceRulePos.Rows.Count - 1)) ' изменить размер области, чтобы последний пустой ряд не обрабатывался и вызвать автозамену
Application.ScreenUpdating = True
End Sub
Показать полностью 1
7

Помогите советом по MS Office

Доброго Вам времени суток, уважаемые пикабушники! помогите, пожалуйста. При печати документов в Word выскакивает сообщение: Поля раздела 1 выходят за границы области печати. И требуется постоянно нажимать "Да". Есть ли возможность отключения таких сообщений? Слышал про Application.DisplayAlerts = False, но не могу понять куда его вводить и работает ли данная переменная в Word? Вызвал управление VBA через ALT+F11, а куда дальше вставлять этот код и как? Расскажите подробнее, пожалуйста! Спасибо и берегите себя!

28

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

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

Есть таблица с объединенными ячейками на 472 позиции, в которую периодически будут вноситься изменения в столбец 9,10 при изменении НД(ГОСТ) на продукт

и поставлена задача: установить фильтр на 7 категорий (дет.сады, школы,здравоохранение дети, здравоохранение взрослые, соц.политика,взрослый контингент,целиакия [для упрощения можно представить в виде 1,2,3,4,5,6,7]), таким образом, что бы при выборе категории формировалась таблица с набором продуктов разрешенных в этой категории. Есть товары, которые попадают под несколько категорий, а есть под определенные категории (сложно как-то иначе объяснить).
Первое (да и пока единственное рабочее), что приходит на ум- это добавить столбец слева, куда на каждый товар будет присвоена категория в ручную, выбрав которую я получу таблицу, скопирую ее на новый лист и при изменении в столбцах 9 и 10, просто буду обновлять листы через копи-паст
вот так(слева добавлен столбец с категориями):

Реализация нубская, через вкладку первого столба Фильтр, в поиске номер категории, к примеру 3 (и ставлю галочки в фильтре где нашлась цифра 3)
Тут натыкаюсь на проблему, что эксель берет только первую строку от названия товара, а остальные строки пропадают

Единственное, если следовать той же дорогой, через конструктор (ctrl+T), создаю таблицу, без объеденных ячеек, с последующим заполнением образовавшихся пустых ячеек в добавленном столбце "Категории"
Получается что-то подобное

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

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

Может есть у кого идеи как это сделать более удобно и приятно глазу

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

Специалисты по VBA имеются?

Господа, нужна помощь в одной задачке..
Есть множество папок (профили), в них лежит 2 файла, которые обрабатываются и на выходе получается hash.
Есть исходники обработки (на java), но сложность в том, что эта обработка делается только для одного профиля, и делается на андройде (apk), а нужно эти-же файлы обрабатывать уже на PC, и не по одиночке, а множество...
Задача - на VBA сделать автоматизацию этого процесса. То есть берем из столбца А цифру, которая соответствует названию папки, далее в этой папке находим 2 файла, "ахалай-махалай", и записываем получившееся в следующий столбец рядом с номером.
С меня пиво/ покрепче / на карту сумма (по договоренности).

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

888

Excellama: Выпадающие списки и логические формулы

Добрый день!

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


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

В этом примере мы разберем несколько инструментов Excel, а именно:

- вложенные формулы;

- выпадающие списки;

- логическая формула ЕСЛИ;

- формула блока «ссылки и массивы» ВПР.


Шаг 0 – введение.

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


Шаг 1 – работа с прайсом.

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

Для этого в ячейке C2 ставим наценку, допустим 1,47 (увеличение цены по сравнению с ценой закупки – 47%). Ее обязательно вывести в отдельную ячейку, потому что «а вдруг кризис» и придется все цены пересчитывать, не будем же мы всю таблицу заново просчитывать. Да и на будущее - в случае, если все строчки будут производить некоторые действия (умножение, сложение, вычитание, деление) с одной единственной ячейкой, то легче ее вывести отдельно и зафиксировать. Опять же, если мы захотим изменить наценку на все товары, то нам достаточно поменять значение только в одной этой ячейке, и вся наша таблица автоматически пересчитается.


А чтобы каждый раз в формуле вручную не ссылаться на одну и ту же ячейку (C2), то ее необходимо зафиксировать. Для этого необходимо поместить курсор в строку формул после знака умножить на C2 и нажать F4. Если в формуле появилось два (!) знака $, то ячейка зафиксирована.


Первоначальная формула в ячейке D5 будет выглядеть следующим образом =C5*$C$2

С первого взгляда все хорошо. Но это не так. В полученном результате в ячейке D5 больше двух знаков после запятой. Избавляемся от концов с помощью формулы ОКРУГЛ. Это наше первое знакомство с вложенной формулой. Формула в формуле. Самый простой способ «вложить» одно в другое – скопировать полученную формулу и следовать по инструкции ниже.


В ячейке D5 в строке формул пишем =ОКРУГЛ и открываем Аргументы функции (элемент Fx).

В поле «Число» вставляем скопированную формулу без знака «=».

В поле «Число_разрядов» ставим цифру 2, так как нам надо 2 знака после запятой.


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

Готово. Вы великолепны!


Шаг 2 – заполнение карточки заказа.

Начнем с выпадающего списка.

Выделяем диапазон, где хотим видеть выпадающий список (диапазон C8:C14). Переходим на вкладку Данные, группа Работа с данными, элемент Проверка данных.

Тип данных – список, источник – список товаров с листа «прайс» (диапазон B5:B16).

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


Есть два способа сделать нумерацию, но изначально в первую ячейку списка ставим цифру 1.


- щелкаем 2 раза за маркер автозаполнения и в появившемся окошке выбираем значение «Заполнить» - подходит при нумерации большого списка.


- тянем за маркер автозаполнения, параллельно зажав клавишу CTRL – может работать даже тогда, когда ячейка начинается не с 1, а с числа 824789, удобно продолжать нумерацию в середине списка.

Ура. Осталось два крупных шага (ВПР и логическая формула ЕСЛИ).


Для разгона давайте на ячейке F8 пропишем простую формулу умножения =D8*E8


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


Если же говорить на языке формул, то все выглядит следующим образом:

Искомое значение - что ищем. Мы ищем блокнот (ячейка C8)

Таблица - где ищем. Ищем в прайсе. Указываем диапазон всей таблицы прайса (внимание: именно с ячейки B4 до ячейки D16).

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

Интервальный_просмотр - 0. Ставим 0 для получения точного результата (чтобы формула нашла конкретно "Блокнот А5", а не "блакнот а 5".

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


Пара простых шагов для финального штриха. Ставим автосумму в ячейке D15 и F15. Для упрощения действия можно запомнить следующее сочетание клавиш «ALT» и «=» (горячая клавиша для автосуммы).


В ячейке D16 считаем скидку с помощью логической формулы ЕСЛИ. Примем за правило, что если заказ собран на сумму более 5 000 руб., то скидка будет 10%.

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

=F15-(F15*F16)

Все! С официальной частью закончили.


Небольшие советы:

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

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


Обращаю Ваше внимание, что моей задачей в этом посте было просто показать, как работают разные формулы Excel. Скорее всего, в мире уже есть множество написанных программ для решения таких задач (та же 1С), возможно существуют разного рода макросы на выполнение всего, что написано в посте. Я же просто делюсь своими знаниями и надеюсь, что они Вам были полезны.


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


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

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

Число прописью в Excel

Здравствуйте! Не нашел постов на эту тему. Если у кого-то есть необходимость переводить сумму цифрами в число прописью, я написал функцию, которая справляется с этим. Для облегчения понимания ее работы убрал все настройки. Функция может преобразовать число до 2 147 483 647 или  (два миллиарда сто сорок семь миллионов четыреста восемьдесят три тысячи шестьсот сорок семь российских рублей 0 копеек). Все подробности в картинке. Еще оставлю ссылку на сам файл. https://yadi.sk/i/21yqDv7K_75REw Спасибо за внимание!

Число прописью в Excel
Отличная работа, все прочитано!