SensaiKudisai

SensaiKudisai

https://t.me/sigmadice
Пикабушник
3471 рейтинг 829 подписчиков 3 подписки 34 поста 31 в горячем

Таскотрекер на базе ГТ и ТЛГ Часть 1 (GS13)

Привет, дорогие чатлане.

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

Какая передо мной стоит задача.

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

Часть 0 - вместо ТЗ.

Какие вводные есть:

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

- Коммуникации проходят преимущественно в тлг, опять же, если это не касается клиентов, там все чин по чину в СРМ.

- Все используют гугл календарь

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

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

- КПИ привязаны к % выполнения задач за спринт + почасовка, которая трекается телеграм-ботом.

- Разные заказчики, нужно учитывать постановщика задачи.

Что хочется сделать:

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

- Дневные планы, которые будут каждое утро отправляться сотруднику в тлг

- Автоматическую постановку встреч

- Нотифаи в случае наступления даты начала задачи (для отложенных)

- Автоматический подсчёт ЗП исходя из почасовки и КПИ

- Полезности в виде статистики, метрик, свободного времени на неделе.

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

- Сделать регулярные задачи и нативный ввод дедлайнов как в тудуисте.

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

Что я могу сделать сходу, а чему нужно учиться:

Могу сходу почти все из списка (при достаточном количестве лубриканта), кроме:

- Автоматическую постановку встреч

- Сделать регулярные задачи и нативный ввод дедлайнов как в тудуисте.

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


Часть первая - тайм-трекинг.

Чтобы добавить информативности посту расскажу о том, как устроен у нас тайм-трекинг.

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

Как это устроено?

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

Даты, Логина, Текста.

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

В итоге получаются записи в тлг типа:

лд обед
общ почта разбор
база прозвон

и т.д.

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

После всех настроек и обработок получаем примерно такой список:

Таскотрекер на базе ГТ и ТЛГ Часть 1 (GS13) Google Таблицы, Microsoft Excel, Тайм-менеджмент, Длиннопост

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

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


Это первый, тизерный пост из серии про таско-трекер. Пишите в комментариях идеи, хорошие практики с которыми работали. Сразу отвечу на вопрос "почему не трелло/джира/асана/битрикс прости господи?" - не прижилось. Перепробовали все, остались все равно в табличках.

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

Булева алгебра и логические выражения в гугл таблицах (GS12)

Привет, дорогие чатлане!

Сегодня рассмотрим логические выражения, булеву алгебру, функции if(), and(), or().

Сначала короткий экскурс в математическую подложку (пара слов про булеву алгебру и таблицы истинности).

Логическое выражение - конструкция, которая на входе имеет ряд аргументов и операций между ними, а на выходе - 0 или 1, т.е. ЛОЖЬ и ИСТИНА.

Пример логического выражения:

1+1 = 2 == 1  (Истина)

1+1 = 3 == 0 (Ложь)

[1+1 = 2] или [1+1 = 3] == 1 (Истина) - т.к. одно из выражений (первое) - является истиной, то вся конструкция является Истиной.

[1+1 = 2] и [1+1 = 3] == 0 (Ложь) - т.к. по крайней мере одно выражение (второе) - является ложным, то вся конструкция является ложной.

По своей сути оператор ИЛИ очень похож по своему поведению на сложение, а оператор И - на умножение.

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

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

Для выражения a и b - следующим образом:

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

Как это нам поможет в гугл таблицах?

Простой пример - нужно найти все отрицательные записи в реестре:

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

Функция IF проверяет условие. Далее, если оно истинно - срабатывает первая часть формулы, если нет - вторая. Чуть усложним, добавим проверку даты. Предположим нас интересуют только записи позже 1.01.2020:

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

И здесь мы видим как формула отрабатывает неправильно. 1/06/2020 явно больше чем 1/01/2020. Здесь вступает в силу нюанс с форматами. Если мы возьмем дату и отформатируем ее как число, то увидим следующее:

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

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

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

Теперь объединим оба условия (будет чуть коряво, но наглядно):

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

Либо в одну формулу:

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

Где еще нам это нужно?

В фильтрах.

Фильтры проверяют содержимое таблицы так же исходя из алгебры логики.

