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

MS, Libreoffice & Google docs

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

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

752

Суммирование по цвету в Excel

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


Поэтому для подобных задач приходится писать пользовательские функции. В этом посте хочу поделиться примером кода UFD (User Defined Function – Пользовательской функции) для суммирования значений ячеек из определенного диапазона, соответствующих заданному цвету заливки.


Вот код VBA:


Option Explicit
Function SUMIFCOLOR(rgCellsToSum As Range, rgColorSample As Range)
Dim rgCellChecked As Range
Dim intColorIndex As Integer
Dim dblSum As Double
Application.Volatile
'Сохраняем указание цвета в числовую переменную
intColorIndex = rgColorSample.Interior.ColorIndex
'Проверяем каждую ячейку и сохраняем её значение в промежуточную переменную
For Each rgCellChecked In rgCellsToSum
If rgCellChecked.Interior.ColorIndex = intColorIndex Then
dblSum = dblSum + rgCellChecked.Value
End If
Next rgCellChecked
'Вносим значение в функцию
SUMIFCOLOR = dblSum
End Function

Итак, что теперь с этим кодом надо сделать.

1. Открываем требуемый файл

2. Открываем окно редактора VBA с помощью комбинации клавиш Alt+F11

3. В нём добавляем новый модуль: Insert (1) -> Module (2)

4. В открывшемся поле вставляем код (отступы, к сожалению, по желанию придётся проставить вручную):

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

При этом обрати внимание – чтобы теперь в файле вставленный макрос сохранился, сохранить файл надо будет в формате xlsm.


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

В нём, во-первых, в деталях разбирается, как работает представленная в этом посте функция, во-вторых, представлено её «расширение» Worksheet_SelectionChange, ну и в конце концов этом видео подробно объясняется, что такое волатильность функций, как работает перерасчет функций в Excel, и как работают событийные процедуры в VBA.

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

Детский сад. Табель

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

Чуть более года назад моя мама начала меня ежемесячно просить помочь ей заполнить табель учета посещаемости детей (она работает в д/с воспитателем).
Это меня как бы особо и не напрягало, напрягал тот момент, что таблица была в word-е, а количество дней надо было пересчитать, вывести КС и на этих моментах периодически всплывали ошибки, так как кто-то в рукописном табеле ошибся - и сиди ищи.

В итоге я решила перевести эту табличку в excel.
1. Отредактировала форму, чтобы она повторяла ту, что была в word.
2. Поколдовала с формулами (не буду описывать этот процесс полностью, так как было это давно и всего уже не помню).

С тех пор табель по маминой группе я заполняла и отправляла маминой заведующей уже в excel.

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

По традиции - инструкция с описанием как что заполнять - на первом листе в самом файле
Ссылка на табель
https://drive.google.com/file/d/1j56i5nmgAhgo6BWYAEtJI4jl-ZC...


Если не открывается/ не скачивается - пишите, буду отправлять ссылки в комментарии


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

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

Изменение значения ячейки в зависимости от другой ячейки Excel

Доброго времени суток.
Перерыл кучу информации, но так и не понял, как присвоить значение ячейке в зависимости от значения другой, при этом сделать это не возвращением, а именно присвоением, чтобы если что ячейки которым присвоят значение могли меняться.
Пример:
Есть ячейка B3, в которой на данный момент внесено значение 100
Есть ячейка B4, в которой на данный момент значение 0.
Как сделать так, что при внесении любого числа больше 0 в ячейку B4, ячейка B3 автоматически станет равна 0 и наоборот.
Т.е. эти ячейки должны остаться редактируемыми, но при этом автоматически меняющимися в зависимости от значений друг друга.

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

UPD ответ найден в комментарии #comment_196491784

16

Цветные таблицы. Кошаки. Старт нового проекта :)

Доброго времени суток, котяточки. У меня для вас классные новости, но обо всем по порядку.

