Субботние ответы на ваши вопросы
Друзья, всем привет, ответы—по ссылке.
—Добавляем новую строку скриптом и вставляем в нее текущую дату
—ДВССЫЛ в QUERY и выпадающий список с выбором месяца
Друзья, всем привет, ответы—по ссылке.
—Добавляем новую строку скриптом и вставляем в нее текущую дату
—ДВССЫЛ в QUERY и выпадающий список с выбором месяца
Medium
Субботние ответы на ваши вопросы (https://tttttt.me/google_sheets)
Друзья, ниже — ответы на ваши вопросы. Задать свой вопрос.
Рассчитываемое поле в сводных таблицах
Не всякий пользователь доходит в своем познании сводных таблиц до рассчитываемых полей. А ведь это - полезнейшая функция, по сути - формула, в качестве аргументов которой выступают поля сводной таблицы.
Давайте рассмотрим пару примеров. На скриншоте под текстом, слева - наши исходные данные, справа - сводная, которая получится в итоге.
Для начала создадим сводную таблицу, в строки добавим "Менеджер".
В значения - рассчитываемое поле (оно прячется в "добавить").
Рядом с параметром "Суммировать по" выберите Другое.
Теперь:
1. Посчитаем среднюю стоимость метра по менеджеру, формулой будет:
=sum('Сумма')/sum('Кв. м.') (где 'Сумма' и 'Кв. м.' – столбцы исходных данных).
2. Посчитаем сумму оплаченных квартир у каждого менеджера:
=SUMIFS('данные'!C2:C7;'данные'!D2:D7;"да";'данные'!A2:A7;'Менеджер')
Названия полей из исходных данных указываются в апострофах. Таблица с примером
Не всякий пользователь доходит в своем познании сводных таблиц до рассчитываемых полей. А ведь это - полезнейшая функция, по сути - формула, в качестве аргументов которой выступают поля сводной таблицы.
Давайте рассмотрим пару примеров. На скриншоте под текстом, слева - наши исходные данные, справа - сводная, которая получится в итоге.
Для начала создадим сводную таблицу, в строки добавим "Менеджер".
В значения - рассчитываемое поле (оно прячется в "добавить").
Рядом с параметром "Суммировать по" выберите Другое.
Теперь:
1. Посчитаем среднюю стоимость метра по менеджеру, формулой будет:
=sum('Сумма')/sum('Кв. м.') (где 'Сумма' и 'Кв. м.' – столбцы исходных данных).
2. Посчитаем сумму оплаченных квартир у каждого менеджера:
=SUMIFS('данные'!C2:C7;'данные'!D2:D7;"да";'данные'!A2:A7;'Менеджер')
Названия полей из исходных данных указываются в апострофах. Таблица с примером
Google Форма + Google Таблица для проведения тестирования.
Друзья, в этой статье мы покажем, как сохранять ответы на Форму в Таблицу, оценивать их в баллах и как из этого всего формировать наглядные отчеты с результатами тестирования.
Друзья, в этой статье мы покажем, как сохранять ответы на Форму в Таблицу, оценивать их в баллах и как из этого всего формировать наглядные отчеты с результатами тестирования.
Выделяем месяц из даты
Друзья, сегодня экскурс по извлечению месяца из даты (в любом нужном падеже).
1. Функция =TEXT(a1;"mmmm"), где a1—дата, вернет: Июня, Июля, Августа и т.д. Функция изменит только форматирование (отображение) вашей даты, вы увидите месяц и он будет в родительном падеже. Сама же дата останется прежней и эту ячейку вы сможете использовать в формулах.
2. Для извлечение месяца в любом падеже нам нужны будут INDEX и MONTH, дата при этом превратится в текстовую строку.
Внутри диапазона INDEX задаем массив с "правильными названиями":
=index({"ЯНВАРЬ"\"ФЕВРАЛЬ"\"МАРТ"\"АПРЕЛЬ"\"МАЙ"\"ИЮНЬ"\"ИЮЛЬ"\"АВГУСТ"\"СЕНТЯБРЬ"\"ОКТЯБРЬ"\"НОЯБРЬ"\"ДЕКАБРЬ"})
Вторым аргументом будет функция MONTH(дата), она возвращает порядковый номер месяца (1-12) и с помощью нее же мы вернем из массива нужный нам элемент, формула целиком:
=index({"ЯНВАРЬ"\"ФЕВРАЛЬ"\"МАРТ"\"АПРЕЛЬ"\"МАЙ"\"ИЮНЬ"\"ИЮЛЬ"\"АВГУСТ"\"СЕНТЯБРЬ"\"ОКТЯБРЬ"\"НОЯБРЬ"\"ДЕКАБРЬ"};month(A2))
Друзья, сегодня экскурс по извлечению месяца из даты (в любом нужном падеже).
1. Функция =TEXT(a1;"mmmm"), где a1—дата, вернет: Июня, Июля, Августа и т.д. Функция изменит только форматирование (отображение) вашей даты, вы увидите месяц и он будет в родительном падеже. Сама же дата останется прежней и эту ячейку вы сможете использовать в формулах.
2. Для извлечение месяца в любом падеже нам нужны будут INDEX и MONTH, дата при этом превратится в текстовую строку.
Внутри диапазона INDEX задаем массив с "правильными названиями":
=index({"ЯНВАРЬ"\"ФЕВРАЛЬ"\"МАРТ"\"АПРЕЛЬ"\"МАЙ"\"ИЮНЬ"\"ИЮЛЬ"\"АВГУСТ"\"СЕНТЯБРЬ"\"ОКТЯБРЬ"\"НОЯБРЬ"\"ДЕКАБРЬ"})
Вторым аргументом будет функция MONTH(дата), она возвращает порядковый номер месяца (1-12) и с помощью нее же мы вернем из массива нужный нам элемент, формула целиком:
=index({"ЯНВАРЬ"\"ФЕВРАЛЬ"\"МАРТ"\"АПРЕЛЬ"\"МАЙ"\"ИЮНЬ"\"ИЮЛЬ"\"АВГУСТ"\"СЕНТЯБРЬ"\"ОКТЯБРЬ"\"НОЯБРЬ"\"ДЕКАБРЬ"};month(A2))
Как проставить номера всех столбцов на листе?
Хочется видеть номера столбцов в таблице или же они нужны, чтобы легче прописать запрос в QUERY из другого файла (ведь, как мы неоднократно обсуждали, при запросе к другому файлу или к нескольким диапазонам в QUERY нужно писать Col1, Col4, а не A, C)
Как быть?
Простая формула массива:
=ARRAYFORMULA(COLUMN(1:1))
=ARRAYFORMULA(СТОЛБЕЦ(1:1))
Вводите ее в A1 и во всех ячейках первой строки будут номера столбцов.
При этом можно удалять и добавлять столбцы - всегда автоматически будут номера во всех из них.
Конечно, такую же операцию можно и со строками провести (функция ROW/СТРОКА)
P.S. И два субботних ответа на ваши вопросы.
Хочется видеть номера столбцов в таблице или же они нужны, чтобы легче прописать запрос в QUERY из другого файла (ведь, как мы неоднократно обсуждали, при запросе к другому файлу или к нескольким диапазонам в QUERY нужно писать Col1, Col4, а не A, C)
Как быть?
Простая формула массива:
=ARRAYFORMULA(COLUMN(1:1))
=ARRAYFORMULA(СТОЛБЕЦ(1:1))
Вводите ее в A1 и во всех ячейках первой строки будут номера столбцов.
При этом можно удалять и добавлять столбцы - всегда автоматически будут номера во всех из них.
Конечно, такую же операцию можно и со строками провести (функция ROW/СТРОКА)
P.S. И два субботних ответа на ваши вопросы.
Условное форматирование. Выделяем дубликаты и не только.
Друзья, привет! Памятка с формулами условного форматирования, с помощью которых можно выделить:
—дубликаты
—дубликаты, с проверкой по нескольким столбцам
—дубликаты, начиная со второго, третьего и т.д
Для создания правила условного форматирования:
1) выделите диапазон
2) формат > условное форматирование
3) "добавить правило", "ваша формула" и вставьте соответствующую формулу из скриншота ниже
Таблица с примером
P.S. Чтобы формулы работали - переносите их со скриншота в точности, со всеми $
Друзья, привет! Памятка с формулами условного форматирования, с помощью которых можно выделить:
—дубликаты
—дубликаты, с проверкой по нескольким столбцам
—дубликаты, начиная со второго, третьего и т.д
Для создания правила условного форматирования:
1) выделите диапазон
2) формат > условное форматирование
3) "добавить правило", "ваша формула" и вставьте соответствующую формулу из скриншота ниже
Таблица с примером
P.S. Чтобы формулы работали - переносите их со скриншота в точности, со всеми $
Простая CRM-система на Google Формах для постановки и контроля выполнения заданий
Друзья, привет! Наш читатель, Александр @aleprozorov поделился CRM-системой, которую он внедрил у себя на производстве.
Задания, статусы и комментарии создаются заполнением соответствующей Google Формы (например, Форма "Новое задание")
А Google Таблицы используются только для агрегации данных "Таблица Общая база", лист "общие задания" и для визуализации заданий для исполнителей, "Таблица Сотрудника".
Чтобы понять, как все работает — смотрите майнд-карту, которую мы сделали и читайте описание системы от Александра.
Друзья, привет! Наш читатель, Александр @aleprozorov поделился CRM-системой, которую он внедрил у себя на производстве.
Задания, статусы и комментарии создаются заполнением соответствующей Google Формы (например, Форма "Новое задание")
А Google Таблицы используются только для агрегации данных "Таблица Общая база", лист "общие задания" и для визуализации заданий для исполнителей, "Таблица Сотрудника".
Чтобы понять, как все работает — смотрите майнд-карту, которую мы сделали и читайте описание системы от Александра.
Google Форма с автоматическим добавлением вариантов ответа
Привет, друзья! В сегодняшней статье расскажем о том, как создать Google Форму для проведения опроса.
И Google Форму не простую, а с автоматическим добавлением вариантов ответа, введенных в “другое”.
Заодно покажем, как с помощью одной формулы в Таблице можно будет построить рейтинг ответов c сортировкой.
Привет, друзья! В сегодняшней статье расскажем о том, как создать Google Форму для проведения опроса.
И Google Форму не простую, а с автоматическим добавлением вариантов ответа, введенных в “другое”.
Заодно покажем, как с помощью одной формулы в Таблице можно будет построить рейтинг ответов c сортировкой.
Скрипт, запрещающий редактирование строки при незаполненных ячейках строки выше
Друзья, привет! Сегодня вопрос из нашего чата: нашей читательнице Алене понадобился скрипт, который запрещает редактирование строки (и удаляет введенное), если выбранные ячейки в строке выше не заполнены.
Алена предложила свой вариант скрипта. Мы его немного модифицировали и выкладываем результат для вас.
Таблица с примером.
Друзья, привет! Сегодня вопрос из нашего чата: нашей читательнице Алене понадобился скрипт, который запрещает редактирование строки (и удаляет введенное), если выбранные ячейки в строке выше не заполнены.
Алена предложила свой вариант скрипта. Мы его немного модифицировали и выкладываем результат для вас.
Таблица с примером.
function onEdit(e){
var wsData = e.source.getActiveSheet();
var celEdit = e.range;
var intRow = celEdit.getRow();
if(intRow > 2 && celEdit.getValue!=''){
var row = wsData.getRange(intRow-1, 1, 1, wsData.getMaxColumns()).getValues()[0];
var checkCols = [0, 2, 4]; // Какие ячейки проверяем, 0 = столбец A
var checker = checkBuilder(checkCols);
var isPass = row.filter(checker).length == 0;
if(!isPass){
SpreadsheetApp.getUi().alert('Вася, внеси все данные в обязательные для заполнения ячейки');
celEdit.clearContent();
}
}
}
var checkBuilder = function(cols){
return function(el, i){
return cols.indexOf(i) > -1 && el == '';
}
};
Алена — спасибо за отличную идею для поста!Считаем, сколько раз символ встречается в строке
Привет, друзья! Наша цель—подсчитать, сколько раз в каждой ячейке диапазона встречается буква "а".
Сначала воспользуемся формулой ПОДСТАВИТЬ(), аргументом будет выбранный символ, подставлять вместо него будем "" (ничего). Это уберет из ячейки все буквы "а".
Дальше с помощью ДЛСТР() посчитаем количество символов в исходной строке и количество символов в той же строке, но без искомого символа. И вычтем одно из другого.
Итоговая формула:
=длстр(a4)-длстр(подставить(a4;"а";""))
P.S. Чтобы учесть прописные:
=длстр(a4)-длстр(подставить(строчн(a4);"а";""))
Таблица с примером | Оглавление канала
Привет, друзья! Наша цель—подсчитать, сколько раз в каждой ячейке диапазона встречается буква "а".
Сначала воспользуемся формулой ПОДСТАВИТЬ(), аргументом будет выбранный символ, подставлять вместо него будем "" (ничего). Это уберет из ячейки все буквы "а".
Дальше с помощью ДЛСТР() посчитаем количество символов в исходной строке и количество символов в той же строке, но без искомого символа. И вычтем одно из другого.
Итоговая формула:
=длстр(a4)-длстр(подставить(a4;"а";""))
P.S. Чтобы учесть прописные:
=длстр(a4)-длстр(подставить(строчн(a4);"а";""))
Таблица с примером | Оглавление канала
Выводим ряд чисел или дат. Одной формулой.
Привет, друзья! Сегодня мы покажем, как с помощью функции
1. Числа от 5 до 20
2. Текущая дата + 60 дней
3. Числа от 1 до 10, шаг 0,5
Таблица с примером | Оглавление канала | Чат
Привет, друзья! Сегодня мы покажем, как с помощью функции
СТРОКА()
/ ROW()
вывести ряд дат или чисел с любым шагом.1. Числа от 5 до 20
=ArrayFormula(СТРОКА(A5:A20))
Разберем функцию по частям:СТРОКА(A5:A20)
возвращает массив {5, 6, 7 ... 20}.ArrayFormula
превращает формулу в функцию массива, без нее выведется только первое значение (5).2. Текущая дата + 60 дней
=ArrayFormula(СТРОКА(A1:A60)+TODAY()-1)
Добавляем вчерашнюю дату today()-1
к массиву {1, 2, 3 .. 60}.3. Числа от 1 до 10, шаг 0,5
=ArrayFormula(СТРОКА(A2:A20)*0,5)
Умножаем массив {2, 3, 4 … 20} на 0,5. Получается диапазон {1, 1.5 ... 10}.Таблица с примером | Оглавление канала | Чат
Оглавление канала | Чат | Наша книга| Донаты
Заказы, консультации: @namokonov, @renat_shagabutdinov
Заказы, консультации: @namokonov, @renat_shagabutdinov
Google Таблицы pinned «Оглавление канала | Чат | Наша книга| Донаты Заказы, консультации: @namokonov, @renat_shagabutdinov»
Новые возможности Google Таблиц
В конце июля прошла конференция Google Next cloud, на которой в числе прочего анонсировали и новшества в Google Таблицах:
—5 миллионов ячеек в документе
—Срезы (Slicers)
—Улучшения графиков
—Сводные таблицы
—Интеграция с BigQuery и другими сервисами
—Еще новшества одной строкой
Предлагаем вам перевод статьи с описанием нововведений.
В конце июля прошла конференция Google Next cloud, на которой в числе прочего анонсировали и новшества в Google Таблицах:
—5 миллионов ячеек в документе
—Срезы (Slicers)
—Улучшения графиков
—Сводные таблицы
—Интеграция с BigQuery и другими сервисами
—Еще новшества одной строкой
Предлагаем вам перевод статьи с описанием нововведений.
Medium
Новые возможности Google Таблиц
В конце июля прошла конференция Google Next cloud, на которой в числе прочего анонсировали и новшества в Google Таблицах.
Друзья, привет!
Google, на конференции Google Cloud NEXT анонсировал появление в Google BigQuery алгоритмов машинного обучения.
BigQuery—мощная облачная база данных, часть Google Cloud Platform. BG можно интегрировать с другими решениями от Google, например с нашими Таблицами.
Во-первых, мы хотим вам дать ссылку на статью Introduction to BigQuery ML (англ.)
Во-вторых, поделиться каналом, который полностью посвящен BigQuery.
С кейсами и примерами решений, новостями и лайфхаками.
Канал так и называется: @BigQuery
Google, на конференции Google Cloud NEXT анонсировал появление в Google BigQuery алгоритмов машинного обучения.
BigQuery—мощная облачная база данных, часть Google Cloud Platform. BG можно интегрировать с другими решениями от Google, например с нашими Таблицами.
Во-первых, мы хотим вам дать ссылку на статью Introduction to BigQuery ML (англ.)
Во-вторых, поделиться каналом, который полностью посвящен BigQuery.
С кейсами и примерами решений, новостями и лайфхаками.
Канал так и называется: @BigQuery
Друзья, здравствуйте!
Сегодня отличнейший кейс из нашего чата:
Нам нужно извлечь название города из строки (столбец A).
Все названия городов, которые могут встречаться в строках у нас есть (столбец D).
Извлекать будем с помощью
Запрос можно написать текстом. Допустим, у нас три города:
Сегодня отличнейший кейс из нашего чата:
Нам нужно извлечь название города из строки (столбец A).
Все названия городов, которые могут встречаться в строках у нас есть (столбец D).
Извлекать будем с помощью
=REGEXEXTRACT()
Эта функция позволяет использовать в запросе регулярное выражение. Нам нужно только перечислить в запросе все города со знаком "|" (или).Запрос можно написать текстом. Допустим, у нас три города:
=REGEXEXTRACT(A2;"Moscow|Rostov|Samara")
Но если городов много—лучше добавить функцию =JOIN
, она позволит объединить в одну строку все варианты городов из столбца D с выбранным нами разделителем (|) =JOIN("|";D2:D15)
Итоговая формула:=REGEXEXTRACT(A2;JOIN("|";$D$2:$D$15))
Таблица с примеромСтрах и ненависть в колл-центре.
Друзья, сегодня—особенная формула. Мы ее показываем только для того, чтобы вы знали, на какие чудеса способны Таблицы.
У нас Таблица звонков колл-центра. Номера телефонов и статусы.
Нужно:
1. исключить номера со статусами BUSY, PROPER, ANSWERED
2. отфильтровать оставшиеся по статусу NO ANSWER
3. сгруппировать то, что осталось и вывести только номера, на которые совершили больше пяти звонков
Все решается одной формулой:
Друзья, сегодня—особенная формула. Мы ее показываем только для того, чтобы вы знали, на какие чудеса способны Таблицы.
У нас Таблица звонков колл-центра. Номера телефонов и статусы.
Нужно:
1. исключить номера со статусами BUSY, PROPER, ANSWERED
2. отфильтровать оставшиеся по статусу NO ANSWER
3. сгруппировать то, что осталось и вывести только номера, на которые совершили больше пяти звонков
Все решается одной формулой:
=query(query(filter(A2:A;isna(match(A2:A;filter(A2:A;regexmatch(B2:B;"ANSWERED|PROPER|BUSY"));0));B2:B="NO ANSWER");"select Col1, count(Col1) group by Col1");"select Col1 where Col2>=5")Препарируем формулу в Medium | Таблица с примером
onEdit() скрипт для выпадающих связанных списков 🔥🔥
Друзья, свершилось. Не прошло и двух лет с момента создания канала, как мы решили опубликовать скрипт для создания связанных выпадающих списков.
Пример—из школы танцев. Нам нужно в зависимости от выбранного в столбце A партнёра сформировать в ячейке столбца B выпадающий список из партнёрш, которые с нашим партнером танцуют (Таблица в диапазоне D2:G4).
Наш скрипт будет запускаться при редактировании первого столбца "Листа1" (специально вывели и столбец и лист в условие скрипта, чтобы вы смогли поменять на то, что нужно вам).
Чтобы скрипт заработал после копирования Таблицы, вам нужно открыть Инструменты > Редактор скриптов и запустить его в первый раз вручную, авторизовав.
Таблица c примером / и сам скрипт
Друзья, свершилось. Не прошло и двух лет с момента создания канала, как мы решили опубликовать скрипт для создания связанных выпадающих списков.
Пример—из школы танцев. Нам нужно в зависимости от выбранного в столбце A партнёра сформировать в ячейке столбца B выпадающий список из партнёрш, которые с нашим партнером танцуют (Таблица в диапазоне D2:G4).
Наш скрипт будет запускаться при редактировании первого столбца "Листа1" (специально вывели и столбец и лист в условие скрипта, чтобы вы смогли поменять на то, что нужно вам).
Чтобы скрипт заработал после копирования Таблицы, вам нужно открыть Инструменты > Редактор скриптов и запустить его в первый раз вручную, авторизовав.
Таблица c примером / и сам скрипт
function onEdit(e)
{
var range = e.range
var sheet = e.source.getActiveSheet();
if(range.getColumn()===1 && sheet.getName()==='Лист1'){
var key = e.value
var listdata = sheet.getRange("D1:G4").getValues().filter(function(row){return row[0] === key})[0]
var list = []
for(x=1; x<listdata.length; x++){list.push(listdata[x])}
range = range.offset(0, 1)
var rule = SpreadsheetApp.newDataValidation().requireValueInList(list).build();
range.setDataValidation(rule);
}
}
Ищем доступные по ссылке документы (включая Таблицы) на Google Диске перед тем, как их найдут другие.
Друзья, привет! Пост написан по мотивам недавней истории с документами Google Диска, попавшими в индексацию.
Мы подготовили для вас специальную Таблицу. Скрипт в Таблице найдет на вашем Google Диске все файлы с формой доступа:
1. Сделайте копию нашей Таблицы
3. Скрипт выведет на лист все ваши потенциально индексируемые файлы и ссылки на них. Особенно стоит обратить внимание на форму доступа
4. Кол-во документов для вывода ограничено 300, если вам не хватит—измените цифру в пятой строке коде. Но, не забывайте, что у GAS скриптов есть суточные квоты и на вывод несколько тысяч документов их может не хватить :)
Друзья, привет! Пост написан по мотивам недавней истории с документами Google Диска, попавшими в индексацию.
Мы подготовили для вас специальную Таблицу. Скрипт в Таблице найдет на вашем Google Диске все файлы с формой доступа:
- anyoneCanFind (индексируется)Как это работает:
- anyoneWithLink (потенциально может индексироваться)
1. Сделайте копию нашей Таблицы
(файл>создать копию)
2. Запустите скрипт из меню Скрипты ↓↓
(посмотреть код можно открыв инструменты>редактор скриптов в Таблице)3. Скрипт выведет на лист все ваши потенциально индексируемые файлы и ссылки на них. Особенно стоит обратить внимание на форму доступа
"anyoneCanFind"
—это ваши документы, которые можно найти через поисковики.4. Кол-во документов для вывода ограничено 300, если вам не хватит—измените цифру в пятой строке коде. Но, не забывайте, что у GAS скриптов есть суточные квоты и на вывод несколько тысяч документов их может не хватить :)