Функция filter() делает следующее - она берет каждую строчку таблицы и проверяет каждый столбец, который задал пользователь на соответствие условиям. Если ВСЕ условия выполняются - данная строка сохраняется. Если нет - то нет.

Пример с той же таблицей:

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

Этот же принцип заложен в функцию QUERY и вообще в подавляющее большинство работы с данными. Например условное форматирование. Покажу как логические выражения можно использовать там. Как раз в первом посте об этом писал:

Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост
Булева алгебра и логические выражения в гугл таблицах (GS12) Google Таблицы, Microsoft Excel, Длиннопост

Условное форматирование проверяет логическую конструкцию. Если она истина - она меняет формат ячейки (в данном случае она окрашивается в зеленый). Условное форматирование изначально было задано в ячейке D3 и логическое выражение =$F3="Низкая" смещается по ячейкам в рамках всей зоны условного форматирования.

Т.е. в ячейке Е3 для него формула: =$F3="Низкая"  потому что $F - зафиксирована, а вот в ячейке d5 формула будет =$F5="Низкая" и это уже является истиной, поэтому все ячейки этой строки залиты зеленым.


В относительно сложных формулах описанных в посте Фильтры и ВПРы в ГТ (GS2) так же все держится на логических конструкциях.

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

Интерфейс гугл таблиц и полезные кнопки (GS11)

Привет, дорогие чатлане!

Второй пост из серии мануала по гугл таблицам. Первый можно найти тут: Вводный пост (GS10)

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

В меню File нас интересует только одна настройка:

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

Вот это лучше отключать при работе с большими таблицами:

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

Это существенно повышает их быстродействие.

Во вкладке Insert сильно больше полезного.

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

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

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

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

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

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

Остальные кнопки либо вынесены на панель, либо открывают дорогу к более продвинутым функциям (именованные диапазоны и своды), поэтому с менюшками - все, переходим к панели.

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

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

Ну и раз уж затронули тему копирования формата - нужно рассказать и про перенос значений:

Комбинация клавиш CTRL+C -> CTRL+SHIFT+V. Переносит ТОЛЬКО содержимое ячеек без формул. Понятие "прибить формулы" - означает выделить таблицу с формулами, нажать эту комбинацию клавиш без переноса. Т.о. все значения сохранятся, в формулы исчезнут. Полезно при больших таблицах, где есть лишние вычисления.

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

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

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

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

Шрифты и форматирование внешнего вида ячеек.

В гугл таблицах есть шикарные шрифты, которых нет в  Excel. Если любитель - советую покопаться. Lora - ванлав.

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

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

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

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

Шорткаты для вставки ссылок, комментов и диаграмм. Фильтры же интереснее, о них чуть детальнее:

В ГТ есть два типа фильтров. Один - обычный, как в excel - добавляет в шапку таблицы возможность фильтровать данные. Но вот эта маленькая стрелочка справа открывает доступ к "Черным фильтрам". Разработчики гугла почему-то очень сильно их не любят. Не любят настолько, что это единственный объект в таблице, к которому нельзя обратиться из скриптов. Его тупо нет в документации.

В чем же прелесть "Черных фильтров"?

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

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

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост
Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

По возможности - советую пользоваться именно ими.


Последняя кнопка - список всех функций.


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

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

Она достаточно толковая.


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


Как зафиксировать N-первых строк или столбцов?

Классический вариант - через

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

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

Интерфейс гугл таблиц и полезные кнопки (GS11) Google Таблицы, Microsoft Excel, Инструкция, Длиннопост

Вот и все на сегодня, дорогие чатлане. На все вопросы в комментах отвечу. Если есть пожелания или критика- пишите, буду рад почитать. Отдельно хочу поблагодарить @Veseliy.4el, за развитие нашего табличного сообщества и активность в комментариях.

Ссылка на таблицу: https://docs.google.com/spreadsheets/d/1aQ24FqmAboP5MAijeU4A...

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

Вводный пост (GS10)

Привет, дорогие чатлане!

В продолжение поста Мануал по гугл таблицам пилю вводный пост для мануала.

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

Ссылки на все посты и доки будут лежать здесь:

https://docs.google.com/spreadsheets/d/1fuDAXY-46blJOxLVqPMm...

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

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

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