Из - за моей великой любви к табличкам, год назад я начал вести этот блог. За это время несколько моих читателей переросли в моих клиентов, а откликов на посты и запросов на консультацию становилось все больше и было принято решение о старте собственного проекта.  С гордостью расскажу вам о своём детище, под названием Colorful Tables, да - да, цветные таблички). Старт своего проекта стал глотком свежего воздуха и раньше я не испытывал такого кайфа от работы. И виновники моего счастья - свобода самостоятельно принимать решения и построить команду в соответствии с той горой нонфикшн литературы, которой я вдохновлялся последние годы и собственно отличная команда, которую удалось собрать. Для себя я на старте решил, что мне не оч интересны большинство HR-ных метод и подбирал команду по двум критериям - чтобы человек хотел учиться и чтобы нам было круто общаться. Таким образом в команду попали 3 девочки-джуна (они просто невероятные *___*), которых буду учить таблицам с самого нуля и с первых дней - все решения по дальнейшей судьбе проекта мы принимаем совместно.

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

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

ЗЫ Прототип нашего лого на фото :)

Цветные таблицы. Кошаки. Старт нового проекта :)
Показать полностью 1
272

ВПР и ИСТИНА: Вычисление оценок, комиссий и т.д. в Excel

В абсолютном большинстве случаев ВПР применяется для поиска точного совпадения – для этого в последнем аргументе функции вводится значение ЛОЖЬ. Тем не менее, также очень полезно знать, как и для чего применяется ВПР со значением ИСТИНА в качестве последнего аргумента, тем более что сферы применения такого варианта ВПР достаточно интересны и на самом деле встречаются намного чаще, чем можно подумать.


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

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

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


При этом обязательно нужно обратить внимание, что значения во вспомогательной таблице должны быть просортированы в возрастающем порядке! Буквально через пару строк я объясню, как работает ВПР с ИСТИНА в последнем аргументе, и сразу станет почему сортировка вспомогательной таблицы так важна.


Но перед этим сперва пропишем функцию:

Текст функции у нас выходит: =ВПР(C3;$F$7:$G$10;2;ИСТИНА)


С3 – ссылка на искомое количество баллов

$F$7:$G$10 – ссылка на вспомогательную таблицу. Обязательно закрепляем с помощью F4

2 – это указание, что нужно значение из второго столбца вспомогательной таблицы

ИСТИНА – Поиск «примерного» значения


Отлично! Ну и остаётся лишь протянуть функцию:

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


Итак, у функции ВПР с ИСТИНОЙ в последнем аргументе есть три варианта срабатывания:


Первый: ВПР находит точное совпадение. Отличным примером является студент А. ВПР видит, что у него оценка 75 и начинает пошагово проверять каждую строчку в справочной табличке. 0 не подходит, идём дальше, 60 не подходит, идём еще дальше, и вот следующим и попадается 75. Значение точно соответствует искомому, поэтому Excel без раздумий берёт соседнее справа значение.

Теперь второй вариант – оценка студента В. Взяв его 86 баллов, Excel также начинает пошагово проверять справочную табличку. Сперва всё похоже с первым вариантом. 0 не подходит, 60 не подходит, 75 не подходит, но вдруг, что происходит дальше – следующее значение 90 у нас уже больше, чем искомое 86, поэтому Excel делает один шаг назад, возвращаясь к предыдущему уровню, и берёт его оценку. В итоге мы имеем как раз то, что нужно. Значение 86 лежит между 75 и 89, поэтому итоговой оценкой выходит 4.

Ну и последний вариант срабатывания ВПР с ИСТИНОЙ — это выведение ошибки. Такое происходит, если все значения в указанной табличке сравнения больше искомого и Excel не может найти подходящих значений.

На картинках, конечно, немного сложно наглядно объяснить принцип работы ВПР, поэтому предлагаю посмотреть следующее видео:

В нём я наглядно на анимациях рассмотрел принцип работы ВПР с ИСТИНОЙ в качестве последнего аргумента. Кроме того, в видео также есть упражнение на закрепление с интересным примером расчёта налоговой ставки 😊

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

Защитить лист vs. Защищаемая ячейка в Excel – Защита по цвету ячейки!

Защита листа в Excel – это всем хорошо известная функция, которая позволяет блокировать внесение изменений в рабочий лист («Рецензирование» -> «Защитить лист»). Я уверен, ты с ней уже знаком.


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


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

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


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


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

