This media is not supported in your browser
VIEW IN TELEGRAM
Обводим данные при открытии Таблицы
Друзья, сегодня у нас очень простой скрипт, идея скрипта возникла у нас в чате (Вероника, спасибо ❤️)
Скрипт при каждом открытии Таблицы берёт диапазон с данными и обводит его границами. А толщину линий, тип и их цвет можно изменить в третьей строке нашего огромного, трехстрочного скрипта.
2) Дополнение, по просьбам трудящихся, делаем границы на всех листах Таблицы при открытии:
Таблица с кодами
Друзья, сегодня у нас очень простой скрипт, идея скрипта возникла у нас в чате (Вероника, спасибо ❤️)
Скрипт при каждом открытии Таблицы берёт диапазон с данными и обводит его границами. А толщину линий, тип и их цвет можно изменить в третьей строке нашего огромного, трехстрочного скрипта.
function onOpen() {
const sh = SpreadsheetApp.getActive().getSheetByName('Лист');
const dr = sh.getDataRange();
dr.setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.DOTTED);
};
2) Дополнение, по просьбам трудящихся, делаем границы на всех листах Таблицы при открытии:
function onOpen() {
const sheets = SpreadsheetApp.getActive().getSheets();
sheets.forEach(sh => {
const dr = sh.getDataRange();
dr.setBorder(true, true, true, true, true, true,
'#000000',
SpreadsheetApp.BorderStyle.DOTTED);
})
};
Таблица с кодами
Перевод строки: как разделить по нему текст или очистить текст от него в Google Таблицах и Excel
Сегодня говорим про СИМВОЛ(10), он же Alt+Enter, он же перевод строки:
- Как разбить текст из одной ячейки, в которой много строк, на отдельные столбцы
- Как удалить переходы на новую строку из всех ячеек диапазона
https://teletype.in/@renat_shagabutdinov/arny9pYwYld
Сегодня говорим про СИМВОЛ(10), он же Alt+Enter, он же перевод строки:
- Как разбить текст из одной ячейки, в которой много строк, на отдельные столбцы
- Как удалить переходы на новую строку из всех ячеек диапазона
https://teletype.in/@renat_shagabutdinov/arny9pYwYld
Teletype
Перевод строки: как разделить по нему текст или очистить текст от него в Google Таблицах и Excel
В ячейках Excel и Google Таблиц можно переходить на новую строку — сочетание клавиш Alt+Enter. Это отдельный символ, а не визуальное...
Достаём характеристики и описание товаров из ВБ, Таблица со скриптом
Друзья, привет! Делимся с вами Таблицей, пользуйтесь, пока работает.
Просто копируйте Таблицу к себе, вставляйте номенклатуры в первый столбец и запускайте скрипт из меню с "🐱". Таблица загружает всё, что на скриншоте.
В скрипте две части:
1) сначала формируем исходя из номера товара (того самого номера, который вы видите в ссылке на товар в ВБ) ссылку на JSON (ссылка, например)
2) загружаем этот JSON по каждому товару и достаём из него составные части (название категории, сезон, опции), результат вставляем на лист Таблицы
Таблица со скриптом
Пример JSON по товару
Код отдельно
Любимый ВБ, формируем ссылки на изображения товара
---
⭐️ Мы создаём разные полезные решения для ОЗОН и ВБ, пишите в заказ работы
Друзья, привет! Делимся с вами Таблицей, пользуйтесь, пока работает.
Просто копируйте Таблицу к себе, вставляйте номенклатуры в первый столбец и запускайте скрипт из меню с "🐱". Таблица загружает всё, что на скриншоте.
В скрипте две части:
1) сначала формируем исходя из номера товара (того самого номера, который вы видите в ссылке на товар в ВБ) ссылку на JSON (ссылка, например)
2) загружаем этот JSON по каждому товару и достаём из него составные части (название категории, сезон, опции), результат вставляем на лист Таблицы
Таблица со скриптом
Пример JSON по товару
Код отдельно
Любимый ВБ, формируем ссылки на изображения товара
---
⭐️ Мы создаём разные полезные решения для ОЗОН и ВБ, пишите в заказ работы
Обводим 2
Друзья, продолжаем помогать Веронике из нашего чатика со скриптом, который при открытии Таблицы определяет нижнюю границу диапазонов и обводит ячейки в диапазонах рамками.
Мы немного изменили код, теперь вам нужно задать список открытых диапазонов, с которыми скрипт должен поработать (смотрите на подчеркнутую на скриншоте строку в коде).
И скрипт при открытии Таблицы обратится к каждому диапазону, найдет внутри него последнюю строку с данными и на полученные диапазоны применит рамки.
Мы не стали ограничиваться рамками и для примера применяем к ячейкам фоновую заливку и покрасили все в розовый. По аналогии можно применять и другое форматирование, конечно, методы смотрите в документации.
Таблица со скриптом
Код отдельно:
---
⭐️ Заказ работы у нас (по ссылке - примеры)
Друзья, продолжаем помогать Веронике из нашего чатика со скриптом, который при открытии Таблицы определяет нижнюю границу диапазонов и обводит ячейки в диапазонах рамками.
Мы немного изменили код, теперь вам нужно задать список открытых диапазонов, с которыми скрипт должен поработать (смотрите на подчеркнутую на скриншоте строку в коде).
И скрипт при открытии Таблицы обратится к каждому диапазону, найдет внутри него последнюю строку с данными и на полученные диапазоны применит рамки.
Мы не стали ограничиваться рамками и для примера применяем к ячейкам фоновую заливку и покрасили все в розовый. По аналогии можно применять и другое форматирование, конечно, методы смотрите в документации.
Таблица со скриптом
Код отдельно:
function onOpen() {
const ss = SpreadsheetApp.getActive();
const ranges = ["Лист!a3:d", "Лист!h2:i", "Лист!l2:n"]
ranges.forEach(range => {
const data = ss.getRange(range).getValues();
var lr = 0;
data.forEach((row, i) => {
if (row.some(f => f)) {
lr = i;
};
});
const real_lr = range.match(/\!\D(\d+)/)?.[1] * 1 + lr
ss.getRange(range + real_lr)
.setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.DOTTED)
.setBackground('pink');
})
};
---
⭐️ Заказ работы у нас (по ссылке - примеры)
Функции баз данных
Функции БД - мощный инструмент. Они есть и в Excel и в Google Таблицах и хороши для работы с несколькими условиями, с наборами условий.
Подготовили для вас статью про эти функции и про то, как ими пользоваться.
Наглядно и с примерами: https://teletype.in/@renat_shagabutdinov/4lVaI_Pj7
Функции БД - мощный инструмент. Они есть и в Excel и в Google Таблицах и хороши для работы с несколькими условиями, с наборами условий.
Подготовили для вас статью про эти функции и про то, как ими пользоваться.
Наглядно и с примерами: https://teletype.in/@renat_shagabutdinov/4lVaI_Pj7
Флаг вам в руки — суммируйте что хотите. SUMIFS с флажком
Задача: вставить в таблицу флажок, который будет включать или отключать один из критериев функции СУММЕСЛИМН / SUMIFS (ну или ее аналогов для подсчета/усреднения COUNTIFS, AVERAGEIFS, COUNTUNIQUEIFS).
Вставляем флажок и добавляем функцию IF / ЕСЛИ, которая в соответствующем аргументе будет возвращать условие, если флажок включен, и “*”, если флажок выключен. Так как звездочка — символ подстановки (wildcard), соответствующий любому тексту, то одна звездочка = любое значение = отсутствие всякого условия для соответствующего столбца.
Если в ячейке с условием не будет точного значения (например, полученное с помощью выпадающего списка благодаря проверке данных и тем самым гарантированно совпадающее со значениями из диапазона), то можно добавить звездочки слева и справа от условия — чтобы искать только по слову/символам, а не точному совпадению.
Понятное дело, таким образом и несколько флажков можно сделать для разных критериев — как в примере по ссылке (создать копию).
Где еще работают звездочки? В функциях VLOOKUP / ВПР, MATCH /ПОИСКПОЗ, XLOOKUP / ПРОСМОТРX и XMATCH / ПОИСКПОЗX (но там нужно включить поиск с символами подстановки, задав аргумент match_mode равным двойке), в функции SEARCH/ ПОИСК , в функциях баз данных (DSUM / БДСУММ, DAVERAGE / ДСРЗНАЧ , DCOUNT / БСЧЁТ, DCOUNTA / БСЧЁТА и других).
В Excel — еще и в фильтрах, условном форматировании, окне "Найти и заменить".
Задача: вставить в таблицу флажок, который будет включать или отключать один из критериев функции СУММЕСЛИМН / SUMIFS (ну или ее аналогов для подсчета/усреднения COUNTIFS, AVERAGEIFS, COUNTUNIQUEIFS).
Вставляем флажок и добавляем функцию IF / ЕСЛИ, которая в соответствующем аргументе будет возвращать условие, если флажок включен, и “*”, если флажок выключен. Так как звездочка — символ подстановки (wildcard), соответствующий любому тексту, то одна звездочка = любое значение = отсутствие всякого условия для соответствующего столбца.
=SUMIFS(F:F;B:B;IF(I4;J4;"*"))
Если в ячейке с условием не будет точного значения (например, полученное с помощью выпадающего списка благодаря проверке данных и тем самым гарантированно совпадающее со значениями из диапазона), то можно добавить звездочки слева и справа от условия — чтобы искать только по слову/символам, а не точному совпадению.
=SUMIFS(F:F;B:B;IF(I4;"*"&J4&"*";"*"))
Понятное дело, таким образом и несколько флажков можно сделать для разных критериев — как в примере по ссылке (создать копию).
Где еще работают звездочки? В функциях VLOOKUP / ВПР, MATCH /ПОИСКПОЗ, XLOOKUP / ПРОСМОТРX и XMATCH / ПОИСКПОЗX (но там нужно включить поиск с символами подстановки, задав аргумент match_mode равным двойке), в функции SEARCH/ ПОИСК , в функциях баз данных (DSUM / БДСУММ, DAVERAGE / ДСРЗНАЧ , DCOUNT / БСЧЁТ, DCOUNTA / БСЧЁТА и других).
В Excel — еще и в фильтрах, условном форматировании, окне "Найти и заменить".
Google Docs
Флаг + SUMIFS
СОЗДАЕМ QR-код в Таблице
Друзья, Google (зачем-то) отключил свой сервис по генерации QR-кодов, с помощью которого можно было закодировать свой текст в QR.
Мы вам принесли альтернативу, бесплатный сервис quickchart.io, базовая ссылка для создания кода будет выглядеть так:
Можно добавить дополнительное форматирование, сделаем код розовым, а заливку фиолетовой:
Добавим наше изображение в центр кода:
Больше возможностей ищите в описании API: https://quickchart.io/documentation/
Таблица с примерами
PS Делитесь куарами, которые получатся у вас, будем добавлять их в Таблицу😶
Друзья, Google (зачем-то) отключил свой сервис по генерации QR-кодов, с помощью которого можно было закодировать свой текст в QR.
Мы вам принесли альтернативу, бесплатный сервис quickchart.io, базовая ссылка для создания кода будет выглядеть так:
=IMAGE("https://quickchart.io/qr?text=" & A1), где A1 - ваш текст.
Можно добавить дополнительное форматирование, сделаем код розовым, а заливку фиолетовой:
=IMAGE( "https://quickchart.io/qr?text=" & A1 & "&light=392b8d&dark=f52f9e")
Добавим наше изображение в центр кода:
=IMAGE( "https://quickchart.io/qr?text=" & A1 & "¢erImageUrl=ссылка на изображение
Больше возможностей ищите в описании API: https://quickchart.io/documentation/
Таблица с примерами
PS Делитесь куарами, которые получатся у вас, будем добавлять их в Таблицу
Please open Telegram to view this post
VIEW IN TELEGRAM
Выделяем строки с топ-N значений в каком-то столбце
Допустим, надо залить цветом 10 самых крупных сделок. Выделяем диапазон и оздаем правило условного форматирования с формулой. Формула будет такой:
Функция LARGE / НАИБОЛЬШИЙ вычислит N-ное значение в диапазоне. Например, если вторым аргументом мы ей дадим 5 (в самой формуле или в ячейке, чтобы проще было менять это число потом), то она вернет 5 по порядку значение из столбца с числами. И мы выделим все строки, в которых числа в нужном столбце будут больше этого значения (включительно).
Не забываем закрепить все ссылки, кроме строки проверяемого числа (потому что правило условного форматирования будет проверять в нескольких столбцах, а проверяем мы всегда один и тот же столбец; единственное, что будет меняться — это строка, так как проверять мы будем числа в каждой очередной строке).
Или, в нашем примере:
В столбце F числа, по которым мы выделяем самые крупные сделки, в J1 число (сколько крупнейших строк выделяем).
Ссылка на таблицу с примером
Допустим, надо залить цветом 10 самых крупных сделок. Выделяем диапазон и оздаем правило условного форматирования с формулой. Формула будет такой:
=ссылка на первую ячейку в столбце с проверяемыми числами >= LARGE(столбец с числами; число первых N значений)
Функция LARGE / НАИБОЛЬШИЙ вычислит N-ное значение в диапазоне. Например, если вторым аргументом мы ей дадим 5 (в самой формуле или в ячейке, чтобы проще было менять это число потом), то она вернет 5 по порядку значение из столбца с числами. И мы выделим все строки, в которых числа в нужном столбце будут больше этого значения (включительно).
Не забываем закрепить все ссылки, кроме строки проверяемого числа (потому что правило условного форматирования будет проверять в нескольких столбцах, а проверяем мы всегда один и тот же столбец; единственное, что будет меняться — это строка, так как проверять мы будем числа в каждой очередной строке).
Или, в нашем примере:
=$F2>=LARGE($F$2:$F;$J$1)
В столбце F числа, по которым мы выделяем самые крупные сделки, в J1 число (сколько крупнейших строк выделяем).
Ссылка на таблицу с примером
This media is not supported in your browser
VIEW IN TELEGRAM
Наконец-то в таблицах Google появятся таблицы!
Речь про аналог того, что в Excel называется "Таблицами" (Tables; про них целая книга есть, между прочим), в русскоязычном сообществе и книгах — "умными таблицами", а в Google Spreadsheets будет тоже Tables.
— В таблицах форматирование автоматически распространяется на будущие строки
— Можно ссылаться на столбцы таблицы вот так:
— У столбцов можно будет устанавливать тип данных (например, дата или текст или выпадающий список) — такая проверка данных, которая встроена в таблицу и тоже будет автоматом распространяться на добавляемые строки
— Будет новый тип представления — Group View, временная группировка по одному из столбцов таблицы.
Ждем! Как только появятся, расскажем подробнее и про ссылки на таблицы в формулах, и про прочее. Новость тут (гифка оттуда же):
https://workspaceupdates.googleblog.com/2024/05/tables-in-google-sheets.html
Речь про аналог того, что в Excel называется "Таблицами" (Tables; про них целая книга есть, между прочим), в русскоязычном сообществе и книгах — "умными таблицами", а в Google Spreadsheets будет тоже Tables.
— В таблицах форматирование автоматически распространяется на будущие строки
— Можно ссылаться на столбцы таблицы вот так:
Имя_Таблицы[Имя_Столбца]
(и тогда все будущие строки этого столбца будут учтены в вашей формуле, да и читабельность получше— У столбцов можно будет устанавливать тип данных (например, дата или текст или выпадающий список) — такая проверка данных, которая встроена в таблицу и тоже будет автоматом распространяться на добавляемые строки
— Будет новый тип представления — Group View, временная группировка по одному из столбцов таблицы.
Ждем! Как только появятся, расскажем подробнее и про ссылки на таблицы в формулах, и про прочее. Новость тут (гифка оттуда же):
https://workspaceupdates.googleblog.com/2024/05/tables-in-google-sheets.html
СОХРАНЯТОР: берем ссылки и делаем из них файлы на Google Диске из Таблиц
Друзья, привет!
Недавно мы написали для вас о том, как в Таблицах создавать QR-коды. В комментариях к этому посту был вопрос - а как сохранить созданные картинки (имея ссылку на них) как файлы на Google Диске?
Все время после того, как мы получили вопрос мы не спали, не ели и думали над решением, в итоге оно готово, мы создали для вас Таблицу со скриптом.
Таблица со скриптом
1) в ячейку A2 вставляете ID папки на Диске (Все будет сохраняться в неё)
2) в диапазон A5:A вставляете прямые ссылки на свои файлы
3) запускаете скрипт через клик на картинку
4) скрипт обойдет каждую ссылку и попытается создать из нее файл и сохранить этот файл на Диск в вашу папку, в случае успеха поместит ссылку на результат в столбец B, в случае ошибки - эту ошибку
PS Картинки сохраняются, PDF-файлы также сохраняются, остальное не пробовали, потестируйте самостоятельно.
Код отдельно
---
⭐️ Заказ работы у нас
Друзья, привет!
Недавно мы написали для вас о том, как в Таблицах создавать QR-коды. В комментариях к этому посту был вопрос - а как сохранить созданные картинки (имея ссылку на них) как файлы на Google Диске?
Все время после того, как мы получили вопрос мы не спали, не ели и думали над решением, в итоге оно готово, мы создали для вас Таблицу со скриптом.
Таблица со скриптом
1) в ячейку A2 вставляете ID папки на Диске (Все будет сохраняться в неё)
2) в диапазон A5:A вставляете прямые ссылки на свои файлы
3) запускаете скрипт через клик на картинку
4) скрипт обойдет каждую ссылку и попытается создать из нее файл и сохранить этот файл на Диск в вашу папку, в случае успеха поместит ссылку на результат в столбец B, в случае ошибки - эту ошибку
PS Картинки сохраняются, PDF-файлы также сохраняются, остальное не пробовали, потестируйте самостоятельно.
Код отдельно
function google_sheets() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Сейв!');
const d = sh.getDataRange().getValues();
var folder = DriveApp.getFolderById(d[1][0]);
if (!folder) {
ss.toast('папка не существует или у вас к ней нет доступа, в общем, всё');
return;
}
for (var x = 4; x < d.length; x++) {
try {
const url = d[x][0];
const response = UrlFetchApp.fetch(url).getBlob();
const file = folder.createFile(response);
const fileUrl = file.getUrl();
sh.getRange(x + 1, 2).setValue(fileUrl);
} catch (err) {
sh.getRange(x + 1, 2).setValue(err.name + ', ' + err.message);
}
};
};
---
⭐️ Заказ работы у нас
ДВИГАЕМ ВРЕМЯ ФОРМУЛАМИ
– как получить дату следующего понедельника
– как перейти на два месяца назад
– как прибавить три часа
– как отбросить время и оставить только дату
– как округлить время до часа
И подобные кейсы в прекрасном справочнике от участника нашего чата Михаила Смирнова, спасибо ему 👏.
На скриншоте – не всё, смотрите Таблицу.
==
Еще полезное про даты:
> Выводим ряд чисел или дат. Одной формулой.
> Сегодня хороший день - 43 873.
===
📕 Оглавление канала
📘 Канал: @google_sheets
📗 Чат: @google_spreadsheets_chat
– как получить дату следующего понедельника
– как перейти на два месяца назад
– как прибавить три часа
– как отбросить время и оставить только дату
– как округлить время до часа
И подобные кейсы в прекрасном справочнике от участника нашего чата Михаила Смирнова, спасибо ему 👏.
На скриншоте – не всё, смотрите Таблицу.
==
Еще полезное про даты:
> Выводим ряд чисел или дат. Одной формулой.
> Сегодня хороший день - 43 873.
===
📕 Оглавление канала
📘 Канал: @google_sheets
📗 Чат: @google_spreadsheets_chat
Возвращаем ссылку на диапазон с помощью функций
Есть несколько волшебных функций, которые будут возвращать ссылку на ячейку, если разделить их двоеточием.
То есть мы можем задать начало и конец диапазона функциями/формулами.
Например, мы можем находить значение с помощью сочетания INDEX / ИНДЕКС и MATCH / ПОИСКПОЗ. Если после поставить двоеточие, то вместо значения будет возвращаться ссылка на ячейку.
В следующем варианте ищем два значения - превращаем каждое из значения в ссылку за счет двоеточия, получаем на выходе диапазон и его суммируем
Магия работает в Excel и Google Таблицах со следующими функциями:
CHOOSE / ВЫБОР
IF / ЕСЛИ
IFS / ЕСЛИМН
INDEX / ИНДЕКС
INDIRECT / ДВССЫЛ
OFFSET / СМЕЩ
SWITCH / ПЕРЕКЛЮЧ
VLOOKUP, HLOOKUP, LOOKUP / ВПР, ГПР, ПРОСМОТР
XLOOKUP / ПРОСМОТРX (удовольствие, доступное в Microsoft 365 / Excel 2021)
INDEX будет работать в качестве ссылки и без двоеточия - тогда это будет ссылка на одну ячейку. Если он будет указан в аргументе, тип которого - ссылка. Пример в таблице.
Таблица с примерами
Есть несколько волшебных функций, которые будут возвращать ссылку на ячейку, если разделить их двоеточием.
То есть мы можем задать начало и конец диапазона функциями/формулами.
Например, мы можем находить значение с помощью сочетания INDEX / ИНДЕКС и MATCH / ПОИСКПОЗ. Если после поставить двоеточие, то вместо значения будет возвращаться ссылка на ячейку.
В следующем варианте ищем два значения - превращаем каждое из значения в ссылку за счет двоеточия, получаем на выходе диапазон и его суммируем
=SUM(INDEX(диапазон суммирования;MATCH(что ищем-1;диапазон поиска;0)):INDEX(диапазон суммирования;MATCH(что ищем-2;диапазон поиска;0)))
Магия работает в Excel и Google Таблицах со следующими функциями:
CHOOSE / ВЫБОР
IF / ЕСЛИ
IFS / ЕСЛИМН
INDEX / ИНДЕКС
INDIRECT / ДВССЫЛ
OFFSET / СМЕЩ
SWITCH / ПЕРЕКЛЮЧ
VLOOKUP, HLOOKUP, LOOKUP / ВПР, ГПР, ПРОСМОТР
XLOOKUP / ПРОСМОТРX (удовольствие, доступное в Microsoft 365 / Excel 2021)
INDEX будет работать в качестве ссылки и без двоеточия - тогда это будет ссылка на одну ячейку. Если он будет указан в аргументе, тип которого - ссылка. Пример в таблице.
Таблица с примерами
Google Docs
Диапазоны через функции
Вычисляем номер недели в рамках месяца
Функция НОМНЕДЕЛИ / WEEKNUM возвращает номер недели в рамках года (напоминаем, что у нее, как и у ДЕНЬНЕД / WEEKDAY есть второй аргумент "Тип", и если его не указать, первым днем недели будет воскресенье; для привычной нам недели с понедельника нужно указать тип = 2)
Ну а для номера недели в рамках ее месяца вычтем номер недели, соответствующий дате ,номер недели для первого числа месяца:
Начало месяца для заданной даты можно получить как:
или
Все вместе получится:
(добавляем единицу, чтобы для первой недели месяца получался не 0, а 1)
Функция НОМНЕДЕЛИ / WEEKNUM возвращает номер недели в рамках года (напоминаем, что у нее, как и у ДЕНЬНЕД / WEEKDAY есть второй аргумент "Тип", и если его не указать, первым днем недели будет воскресенье; для привычной нам недели с понедельника нужно указать тип = 2)
Ну а для номера недели в рамках ее месяца вычтем номер недели, соответствующий дате ,номер недели для первого числа месяца:
=Номер недели для заданной даты - номер недели для начала месяца + 1
Начало месяца для заданной даты можно получить как:
=DATE(YEAR(дата); MONTH(дата); 1)
или
=EOMONTH (дата; -1) + 1
Все вместе получится:
=WEEKNUM(дата; 2) - WEEKNUM(DATE(YEAR(дата); MONTH(дата); 1); 2) + 1
(добавляем единицу, чтобы для первой недели месяца получался не 0, а 1)
Проверьте, не появились ли у вас таблицы в Таблицах!
Формат — Преобразовать в таблицу
Format — Convert to table
Alt+O + E
И после этого можно задавать тип данных для каждого столбца (если это будет список, то проверка данных со списком сформируется сразу на основе имеющихся значений), группировать на основе любого столбца (по продуктам/клиентам/регионам/чему угодно, что у вас есть), и, конечно, ссылаться на столбцы таблицы вместо диапазонов.
Ссылки в формулах на таблицы выглядят так (название таблицы, которое используется в формулах, можно поменять в левом верхнем углу таблицы; в примере используем название "Сделки"):
Прелесть этих ссылок в том, что при добавлении/удалении строк в таблице они будут актуальны, это будут все строки в таблице/столбце на данный момент.
P.S. При скачивании таблицы на локальный диск в формате .xlsx таблицы откроются в Excel (там такие есть уже много лет)
Формат — Преобразовать в таблицу
Format — Convert to table
Alt+O + E
И после этого можно задавать тип данных для каждого столбца (если это будет список, то проверка данных со списком сформируется сразу на основе имеющихся значений), группировать на основе любого столбца (по продуктам/клиентам/регионам/чему угодно, что у вас есть), и, конечно, ссылаться на столбцы таблицы вместо диапазонов.
Ссылки в формулах на таблицы выглядят так (название таблицы, которое используется в формулах, можно поменять в левом верхнем углу таблицы; в примере используем название "Сделки"):
Сделки
— все данные без заголовковСделки[#All]
— все данные с заголовкамиСделки[Название_столбца]
— все данные в определенном столбце, без заголовков.Прелесть этих ссылок в том, что при добавлении/удалении строк в таблице они будут актуальны, это будут все строки в таблице/столбце на данный момент.
P.S. При скачивании таблицы на локальный диск в формате .xlsx таблицы откроются в Excel (там такие есть уже много лет)
Проверяем, был ли у сотрудника хотя бы один 14-дневный отпуск
Интересная задача от участницы практикума "Магия формул", мы решили вынести решение на всех вас :)
Итак, в таблице с сотрудниками единицами отмечены дни отпуска. Надо понять, была ли у сотрудника приятная цепочка в 14 или более таких дней.
Алгоритм такой:
1. Убираем заголовки с месяцами (чтобы остались только дни; нам не нужно считать итог месяца отдельным днем, его надо пропустить) через функцию FILTER. Можно исключать конкретное слово "<>итого" или оставлять только числа
2. Далее в полученном массиве идущих подряд дней с помощью SCAN считаем нарастающий итог — число идущих подряд единиц. Если есть единица, прибавляем к накопленному итогу ее, иначе обнуляем счетчик)
3. В результате получаем массив с накопленными днями отпусков — с помощью COUNTIF проверяем, есть ли там хоть одно число от 14 включительно.
4. Напоминаем вам, что логические значения TRUE и FALSE, если они выдаются формулами, можно показывать как флажки.
Вариант для одной строки (на скриншоте в строках с 9-й видно, что возвращает функция SCAN, то есть все, что внутри COUNTIF / СЧЁТЕСЛИ) — массив накопленных значений, в котором мы потом ищем числа от 14.
Вариант от Игоря Дроздова (спасибо!) — одной формулой все сотрудники:
Ссылка на таблицу с вариантами формул
Не забывайте отдыхать, друзья! И предлагайте свои варианты решения задачи🤠
Интересная задача от участницы практикума "Магия формул", мы решили вынести решение на всех вас :)
Итак, в таблице с сотрудниками единицами отмечены дни отпуска. Надо понять, была ли у сотрудника приятная цепочка в 14 или более таких дней.
Алгоритм такой:
1. Убираем заголовки с месяцами (чтобы остались только дни; нам не нужно считать итог месяца отдельным днем, его надо пропустить) через функцию FILTER. Можно исключать конкретное слово "<>итого" или оставлять только числа
ISNUMBER(...)
)2. Далее в полученном массиве идущих подряд дней с помощью SCAN считаем нарастающий итог — число идущих подряд единиц. Если есть единица, прибавляем к накопленному итогу ее, иначе обнуляем счетчик)
3. В результате получаем массив с накопленными днями отпусков — с помощью COUNTIF проверяем, есть ли там хоть одно число от 14 включительно.
4. Напоминаем вам, что логические значения TRUE и FALSE, если они выдаются формулами, можно показывать как флажки.
Вариант для одной строки (на скриншоте в строках с 9-й видно, что возвращает функция SCAN, то есть все, что внутри COUNTIF / СЧЁТЕСЛИ) — массив накопленных значений, в котором мы потом ищем числа от 14.
=COUNTIF(SCAN(0;FILTER(строка с днями сотрудника;строка заголовков<>"итого"); LAMBDA(acc;value;IF(value;acc+value;0)));">=14")<>0
Вариант от Игоря Дроздова (спасибо!) — одной формулой все сотрудники:
=BYROW(SCAN(;IFNA(HSTACK(;FILTER(D3:NQ7;ISNUMBER(D2:NQ2))));LAMBDA(acc;z;IF(z="";;acc)+z));LAMBDA(zz;IF(MAX(zz)>13;TRUE;FALSE)))
Ссылка на таблицу с вариантами формул
Не забывайте отдыхать, друзья! И предлагайте свои варианты решения задачи🤠
Друзья, привет
Достаём и показываем вам простой скриптовый кейс, который мы сделали для наших заказчиков на днях.
Задача стояла следующая – у нас список таблиц (одинаковых таблиц) и нам нужно по нему пройтись и исходя из справочника в коде в определенные диапазоны вставить определенные формулы.
Вот вам Таблица со скриптом, можете сделать копию и посмотреть, как все устроено. Открываете редактор скриптов и видите там справочник (он называется "O"), в нем ссылки на диапазоны и формулы, которые в эти диапазоны будут вставлены при запуске скрипта. Конечно, именно эти формулы вам не нужны, да и вряд ли у вас есть листы с такими названиями, но когда у вас будет похожая задача - то вы сможете адаптировать код (просто переделав справочник) под себя.
Таблицы, с которыми будет работать код - на листе "список", скрипт запускаете по клику на зеленую плашку, скрипт продолжит с первой таблицы, по которой не будет заполнена дата и время обработки в столбце B.
Достаём и показываем вам простой скриптовый кейс, который мы сделали для наших заказчиков на днях.
Задача стояла следующая – у нас список таблиц (одинаковых таблиц) и нам нужно по нему пройтись и исходя из справочника в коде в определенные диапазоны вставить определенные формулы.
Вот вам Таблица со скриптом, можете сделать копию и посмотреть, как все устроено. Открываете редактор скриптов и видите там справочник (он называется "O"), в нем ссылки на диапазоны и формулы, которые в эти диапазоны будут вставлены при запуске скрипта. Конечно, именно эти формулы вам не нужны, да и вряд ли у вас есть листы с такими названиями, но когда у вас будет похожая задача - то вы сможете адаптировать код (просто переделав справочник) под себя.
Таблицы, с которыми будет работать код - на листе "список", скрипт запускаете по клику на зеленую плашку, скрипт продолжит с первой таблицы, по которой не будет заполнена дата и время обработки в столбце B.
Многоуровневая нумерация списка
Еще одна задача от участников практикума по магии формул: сделать нумерацию с тремя уровнями одной формулой.
Можно так:
1. Отправляем все столбцы с уровнями в MAP
2. Для первого столбца получаем массив без повторов с помощью UNIQUE и функцией MATCH / ПОИСКПОЗ ищем позицию каждого значения в этом массиве (то есть первый элемент («Детская одежда») будет первым для всех его вхождений (первые пять строк таблицы)
3. Для последующих уровней сначала фильтруем (FILTER) значения, оставляя только соответствующие текущему значению более высокого уровня (для женской одежды оставляем только две категории второго уровня — «для высоких» и «для невысоких» и в рамках этого массива вычисляем порядковый номер каждого значения в столбце с Категорией 2.
4. Добавляем точки и склеиваем все вместе через &.
Как всегда, будем рады вашим вариантам решения в комментариях!
Еще одна задача от участников практикума по магии формул: сделать нумерацию с тремя уровнями одной формулой.
Можно так:
1. Отправляем все столбцы с уровнями в MAP
2. Для первого столбца получаем массив без повторов с помощью UNIQUE и функцией MATCH / ПОИСКПОЗ ищем позицию каждого значения в этом массиве (то есть первый элемент («Детская одежда») будет первым для всех его вхождений (первые пять строк таблицы)
3. Для последующих уровней сначала фильтруем (FILTER) значения, оставляя только соответствующие текущему значению более высокого уровня (для женской одежды оставляем только две категории второго уровня — «для высоких» и «для невысоких» и в рамках этого массива вычисляем порядковый номер каждого значения в столбце с Категорией 2.
4. Добавляем точки и склеиваем все вместе через &.
Как всегда, будем рады вашим вариантам решения в комментариях!
Здравствуйте, уважаемые любители формул в Google Таблицах
Недавно мне написала подписчица нашего канала и задала два вопроса, отправив Таблицу с примером. Отвечу на оба вопроса и покажу вам, что получилось.
Таблица с вопросами, с ответами
Напишем сразу формулу массива, ибо так пожелала наша подписчица:
Что происходит? C помощью REGEXEXTRACT с регулярным выражением COMPANY:([^ ]+) достаём из строки строки всё, что после COMPANY: и до первого пробела. Поверх добавляем IFNA, чтобы скрыть ошибку, если ничего не достанется. И на верхнем уровне у нас ARRAYFORMULA, которая заставляет всё это заработать в массиве. Некоторые эстеты из нашего чата (Михаил, Игорь, привет) воспользовались бы вместо ARRAYFORMULA INDEX-ом, винить мы их в этом не будем 🙂
Ну тут все попроще, с помощью REGEXMATCH с регулярным выражением (?i)wire проверяем ячейку на наличие слова wire, а с помощью IF / ЕСЛИ с ARRAYFORMULA возвращаем либо сумму из C:C, если проверка проверила и нашла то, что слово входит в строку, либо пустоту, если слово в строку не входит (REGEXMATCH вернул FALSE).
* (?i) в регулярке обозначает написание в любом регистре
Материалы:
Компактная памятка про регулярки от Vitalich
"Народная" база с примерами регулярных выражений (внутри многое плохо, народная же, но некоторое понимание получите)
Недавно мне написала подписчица нашего канала и задала два вопроса, отправив Таблицу с примером. Отвечу на оба вопроса и покажу вам, что получилось.
Таблица с вопросами, с ответами
Вопрос 1.
У нас есть длинная строка с назовём это "наименованием платежа", напишем формулу, которая вытащит из строки название компании. Название компании у нас идёт после COMPANY:
Напишем сразу формулу массива, ибо так пожелала наша подписчица:
=ARRAYFORMULA(IFNA( REGEXEXTRACT(B3:B18;""COMPANY:([^ ]+)"")))
Что происходит? C помощью REGEXEXTRACT с регулярным выражением COMPANY:([^ ]+) достаём из строки строки всё, что после COMPANY: и до первого пробела. Поверх добавляем IFNA, чтобы скрыть ошибку, если ничего не достанется. И на верхнем уровне у нас ARRAYFORMULA, которая заставляет всё это заработать в массиве. Некоторые эстеты из нашего чата (Михаил, Игорь, привет) воспользовались бы вместо ARRAYFORMULA INDEX-ом, винить мы их в этом не будем 🙂
Вопрос 2.
Выведем сумму из C:C, если в B:B у нас встречается слово wire, сделаем это также в формуле массива
=ARRAYFORMULA( IF(REGEXMATCH(B3:B19;""(?i)wire"");C3:C19;))
Ну тут все попроще, с помощью REGEXMATCH с регулярным выражением (?i)wire проверяем ячейку на наличие слова wire, а с помощью IF / ЕСЛИ с ARRAYFORMULA возвращаем либо сумму из C:C, если проверка проверила и нашла то, что слово входит в строку, либо пустоту, если слово в строку не входит (REGEXMATCH вернул FALSE).
* (?i) в регулярке обозначает написание в любом регистре
Материалы:
Компактная памятка про регулярки от Vitalich
"Народная" база с примерами регулярных выражений (внутри многое плохо, народная же, но некоторое понимание получите)
Функция SCAN: нарастающий итог — простой, по каждому году/месяцу или с условием
SCAN — одна из вспомогательных функций LAMBDA, которая позволяет пробегаться по массиву, обращаясь к каждому элементу и накопленному итогу. И творить всякую магию. Доступно это удовольствие в Google Таблицах и в Excel 365 / Excel Online.
В этой статье разбираем ее синтаксис и разные варианты расчета нарастающего итога:
— простой нарастающий итог — для демонстрации работы функции
— нарастающий итог в рамках каждого месяца(периода). То есть одной формулой для всей таблицы получаем нарастающий итог в рамках месяца (или года/недели/другого периода), а с началом периода он обнуляется и начинается по новой.
— нарастающий итог по условию. То есть считаем только определенные строки, а не все (например, выручку только в те дни, когда работал определенный администратор). Строки, в которых условие не выполняется, в нарастающий итог не попадают.
Скриншоты в статье из Excel, но работает все аналогично.
Вот Google Таблица с примерами (создать копию)
SCAN — одна из вспомогательных функций LAMBDA, которая позволяет пробегаться по массиву, обращаясь к каждому элементу и накопленному итогу. И творить всякую магию. Доступно это удовольствие в Google Таблицах и в Excel 365 / Excel Online.
В этой статье разбираем ее синтаксис и разные варианты расчета нарастающего итога:
— простой нарастающий итог — для демонстрации работы функции
— нарастающий итог в рамках каждого месяца(периода). То есть одной формулой для всей таблицы получаем нарастающий итог в рамках месяца (или года/недели/другого периода), а с началом периода он обнуляется и начинается по новой.
— нарастающий итог по условию. То есть считаем только определенные строки, а не все (например, выручку только в те дни, когда работал определенный администратор). Строки, в которых условие не выполняется, в нарастающий итог не попадают.
Скриншоты в статье из Excel, но работает все аналогично.
Вот Google Таблица с примерами (создать копию)
Teletype
Функция SCAN: нарастающий итог — простой, по каждому году/месяцу или с условием
SCAN — одна из вспомогательных функций LAMBDA, которая позволяет пробегаться по массиву, обращаясь к каждому элементу. И творить всякую...
Решили чуть перевести справку по функции SORTN на человеческий язык для вас
Эта функция похожа на SORT, но в ней можно выводить N первых значений, а не все (N задается во втором аргументе). И есть также третий аргумент — режим показа совпадений — показываем, как будет вести себя функция для каждого из вариантов.
Таблица с примерами
В Excel с динамическими массивами есть немного другая функция СОРТПО / SORTBY. Тоже задаем столбец или столбцы для сортировки отдельно как диапазоны, а не номерами, как в функции SORT. Но аргументов N (этот аргумент может заменить функция ВЗЯТЬ / TAKE) и режима показа совпадений нет.
Эта функция похожа на SORT, но в ней можно выводить N первых значений, а не все (N задается во втором аргументе). И есть также третий аргумент — режим показа совпадений — показываем, как будет вести себя функция для каждого из вариантов.
Таблица с примерами
В Excel с динамическими массивами есть немного другая функция СОРТПО / SORTBY. Тоже задаем столбец или столбцы для сортировки отдельно как диапазоны, а не номерами, как в функции SORT. Но аргументов N (этот аргумент может заменить функция ВЗЯТЬ / TAKE) и режима показа совпадений нет.