Доки можно разделить на 3 части (особенно наглядно это можно увидеть в данном посте: Автоматически расширяющаяся таблица (GS9) )

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

2 Обработка данных - сюда входят вычисления и обработки (можно назвать это бекендом)

3 Вывод данных - сюда входят итоговые отчеты, графики.

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

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

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

Вводный пост (GS10) Google Таблицы, Microsoft Excel, Инструкция, Мат, Длиннопост

Настройки условного форматирования для таблицы справа (о настройках так же будет пост):

Вводный пост (GS10) Google Таблицы, Microsoft Excel, Инструкция, Мат, Длиннопост

Совет третий - для 1 и 2 части не использовать объединение ячеек.

Вводный пост (GS10) Google Таблицы, Microsoft Excel, Инструкция, Мат, Длиннопост

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

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

Совет пятый - переключите гугл таблицы на английский язык. Там проще синтаксис. Можно использовать запятую вместе точки с запятой, не нужно переключаться между раскладками при написании функций, которые не переведены на русский (filter, querry, unique и т.д.). Как это сделать - инфа тут: https://support.google.com/accounts/answer/32047?co=GENIE.Platform=Desktop&hl=ru


Небольшое послесловие.

Если у читателя возникли затруднения - он может всегда связаться со мной в тлг: ottodice.

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

Мануал по гугл таблицам

Привет, дорогие чатлане!

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


Немного информации о том, что считается базовым уровнем (по крайней мере у нас в компании):

1. Показать пару вариантов применения функции ВПР, где 4 параметром задано значение 1 (TRUE) и знать за что этот  параметр отвечает.

2. В записи "Стар Стафф" за одну формулу поменять местами слова и получить "Стафф Стар".

3. Построить сводную таблицу на основании данных из нескольких других таблиц (технически это отдельные доки).

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


Н.Б. Сейчас речь не идет о широком использовании этих кейсов или вопросов типа "А где мне пригодиться это в быту?". Речь идет только о технических знаниях. Если дорогой чатланин знает техническую часть - скорее всего он найдет где это ему нужно и сможет применить на практике.

Автоматически расширяющаяся таблица (GS9)

Привет, дорогие чатлане!

Сегодня немного наркомании, но эта штука мне сильно пригодилась когда мне нужно было собрать по 70 параметров по 100+ клиентам компании.

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

Нам потребуется три листа.

1 - реестр

2 - промежуточный свод

3 - итоговая таблица

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

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

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

Т.к. в ГТ отсутствуют умные таблицы из экселя, то нумератор (столбец A) автоматизируем своими руками.

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

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

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

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

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост
Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

Так выглядят настройки сводной таблицы.

Н.Б. Создание сводной таблицы - выделить таблицу с исходными данными, потом нажать Данные / Сводная таблица (Data / Pivot Table). Создавать лучше на новом листе.


Этот свод будет выполнять роль подложки. Здесь же с помощью фильтром мы можем фильтровать по дате.

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


Н.Б. Если мы пишем на одном листе (Лист1) формулу, которая будет ссылаться на ячейки из другого листа (Лист2), то при копировании формулы в соседние ячейки - ссылка так же будет двигаться.


Шаг первый - копируем первый столбец из свода.

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

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

Аналогично переносим верхнюю шапку.

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

Шаг второй - прописываем ВПРы и копируем их на всю таблицу.

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

Н.Б. Таблица 'Реестр'!A:E написана с абсолютными ссылками. Т.о. при копировании эта часть формулы не будет изменяться.

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

Промежуточный вид таблицы.

Чтобы убрать ошибки при пустых значениях используем функцию ЕСЛИОШИБКА() (iferror()).

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

Это финальный вид. Если добавить еще какой-то фильм или новый параметр к существующему - он появится автоматически.

Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост
Автоматически расширяющаяся таблица (GS9) Google Таблицы, Таблица, Microsoft Excel, Длиннопост

Ссылка на таблицу: https://docs.google.com/spreadsheets/d/1GXVINvbZly6TVXIz2Hwk...

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

Swtich case в гугл таблицах или не самый очевидный ВПР (GS8)

UPD:

https://exceljet.net/excel-functions/excel-switch-function

https://support.google.com/docs/answer/7013690?hl=ru

Swtich case в гугл таблицах или не самый очевидный ВПР (GS8) Google, Таблица, Электронные таблицы