И открываем окно поиска значений с помощью комбинации клавиш CTRL+F:

Нажав на «Параметры», раскрываем расширенные настройки поиска:

Теперь, если у тебя вместо «Формат не задан» написано «Образец» (1), то нужно нажать на «Очистить формат поиска»:

После этого щелкаем по кнопке «Формат» (5) и в открывшемся окне, не изменяя других настроек, указываем те настройки, которые нам нужны. В нашем примере нам нужны лишь оранжевые ячейки, так что захожу в раздел «Заливка» (6) и выбираю нужный мне цвет (7), после чего подтверждаю ввод (8):

Отлично, требуемый формат задали, так что идём дальше, и теперь нажимаем на «Найти все» (9). В нижней части окна Excel выводит все найденные ячейки, соответствующие заданному формату (10):

Одна из строк здесь при этом уже выбрана, так что всё, что остаётся сделать – это использовать комбинацию клавиш CTRL+А для выбора всех найденных ячеек, после чего окно поиска можно закрыть. В итоге мы выбрали все оранжевые ячейки в нужном диапазоне:

Сейчас все нужные оранжевые ячейки были успешно выбраны, так что теперь заходим в окно форматирования ячеек (CTRL+1) и в открывшемся окне во вкладке «Защита» убираем галочку в поле «Защищаемая ячейка» (11):

Подтверждаем и теперь защищаем рабочий лист (Вкладка «Рецензирование» -> «Защитить лист»):

Всё, всё готово! Теперь пользователь этого файла может вносить изменения лишь в разрешенные нами ячейки.


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

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


Надеюсь, совет будет для тебя полезным 😊

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

Спарклайны для LibreOffice 7  в Linux

Добрый день, дорогие пользователи свободного ПО. Недавно, проходя курс на Степике (курс бесплатный - не реклама), столкнулся с проблемой отсутствия поддержки спарклайнов в LibreOffice.

Изрядно порывшись в этих самых интернетах, нашёл одно рабочее решение из трёх найденных.

Рабочее решение.

1. Макрос.

REM ***** BASIC SCRIPT for SPARKLINES

REM ***** This just prepares the data and not styling. You apply style as a font.

Function sparklines(criteriaCellRange)

sparklines = "{"

For Each cell In criteriaCellRange

sparklines = sparklines+cell+","

Next cell

REM ***** Remove extra comma at the end

totalLength = Len(sparklines)

sparklines = Left(sparklines, totalLength-1)

sparklines = sparklines+"}"

End Function


Открываем LibreOffice Calc, нажимаем "Сервис" >>> "Макросы" >>>"Редактировать макрос" и вставляем код. Вкладку Module1 переименовываем в SPARKLINES. Сохраняем.

2. Качаем шрифты sparks  для работы спарклайнов. Распаковываем в /usr/share/fonts (ну или куда вам удобнее). Сразу предупреждаю, шрифты работают только с положительными значениями от 0 до 100 включительно.


Как пользоваться.

Например, у нас есть значения от A2 до I2. В ячейке J2 пишем =sparklines(A2:I2), затем нажимаем "Сервис" >>> "Макросы" >>>"Выполнить макрос", и в Стандартных выбираем SPARKLINES.

Затем для ячейки с макросом выбираем один из шрифтов SPARKS.

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

Ссылки на использованные материалы:

1. Thejesh GN - рабочий вариант, всё на английском.

2. LINUX magazine - не получилось как описано, тоже на английском.

3. Расширение EUROOFFICE_SPARKLINE - устанавливается, но не запускается - выдаёт ошибку. К сожалению не поддерживается разработчиком очень давно.

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

Оператор пересечения в Excel

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


Вот как применяется оператор пересечения. Например, выведем в ячейке B10 значение, находящееся на пересечении столбца продукта «C» со строкой страны Мексики. Для этого в В10 вписываем =E2:E8 B5:H5

Эта формула интерпретируется так:

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

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

Показать полностью 3 1
Отличная работа, все прочитано!