Фильтруем две строки от пустых значений и объединяем в одну.
Поехали, разбираем формулу поэтапно:
1) Объединяем две строки в массив:
2) Разворачиваем массив в столбец функцией TRANSPOSE / ТРАНСП:
3) Добавляем результат в функцию QUERY, фильтруем от пустых ячеек и разворачиваем обратно с помощью TRANSPOSE / ТРАНСП:
Таблица с примером.
P.S. В региональных настройках США, Канады и некоторых других создание массива будет выглядеть так:
Поехали, разбираем формулу поэтапно:
1) Объединяем две строки в массив:
={A1:F1\A2:F2}
2) Разворачиваем массив в столбец функцией TRANSPOSE / ТРАНСП:
=TRANSPOSE({A1:F1\A2:F2})
3) Добавляем результат в функцию QUERY, фильтруем от пустых ячеек и разворачиваем обратно с помощью TRANSPOSE / ТРАНСП:
=TRANSPOSE(QUERY(TRANSPOSE({A1:F1\A2:F2});"where Col1 is not null"))
Таблица с примером.
P.S. В региональных настройках США, Канады и некоторых других создание массива будет выглядеть так:
={A1:F1,A2:F2}
Флажки не обязательно использовать активно, меняя в них значение с TRUE / ИСТИНА (флажок есть) на FALSE / ЛОЖЬ (флажка нет).
Их можно использовать и для индикации, а не изменения.
Пример (из практики, хоть и сильно упрощенный): у нас есть список регламентов, с которыми должен ознакомиться сотрудник. Он ставит свою фамилию, когда знакомится с документом, а в соседнем столбце указывается фамилия руководителя, принявшего зачет на знание регламента.
Добавим формулу, которая будет возвращать значение TRUE / ИСТИНА, когда оба столбца заполнены:
(эта формула для примера. Главное - речь о формуле, которая возвращает логическое значение, да/нет, ИСТИНА/ЛОЖЬ)
А далее выделяем диапазон и вставляем флажки (Вставка -> Флажок)
И после этого появятся флажки, которые будут "включены" при выполнении условия. заложенного в формулы. При этом щелчком такие флажки, "под которыми" есть формула, не будут изменяться.
Ссылка на Таблицу с примером.
Их можно использовать и для индикации, а не изменения.
Пример (из практики, хоть и сильно упрощенный): у нас есть список регламентов, с которыми должен ознакомиться сотрудник. Он ставит свою фамилию, когда знакомится с документом, а в соседнем столбце указывается фамилия руководителя, принявшего зачет на знание регламента.
Добавим формулу, которая будет возвращать значение TRUE / ИСТИНА, когда оба столбца заполнены:
=СЧЁТЗ(B2:C2)=2
(эта формула для примера. Главное - речь о формуле, которая возвращает логическое значение, да/нет, ИСТИНА/ЛОЖЬ)
А далее выделяем диапазон и вставляем флажки (Вставка -> Флажок)
И после этого появятся флажки, которые будут "включены" при выполнении условия. заложенного в формулы. При этом щелчком такие флажки, "под которыми" есть формула, не будут изменяться.
Ссылка на Таблицу с примером.
Сегодня гостевой пост:
Изменяем наш Google Calendar с помощью скриптов.
Передаем слово автору:
Меня, как пользователя телефона с системой Android, всегда не очень устраивал тот факт, что в моём календаре были обозначены дни рождения контактов, но без указания возраста человека.
Также и с юбилеями контактов - вроде бы юбилей есть, а сколько времени прошло с этого события непонятно.
Переходить в сам контакт и смотреть год рождения или дату юбилея, а потом что-то рассчитывать - на это времени никогда не было.
Решил сам себе упростить жизнь и написал Google Apps Script, который сначала ищет эти события в специальном календаре, который по умолчанию есть у всех и выводит эти события. А зачем на втором шаге рассчитывает возраст для конкретных контактов и уже создает события в основном календаре.
Вот ссылка на скрипт:
https://script.google.com/d/1oDswSXp_UleDXiTFushWnqziHi1Dlkb6x_neteWWKfEnjXttUUIPyRTd/edit?usp=sharing
Изменяем наш Google Calendar с помощью скриптов.
Передаем слово автору:
Меня, как пользователя телефона с системой Android, всегда не очень устраивал тот факт, что в моём календаре были обозначены дни рождения контактов, но без указания возраста человека.
Также и с юбилеями контактов - вроде бы юбилей есть, а сколько времени прошло с этого события непонятно.
Переходить в сам контакт и смотреть год рождения или дату юбилея, а потом что-то рассчитывать - на это времени никогда не было.
Решил сам себе упростить жизнь и написал Google Apps Script, который сначала ищет эти события в специальном календаре, который по умолчанию есть у всех и выводит эти события. А зачем на втором шаге рассчитывает возраст для конкретных контактов и уже создает события в основном календаре.
Вот ссылка на скрипт:
https://script.google.com/d/1oDswSXp_UleDXiTFushWnqziHi1Dlkb6x_neteWWKfEnjXttUUIPyRTd/edit?usp=sharing
Автоматически создаем фразы по определенным шаблонам в Google Таблицах
Разберем, как с помощью формул в Google Таблицах автоматически создавать фразы по определенным шаблонам, в которые будут подставляться параметры из таблицы.
Статья в Medium.
Разберем, как с помощью формул в Google Таблицах автоматически создавать фразы по определенным шаблонам, в которые будут подставляться параметры из таблицы.
Статья в Medium.
Друзья, у нас есть прайс-лист с наименованиями товаров. К каждому товару мы хотим подобрать картинку и вставить ее в Таблицу. Первый путь - можно загуглить каждое изображение руками, выгрузить и вставить эту картинку в Таблицу. Вариант рабочий, но придется потратить значительное время, особенно, если наименований у вас много.
Второй путь - вы можете вообще ничего не гуглить, а воспользоваться функцией IMPORTXML, обратиться к поиску картинок Яндекса (или Google), достать ссылку на изображение оттуда и с помощью IMAGE превратить его в картинку.
Разберем все по пунктам:
1) Формируем ссылку для поиска по картинкам Яндекса:
2) Вытаскиваем из веб-страницы поиска все ссылки на изображения:
3) Оставляем одну ссылку (например, вторую сверху):
4) Превращаем ее в картинку (и это итоговая формула):
Ссылка на таблицу.
Второй путь - вы можете вообще ничего не гуглить, а воспользоваться функцией IMPORTXML, обратиться к поиску картинок Яндекса (или Google), достать ссылку на изображение оттуда и с помощью IMAGE превратить его в картинку.
Разберем все по пунктам:
1) Формируем ссылку для поиска по картинкам Яндекса:
"https://yandex.ru/images/search?text="&a4
(a4 - ссылка на ячейку с названием товара)2) Вытаскиваем из веб-страницы поиска все ссылки на изображения:
importxml("https://yandex.ru/images/search?text="&A4;"//img/@src")
3) Оставляем одну ссылку (например, вторую сверху):
index(importxml("https://yandex.ru/images/search?text="&A4;"//img/@src");2)
4) Превращаем ее в картинку (и это итоговая формула):
=IMAGE(index(importxml("https://yandex.ru/images/search?text="&A4;"//img/@src");2))
Ссылка на таблицу.
Подсчет ингредиентов на лету.
Есть две Таблицы, продажи блюд и разбивка каждого блюда по ингредиентам. Сделаем формулу, которая совместит таблицы и покажет суммарный вес каждого проданного ингредиента.
Формула целиком: =
Расшифровка каждого этапа - на скриншоте.
Таблица с примером
Есть две Таблицы, продажи блюд и разбивка каждого блюда по ингредиентам. Сделаем формулу, которая совместит таблицы и покажет суммарный вес каждого проданного ингредиента.
Формула целиком: =
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)
А еще с помощью этой конструкции можно создать массив только из двух столбцов (столбца поиска и столбца, который будет возвращаться) и не использовать внутри
ВПР
таблицу из двадцати столбцов, что может работать медленно.