Пост до UPD

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

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

1, 21 и т.д. пикабушник

2,3,4, 22, 23, 24 и т.д. пикабушника

5, 6, 7, 8, 9, 10 и т.д. пикабушников

Т.е для всех чисел, которые заканчиваются на 1 - окончание [] (кроме 11)

Для всех чисел, которые заканчиваются на 2,3 и 4 - окончание [а].

Для всех чисел, которые заканчиваются на 5, 6, 7, 8, 9, 0 - окончание [ов].

В книжках по программированию для большинства языков этот кейс решается функцией switch case. Но в экселе и ГТ нет такой функции. Предлагаю заменить ее ВПРом внутри функции.

Логика следующая - мы смотрим остаток от деления на 10 и в зависимости от результата возвращаем то или иное окончание.

Swtich case в гугл таблицах или не самый очевидный ВПР (GS8) Google, Таблица, Электронные таблицы

Осталось только решить вопрос с 11. Здесь лучше всего использовать деление на 100 и, т.к. варианта тут всего 2 - 11 или все остальное - нам подойдет обычный if.

Итог:

Swtich case в гугл таблицах или не самый очевидный ВПР (GS8) Google, Таблица, Электронные таблицы

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

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

Мы ограничимся тремя вариантами - "Текущий месяц", "Прошлый месяц" и "Произвольная дата".

Swtich case в гугл таблицах или не самый очевидный ВПР (GS8) Google, Таблица, Электронные таблицы

Если пользователь выбирает "Текущий месяц" или "Прошлый месяц", то ВПР внутри фильтра возвращает ему значение даты, которая задается формулой "КОНЕЦМЕСЯЦА(СЕГОДНЯ())". В случае, если он выбирает "Произвольная дата", то ВПР возвращает ошибку и срабатывает функция "ЕСЛИОШИБКА", которая возвращает значение даты, выбранной пользователь в ячейках F2 и F3.

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

Ссылка на таблицу:

https://docs.google.com/spreadsheets/d/1Q6xXFxfSWytAlcfY823i...

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

D-функции в гугл таблицах (GS7)

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

Сейчас решил поделиться недавним своим открытием.

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

Это аналоги обычных функций sum, count, counta, product и т.д. с тем лишь отличием, что с данными оно себя ведет как с базой данных и сам синтаксис функций похож на упрощенные SQL-запросы.

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

Покажу на примере:

Есть таблица с данными. Назову ее целиком DATA:

D-функции в гугл таблицах (GS7) Google, Таблица, Электронные таблицы, Длиннопост

Теперь попробуем с помощью D-функции dcounta  (БСЧЁТА в русской версии) получить кол-во продаж у второго сейла:

D-функции в гугл таблицах (GS7) Google, Таблица, Электронные таблицы, Длиннопост

Первый аргумент - таблица, с которой мы будем работать. Может быть задана и как a1:c6.

Второй - столбец, с которым мы работаем.

Третий - пачка массивов с условиями. Сейчас подробнее расскажу как работают условия здесь.

Для этого попробую получить сумму всех продаж первого сейла после 10.06:

D-функции в гугл таблицах (GS7) Google, Таблица, Электронные таблицы, Длиннопост

Здесь я в явном виде записал массив с условиями. Они пишутся вертикально - сверху имя столбца с условием, снизу - само условие.

Можно записать это внутри формулы. Чтобы задать массив в формуле нужно вписать значения в фигурные скобки. Для добавления строки нужно использовать ; а для столбца , (\ в русской версии таблиц):

D-функции в гугл таблицах (GS7) Google, Таблица, Электронные таблицы, Длиннопост

И сама формула будет выглядеть:

D-функции в гугл таблицах (GS7) Google, Таблица, Электронные таблицы, Длиннопост

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

D-функции в гугл таблицах (GS7) Google, Таблица, Электронные таблицы, Длиннопост

И теперь вариант с dsum:

D-функции в гугл таблицах (GS7) Google, Таблица, Электронные таблицы, Длиннопост

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

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

Ссылка на таблицу:

https://docs.google.com/spreadsheets/d/1qjMNiv7vonopcRiKFJu4...

Ссылка на документацию:

https://support.google.com/docs/answer/173497

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