Подсчет ингредиентов на лету.
Есть две Таблицы, продажи блюд и разбивка каждого блюда по ингредиентам. Сделаем формулу, которая совместит таблицы и покажет суммарный вес каждого проданного ингредиента.
Формула целиком: =
Расшифровка каждого этапа - на скриншоте.
Таблица с примером
Есть две Таблицы, продажи блюд и разбивка каждого блюда по ингредиентам. Сделаем формулу, которая совместит таблицы и покажет суммарный вес каждого проданного ингредиента.
Формула целиком: =
ARRAYFORMULA(QUERY({{F3:F9}\{VLOOKUP(E3:E9;B3:C6;2;0) * G3:G9}};"select Col1, sum(Col2) where Col2>0 group by Col1"))
Расшифровка каждого этапа - на скриншоте.
Таблица с примером
Друзья, привет!
Допустим, у вас две таблицы: одна с приходом товара, а другая с его расходом.
Построим формулу, которая отобразит разницу этих таблиц по каждому наименованию.
1) умножаем таблицу с расходом на -1,
2) текстовые поля вернут ошибку, поэтому оборачиваем умножение в
3) объединяем таблицы с расходом и приходом:
4) и наконец: полученный массив используем в
Таблица с примером.
Допустим, у вас две таблицы: одна с приходом товара, а другая с его расходом.
Построим формулу, которая отобразит разницу этих таблиц по каждому наименованию.
1) умножаем таблицу с расходом на -1,
=ARRAYFORMULA(F7:G13*-1)
2) текстовые поля вернут ошибку, поэтому оборачиваем умножение в
ЕСЛИОШИБКА (IFERROR)
, возвращая в случае ошибки исходный диапазон: =ARRAYFORMULA(IFERROR(F7:G13*-1;F7:G13))
3) объединяем таблицы с расходом и приходом:
=ARRAYFORMULA({B7:C12;IFERROR(F7:G13*-1;F7:G13)})
4) и наконец: полученный массив используем в
QUERY
, группируем по первому столбцу, суммируя второй: =QUERY(ARRAYFORMULA({B7:C12;IFERROR(F7:G13*-1;F7:G13)});"select Col1, sum(Col2) group by Col1")
Таблица с примером.
Скрипт, загружаем письма вашего GMAIL-аккаунта в Таблицу
Друзья, привет! Мы подготовили для вас скрипт. Он умеет переносить письма из gmail-аккаунта юзера, запустившего скрипт в Таблицу.
Одна строка — одно письмо, при переносе скрипт делает перенесенные письма прочитанными в почтовом ящике.
Чтобы заработало, вам нужно:
1. скопировать Таблицу со скриптом
2. открыть редактор скриптов > дополнительные функции Google и включить
3. заполнить первые три строки в коде:
— ID таблицы и название листа, туда будут вставляться письма
— Поисковый запрос к почтовому ящику, например
4. запустить функцию
P.S. Синтаксис поискового запроса: https://support.google.com/mail/answer/7190, созданный запрос можете проверить в веб-интерфейсе почты gmail.
Друзья, привет! Мы подготовили для вас скрипт. Он умеет переносить письма из gmail-аккаунта юзера, запустившего скрипт в Таблицу.
Одна строка — одно письмо, при переносе скрипт делает перенесенные письма прочитанными в почтовом ящике.
Чтобы заработало, вам нужно:
1. скопировать Таблицу со скриптом
2. открыть редактор скриптов > дополнительные функции Google и включить
Gmail API
3. заполнить первые три строки в коде:
— ID таблицы и название листа, туда будут вставляться письма
— Поисковый запрос к почтовому ящику, например
'after:2019/05/12'
- письма после 12 мая'after:2019/05/12 and is:unread'
- после 12 мая и непрочитанные4. запустить функцию
run()
, ее можно запускать как руками, так и ставить в расписание на регулярный запуск (изменить > триггеры текущего проекта в редакторе скриптов), письма по вашему запросу будут добавляться в ТаблицуP.S. Синтаксис поискового запроса: https://support.google.com/mail/answer/7190, созданный запрос можете проверить в веб-интерфейсе почты gmail.
Forwarded from CONTRIBUTOR.PW (Alexander Ivanov)
2.gif
13.9 MB
Хорошие новости. Теперь в Таблицах можно обрезать пробелы в строках штатными средствами. Т.н. операция
trim
доступна из меню https://gsuiteupdates.googleblog.com/2019/05/new-sheets-features-may.html?utm_source=contributor.pwForwarded from CONTRIBUTOR.PW (Alexander Ivanov)
1.gif
12.5 MB
Действительно, функция удаления дубликатов в Таблицах должна быть встроенной https://gsuiteupdates.googleblog.com/2019/05/new-sheets-features-may.html?utm_source=contributor.pw
ARRAYFORMULA для автоматической нумерации списков.
Друзья, мы принесли вам отличную формулу, с помощью которой вы можете сделать автоматическую нумерацию списка по одному и более условиям.
За накопление (за увеличение каждого счетчика на 1) отвечает часть
Друзья, мы принесли вам отличную формулу, с помощью которой вы можете сделать автоматическую нумерацию списка по одному и более условиям.
За накопление (за увеличение каждого счетчика на 1) отвечает часть
ROW(A:A);"<="&ROW(A:A)
1) Нумерация по одному условию (столбцу):=ARRAYFORMULA(
COUNTIFs(A3:A9;A3:A9;ROW(A3:A9);"<="&ROW(A3:A9))
)
2) Нумерация по двум условиям (столбцам):=ARRAYFORMULA(
COUNTIFS(D3:D8;D3:D8;E3:E8;E3:E8;ROW(A3:A8);"<="&ROW(A3:A8))
)
Таблица с примеромСегодня у нас небольшой лайфхак про применение IFTTT для отправки сообщений с данными из Таблиц от нашего читателя Романа Моисеева. Спасибо Роману!
Зачастую мне необходимо знать всего один показатель из таблицы после заполнения формы и для этого не всегда удобно залезать в таблицу. И вот что я придумал:
Через сервис IFTTT можно сделать так, чтобы данные ячейки после каждого обновления передавались в любой удобной форме практически в любой сервис. В моем случае с расходами я установил себе, что после того, как я вношу трату, мне в Telegram приходит остаток на день. И вот как это работает.
Зачастую мне необходимо знать всего один показатель из таблицы после заполнения формы и для этого не всегда удобно залезать в таблицу. И вот что я придумал:
Через сервис IFTTT можно сделать так, чтобы данные ячейки после каждого обновления передавались в любой удобной форме практически в любой сервис. В моем случае с расходами я установил себе, что после того, как я вношу трату, мне в Telegram приходит остаток на день. И вот как это работает.
Если вспомнить, что дата и время в Google Таблицах - это числа, то мы поймем, что можем без труда генерировать случайные даты и время.
Google Документ с примером
Google Документ с примером
Скрипт копирования / фильтрации.
Друзья, привет. В последние недели в нашем чате все чаще спрашивают — а что делать, если не работает функция
Мы написали простой скрипт, который поможет в такой ситуации:
1) скрипт открывает выбранную Таблицу / лист в ней
2) берет диапазон и фильтрует его по первому столбцу по дате (мы это сделали, чтобы показать, что так можно)
3) очищает лист в другой Таблице
4) и вставляет данные
В скрипте всего несколько строк кода и каждая из них снабжена комментариями, чтобы открыть скрипт — скопируйте таблицу себе и перейдите в Инструменты → Редактор скриптов.
Таблица со скриптом, которую нужно скопировать
P. S. Чтобы скрипт выполнялся регулярно, например, раз в сутки — идем в Правка → Триггеры текущего проекта и задаем расписание запуска.
Друзья, привет. В последние недели в нашем чате все чаще спрашивают — а что делать, если не работает функция
Importrange
и данные из другой Таблицы не загружаются или загружаются не полностью (кстати, вот ответ поддержки на это).Мы написали простой скрипт, который поможет в такой ситуации:
1) скрипт открывает выбранную Таблицу / лист в ней
2) берет диапазон и фильтрует его по первому столбцу по дате (мы это сделали, чтобы показать, что так можно)
3) очищает лист в другой Таблице
4) и вставляет данные
В скрипте всего несколько строк кода и каждая из них снабжена комментариями, чтобы открыть скрипт — скопируйте таблицу себе и перейдите в Инструменты → Редактор скриптов.
Таблица со скриптом, которую нужно скопировать
P. S. Чтобы скрипт выполнялся регулярно, например, раз в сутки — идем в Правка → Триггеры текущего проекта и задаем расписание запуска.
Друзья, в Medium рассказываем про третий аргумент в QUERY (заголовки).
P.S. И показываем, как вы можете объединить все ячейки внутри каждого столбца
=QUERY(диапазон данных;"запрос";заголовки)
P.S. И показываем, как вы можете объединить все ячейки внутри каждого столбца
Medium
Query и последний аргумент (заголовки)
Друзья, привет! В функции QUERY, помимо диапазона данных и текстового запроса есть третий аргумент, он отвечает за количество строк…
Последние новости Google Таблиц
— появилась возможность посмотреть историю редактирования любой ячейки
— в новую Google Форму теперь можно переносить вопросы из старой (новость)
— можно открывать XLSX-файлы (и другие форматы документов Office) и изменять прямо на Google Диске (новость)
— появилась возможность посмотреть историю редактирования любой ячейки
— в новую Google Форму теперь можно переносить вопросы из старой (новость)
— можно открывать XLSX-файлы (и другие форматы документов Office) и изменять прямо на Google Диске (новость)
Google Workspace Updates
Import questions from previously existing forms into a new Google form
What’s changing We’re adding the ability to import questions from your existing Google Forms and forms shared with you into a new form. Who...
Заменяем выбранное значение на другое. Сниппет.
Друзья, привет! Сегодня публикуем сниппет, который позволяет заменить одно значение в диапазоне на другое. Этот сниппет сможете использовать как внутри других скриптов, так и просто в Таблице, как пользовательскую функцию (смотрите гифку).
А еще мы добавили наш чат к каналу, теперь вы можете перейти в него просто нажав кнопку "Discuss".
Друзья, привет! Сегодня публикуем сниппет, который позволяет заменить одно значение в диапазоне на другое. Этот сниппет сможете использовать как внутри других скриптов, так и просто в Таблице, как пользовательскую функцию (смотрите гифку).
function sheet_replace(range, search, replace) {
return range.map(function(row) {
return row.map(function(cell) {
return cell == search ? replace : cell
})
})
}
А еще мы добавили наш чат к каналу, теперь вы можете перейти в него просто нажав кнопку "Discuss".
Учимся извлекать из текста нужное. База знаний регулярных выражений для REGEXEXTRACT.
Друзья, мы подготовили для вас Таблицу с паттернами регулярных выражений, она поможет достать из текста:
А еще можно заменять и проверять, не только доставать. Напоминаем, в Google Таблицах есть три функции для работы с регулярными выражениями:
Таблица сделана силами нашего чата, спасибо: @IT_sAdmin, @mrykin, @avazbek88, Макс Махров.
Если вы хотите добавить примеры своих выражений — просто напишите мне (@namokonov) в лс.
Друзья, мы подготовили для вас Таблицу с паттернами регулярных выражений, она поможет достать из текста:
— номер телефона
— электропочту
— какую-то цифру или слово
— вы сможете чуть лучше понять регулярки
А еще можно заменять и проверять, не только доставать. Напоминаем, в Google Таблицах есть три функции для работы с регулярными выражениями:
REGEXEXTRACT
для извлечения, REGEXMATCH
для проверки соответствия и REGEXREPLACE
для замены текста.Таблица сделана силами нашего чата, спасибо: @IT_sAdmin, @mrykin, @avazbek88, Макс Махров.
Если вы хотите добавить примеры своих выражений — просто напишите мне (@namokonov) в лс.
ЛЕВЫЙ ВПР (когда искомое значение не в первом столбце)
Если в исходной таблице искомые данные стоят правее тех данных, которые вам нужно возвращать с помощью
Но в Google Таблицах можно еще проще решить эту проблему, пересобрав таблицу в правильном порядке в массив внутри ВПР.
Напомним, что для горизонтального объединения массивов их нужно взять в фигурные скобки и поставить между ними обратную косую черту (либо запятую, для других региональных настроек):
А еще с помощью этой конструкции можно создать массив только из двух столбцов (столбца поиска и столбца, который будет возвращаться) и не использовать внутри
Если в исходной таблице искомые данные стоят правее тех данных, которые вам нужно возвращать с помощью
ВПР / VLOOKUP
, можно воспользоваться сочетанием функций ИНДЕКС / INDEX
и ПОИСКПОЗ / MATCH
(так обычно это решается в Excel).Но в Google Таблицах можно еще проще решить эту проблему, пересобрав таблицу в правильном порядке в массив внутри ВПР.
Напомним, что для горизонтального объединения массивов их нужно взять в фигурные скобки и поставить между ними обратную косую черту (либо запятую, для других региональных настроек):
=ВПР(A2;{'Прайс-лист'!B:B \ 'Прайс-лист'!A:A};2;0)
А еще с помощью этой конструкции можно создать массив только из двух столбцов (столбца поиска и столбца, который будет возвращаться) и не использовать внутри
ВПР
таблицу из двадцати столбцов, что может работать медленно.Скрипт. Прочитаем, что написано на стикерах.
OCR в Google Docs
Недавно нам потребовалось распознать текст, который был написан на нескольких сотнях стикеров. В Google Документах доступна функция OCR (optical character recognition), ей мы и воспользовались.
Мы нашли скрипт, немного модифицировали его и выкладываем в Таблице с примером.
Работает он так:
Чтобы скрипт заработал — активируйте Drive Api в редакторе скриптов (Ресурсы → Дополнительные функции Google)
Таблица со скриптом (файл → создать копию)
Папка со стикерами (сделайте копию, если захотите попробовать скрипт на нашей папке)
Про OCR:
https://habr.com/ru/post/114670/
https://habr.com/ru/post/97173/
OCR в Google Docs
Недавно нам потребовалось распознать текст, который был написан на нескольких сотнях стикеров. В Google Документах доступна функция OCR (optical character recognition), ей мы и воспользовались.
Мы нашли скрипт, немного модифицировали его и выкладываем в Таблице с примером.
Работает он так:
1) На листе "config" задаете ID папки на Google Диске с PNG / JPG / PDF и задаете лист, на который будет сохранятся результат. ID папки - часть URL адреса после folder/. Папка должна находиться на вашем Google Диске, так как скрипт будет создавать в ней Doc файлы.
2) Скрипт проходится по всем изображениям в заданной папке, сохраняя их копию в Doc. Внутри Doc будет распознанный текст.
3) Дальше этот текст, ID и URL Документа скрипт вставит в Таблицу.
Чтобы скрипт заработал — активируйте Drive Api в редакторе скриптов (Ресурсы → Дополнительные функции Google)
Таблица со скриптом (файл → создать копию)
Папка со стикерами (сделайте копию, если захотите попробовать скрипт на нашей папке)
Про OCR:
https://habr.com/ru/post/114670/
https://habr.com/ru/post/97173/
На скриншоте - пользовательский числовой формат. То есть не условное форматирование. И в ячейках числа - с ними можно проводить расчеты.
Как сделать такой формат?
Нужен следующий код:
[<2000][Red]#,# * 🔥;[>3000][Green]#,# * 🔥🔥🔥;[Blue]#,# * 🔥🔥
Расшифруем его:
🔥 - текст, который мы хотим видеть в ячейке помимо числа (вы можете взять любой другой символ или написать разные слова для разных случаев)
Файл с примером - по ссылке:
https://docs.google.com/spreadsheets/d/1H_pCMtfCtZZUfLee893v7-Y6-lAGotjWOKdnkAUq9iQ
Как сделать такой формат?
Нужен следующий код:
[<2000][Red]#,# * 🔥;[>3000][Green]#,# * 🔥🔥🔥;[Blue]#,# * 🔥🔥
Расшифруем его:
[<2000]
- условия. У нас есть формат для чисел меньше 2000, для чисел больше 3000 и для остальных случаев.[Red]
- цвет шрифта#,#
- числовой формат с разделителями разрядов🔥 - текст, который мы хотим видеть в ячейке помимо числа (вы можете взять любой другой символ или написать разные слова для разных случаев)
*
- выравнивает число слева, а текст справаФайл с примером - по ссылке:
https://docs.google.com/spreadsheets/d/1H_pCMtfCtZZUfLee893v7-Y6-lAGotjWOKdnkAUq9iQ
Поговорим еще немного про пользовательские форматы чисел
— добавляем к числам «штуки», не делая строки текстовыми
— создаем свой формат для положительных и отрицательных чисел
— отдельный формат в зависимости от величины числа
— добавляем цвет
— работа с тысячами
Пользовательские форматы
— добавляем к числам «штуки», не делая строки текстовыми
— создаем свой формат для положительных и отрицательных чисел
— отдельный формат в зависимости от величины числа
— добавляем цвет
— работа с тысячами
Пользовательские форматы
Друзья, мы нашли новое пространство для рекламы.
По ссылке — видео, Маша танцует Frame Up (смесь движений Jazz Funk, Strip, High Hells) в футболке нашего канала
Шер, ретвит и Google Sheet!
P. S. А завтра опубликуем скрипт для связанных выпадающих списков, будем брать их из кеша Таблицы, теперь списки могут быть огромными и будут работать быстрее.
По ссылке — видео, Маша танцует Frame Up (смесь движений Jazz Funk, Strip, High Hells) в футболке нашего канала
«make @google_sheets great again»
. Спасибо Маше за такую любовь к Таблицам, подписывайтесь на ее Инстаграмм. Шер, ретвит и Google Sheet!
P. S. А завтра опубликуем скрипт для связанных выпадающих списков, будем брать их из кеша Таблицы, теперь списки могут быть огромными и будут работать быстрее.