Google Таблицы
64.3K subscribers
524 photos
183 videos
8 files
903 links
С 2017 года пишем про Google Таблицы и Google Apps Script — с юмором, реальными кейсами и эффективными решениями.

Обучение и заказ услуг: @namokonov 🍒
Реклама: @IT_sAdmin

Оглавление: goo.gl/HdS2qn

РКН: clck.ru/3F3u9M
Download Telegram
ТРИ КОРОТКИХ СКРИПТА ИЗ НАШЕГО ЧАТА

Переход к последнему листу в Таблице. Если положить внутрь onOpen(){} – пользователь при открытии Таблицы будет автоматически перемещаться на последний лист.
Спасибо Даниилу Осипову!

function go_last_sheet() {
const ss = SpreadsheetApp.getActiveSpreadsheet().getSheets();
ss[ss.length - 1].activate();
}


—————————————

Определяем индекс последней строки с данными в выбранном столбце.
Спасибо создателю циклов!

function getLastRow(data, column) {
var max = 0;

for (x in data) {
if (data[x][column - 1]) {
max = x * 1 + 1;
};
}

return max;
}


—————————————

Превращаем текст, написанный болдом в текст вида *текст*. Лайфхак – если в v сослаться на само значение (смотрите скриншот), то функция будет обновляться при его изменении.
Спасибо Роману Игнатову!

function getBold(r,v) {
return SpreadsheetApp.getActive().getActiveSheet().getRange(r).getRichTextValue().getRuns().map(run=>
run.getTextStyle().isBold()?`*${run.getText()}*`:run.getText()
).join(' ');
}


Полное оглавление нашего канала: тыц
Наш чат: @google_spreadsheets_chat
👍15🔥5👎1
Наш чат: @google_spreadsheets_chat

Друзья, у нас есть чат, в которым мы уже 5 лет отвечаем на ваши вопросы.

Работает чат так – отправляете вопрос и добавляете к нему Таблицу с примером. Если у кого-то есть время – вам помогают.

В чате есть правила:
1. Таблица с примером - обязательна. Проверяйте, чтобы в Таблице не было личных данных (телефоны, фамилии).

2. Кратко формулируйте вопрос.

3. Вам ответили в чате - там и продолжайте общаться, не пишите человеку в лс.

4. Донаты приветствуются, но не обязательны. Донаты делятся между модераторами чата (они же – активные помощники). Реквизиты появятся, если отправить в чат "донат".

5. Не хотите разбираться в своем вопросе вообще - пообещайте какую-то сумму за решение.

6. Не просите написать за вас с нуля скрипт или телеграм бота – это требует и навыка и времени, такие вещи нужно заказывать.

Теперь вы готовы, наш чат: @google_spreadsheets_chat
👍20👎2
Логично. Функции SWITCH и CHOOSE

Две полезные функции для проверки условий, с которыми можно избавиться от многоэтажных вложенных ЕСЛИ / IF.

ВЫБОР / CHOOSE
Первый аргумент ВЫБОРа - число, а все следующие - что нужно вернуться для значений этого числа, последовательно для 1, 2, 3 и так далее.
Например, такая функция будет переводить оценку по пятибальной шкале в текстовую:
=ВЫБОР (ячейка с оценкой; "один"; "два"; "три"; "четыре"; "пять")

ПЕРЕКЛЮЧ / SWITCH
В Excel появилась в версии 2016, в Таблицах называется SWITCH даже при русском языке формул.
В ПЕРЕКЛЮЧ первый аргумент - выражение (значение из ячейки), а все последующие - это пары "значение - результат". Последний аргумент - результат для всех остальных случаев.
Например, можно задать разную скидку для трех каналов продаж, а для остальных - нулевую:
=SWITCH(ячейка с каналом продаж;"Сайт";15%;"Магазин";12%;"Ярмарка";10%;0)

Ссылка на таблицу с примерами
👍30🔥3👎2
Кстати, в Excel ВЫБОР до появления динамических массивов и функций для склеивания массивов (VSTACK, HSTACK) использовался для объединения нескольких диапазонов. Например, чтобы поменять порядок столбцов для ВПР.
=ВЫБОР({1;2};первый диапазон; второй диапазон)

То есть в качестве номера задаем сразу массив в фигурных скобках - и ВЫБОР возвращает оба диапазона, указанные в аргументах, вместе.
👍33👎1
Скрипт – добавляем к значению в ячейке новое значение, которое ввел пользователь

Сегодня отвечаем на вопрос Никиты из нашего чата.

Скрипт (его код - ниже) работает супер просто - запускаем, вводим значение в "Inputbox" (форму для ввода) и скрипт добавляет это значение к тому, которое есть в ячейке.

Обратите внимание - в гифке я кликаю просто на картинку и это запускает скрипт. Как это сделать – вставляем любую картинку в Таблицу, кликаем на неё правой кнопкой, кликаем на три точки справа, "назначить скрипт" и вводим название скрипта, который будем запускать при клике на картинку.

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

function pasteValue() {
const value = Browser.inputBox('Введите значение').toString();
const cell = SpreadsheetApp.getActiveRange();
const old_value = cell.getValue().toString();
cell.setValue((old_value.length ? old_value + ';' : '') + value);
};
👍18🔥9👎1
Биты в байты, пинты в литры, столовые ложки в чайные. Функция ПРЕОБР / CONVERT

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

=ПРЕОБР (значение; исходная единица измерения; конечная единица измерения)

Единицы измерения указываются сокращенно и на английском. Можно брать из ячеек, можно указывать в кавычках - все как с любыми другими текстовыми аргументами функций.
Например, "km" (километр), "byte" (байт), "uk_pt" (английская пинта), "ha" (гектар).

Можно использовать префиксы "Т" (тера), "G" (гига), "M" (мега) и подобные. Например, "Tbyte" - терабайт.

Единиц измерения много. Расстояние, время, вес и масса, давление, сила, энергия, мощность, температура, объем, скорость, площадь, биты и байты.
Полный список можно посмотреть в справке - и в Google Таблицах, и в Excel.
👍28👎1
Создаём в QR-код прямо в ячейке

Друзья, в Google Таблице просто из своей текстовой строки создать QR-код.

1) Обращаемся к https://chart.googleapis.com/chart? и собираем ссылку вида:
"https://chart.googleapis.com/chart?cht=qr&chs=100x100&chl=t.me/google_sheets"

Доступно 5 параметров:
cht=qr //тип графика, для QR-кода – всегда qr
chs=70*70 //размер изображения
chl=t.me/google_sheets //данные, которые превращаем в QR-код
choe= //необязательный параметр, как кодировать данные, по умолчанию utf-8
chld= //необязательный параметр, уровень исправления ошибок, по умолчанию 7%

2) Получившуюся оборачиваем в функцию IMAGE(ссылка; 3) и получаем изображение прямо в ячейке.

Документация

Оглавление канала. Внутри очень много постов и материала про Таблицы и скрипты =)
👍52👎1👏1
Как выгрузить в Таблицу курс доллара с 01/04/22 по сегодняшний день?

Используйте формулу: =GOOGLEFINANCE("USDRUB";"price";"01.04.2022";TODAY())

Большая статья про курсы от Михаила Смирнова
👍36🔥8👎1
Имеем: сводную таблицу в Google.

Хотим: добавить к ней срез для фильтрации данных.

1. Добавляем к исходным данным срез (Данные - Добавить срез). Выбираем в боковой панели нужный столбец, по которому будем фильтровать данные. Оставляем флажок "Применить к сводным таблицам".

2. После этого копируем срез (правая кнопка мыши - "Копировать срез"). И вставляем его на лист со сводной таблицей.

3. Срез на листе с данными можно удалить, если там он не нужен.

Ссылка на пример сводной со срезом.

P.S. в Excel срезы (Slicers) в сводных таблицах есть с версии 2010 и добавляются через вкладку "Анализ сводной таблицы" на ленте.
👍23👎1
Диалоговое html-окно, первые шаги

Друзья, в Google Таблицах при помощи HTML и JS можно собрать модальное окно и вывести его.

Хоть простой сайт собирайте (если он вам нужен в Таблице).

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

Весь код, который нужен

1) Часть Google Apps Script (вставляем на лист gs)

function showDialog() {
var html = HtmlService.createTemplateFromFile('Page').evaluate()
.setWidth(200)
//размеры в пикселях
.setHeight(200);
SpreadsheetApp.getUi()
.showModalDialog(html, "@google_sheets");
//второй аргумент - заголовок окна
}

function script1(v) {
SpreadsheetApp.getActive().toast(v);
}


2) Часть html (вставляем на html-лист "page" в редакторе скриптов)

К этому тексту добавим текст из ячейки
<?=SpreadsheetApp
.getActiveSpreadsheet()
.getRange('Лист1!A1')
.getValues();
?>
<br>
<br>
<input type="button" value="первый скрипт" onclick="google.script.run.script1(value)" />
<br>
<br>
<input type="button" value="второй скрипт" onclick="google.script.run.script1(value)" />


Таблица с примером
Документация

Встраиваем видео в Таблицу
👍48🔥6👎3
Google Таблицы
Диалоговое html-окно, первые шаги Друзья, в Google Таблицах при помощи HTML и JS можно собрать модальное окно и вывести его. Хоть простой сайт собирайте (если он вам нужен в Таблице). Начнём с простой задачи, которая позволит разобраться, как использовать…
Диалоговое html-окно 2. Сделаем переключатель (radio button).

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

Выведем в Таблице HTML-окно с Яблоко / Банан / Арбуз и кнопкой "отправить". Нажатие на кнопку отправит выбор во внешний скрипт, а он, в свою очередь, выведет этот выбор в Таблицу. Также нажатие на кнопку закроет окно (за это отвечает google.script.host.close())

Весь код, который нужен

1) Часть Google Apps Script (вставляем на лист gs)
function showDialog() {
var html = HtmlService.createTemplateFromFile('Page2').evaluate()
.setWidth(200) //размеры в пикселях
.setHeight(200);
SpreadsheetApp.getUi()
.showModalDialog(html, "@google_sheets"); //второй аргумент - заголовок окна
}

function script1(v) {
SpreadsheetApp.getActive().toast(v);
}


2) Часть html (вставляем на html-лист "page" в редакторе скриптов)
<p>Выбирайте</p>
<input type="radio" name="gender" value="Яблоко">Яблоко
<br>
<input type="radio" name="gender" value="Банан">Банан
<br>
<input type="radio" name="gender" value="Арбуз">Арбуз
<br>
<button type="button" onclick="displayRadioValue(), google.script.host.close()">Отправить!</button>

<script>
function displayRadioValue() {
var ele = document.getElementsByName('gender');
for(i = 0; i < ele.length; i++) {
if(ele[i].checked) {
break;
}
}
google.script.run.script1(ele[i].value);
}
</script>


Таблица с примером
HTML в GAS
Radio Button

Встраиваем видео в Таблицу

Оглавление нашего канала: тыц
Наш чат: тыц-тыц
🔥10👍5👎3
👍1
Возвращаем ссылку на диапазон с помощью функций

Есть несколько волшебных функций, которые будут возвращать ссылку на ячейку, если разделить их двоеточием.
То есть мы можем задать начало и конец диапазона функциями/формулами.

Например, мы можем находить значение с помощью сочетания 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 будет работать в качестве ссылки и без двоеточия - тогда это будет ссылка на одну ячейку. Если он будет указан в аргументе, тип которого - ссылка. Пример в таблице.

Таблица с примерами
👍18🔥5
Условное форматирование + ВПР: выделяем цветом имена сотрудников из определенного отдела

Дано:
на одном листе список сотрудников и их отделы/департаменты/что-то еще. На другом - календарный/временной план, в котором мы расставляем сотрудников на определенные даты, смены, временные слоты.
Нужно: красить одним цветом всех сотрудников одного отдела, другим цветом - сотрудников другого, и тэ дэ.

Решение: создаем правило условного форматирования, ВПР-им каждого сотрудника (первую ячейку форматируемого диапазона, в нашем примере это B2), находим его отдел и проверяем, в зависимости от значения отдела применяем ту или иную заливку.

Чтобы условное форматирование работало с диапазоном с другого листа, на диапазон ссылаемся через функцию INDIRECT / ДВССЫЛ:
=ВПР(B2;ДВССЫЛ("'Список сотрудников'!A:B");2;0)="Оплот"

Можно ссылаться на именованный диапазон:
=ВПР(B2;ДВССЫЛ("Список");2;0)="Замок"

Таблица с примером
👍56🔥19
Топ-20 упоминаний ссылок нашего канала за полгода (1.11.21 - 30.04.22)

★ Чат: @google_spreadsheets_chat
★ Больше постов в оглавлении нашего канала: goo.gl/HdS2qn

Друзья, @vitalich выгрузил все сообщения из нашего чата и составил топ самых упоминаемых постов нашего канала. Присмотритесь – вполне возможно, найдете полезное для себя.

1. Полный справочник по QUERY t.me/google_sheets/616

2. СОБИРАТОР 4.0 t.me/google_sheets/661

3. Считаем сумму по каждой строке / столбцу в формуле массиве t.me/google_sheets/502

4. Народный Telegram бот❗️ Отправляем сообщения прямо из Таблицы t.me/google_sheets/556

5: DRIVE COLUMBUS, смотрим на свой Google Диск и управляем им прямо из Таблицы t.me/google_sheets/843

6: 🚜 Собиратыр-тыр-тыр 🚜 t.me/google_sheets/626

7: OR / AND в функции FILTER t.me/google_sheets/434

8: 8 советов о том, как ускорить работу вашего документа в Google Таблицах t.me/google_sheets/143

9: Сравнение списков в Таблицах. Способ 3 — сравниваем функциями FILTER / MATCH t.me/google_sheets/515

10: ​​В правиле условного форматирования можно использовать данные другого листа t.me/google_sheets/338

11: Telegram бот, который записывает всё, что видит в Google Таблицу t.me/google_sheets/541

12: ЗАПУСКАТОР – реагируем на изменения формул / Таблицы и запускаем скрипты t.me/google_sheets/719

13: отправлятор таблиц в телеграм чаты. бесплатно и по расписанию t.me/google_sheets/604

14: ОТПРАВЛЯТОР 2.0. Создаём из Таблиц PDF и JPG и рассылаем в Телеграм по заданному расписанию t.me/google_sheets/643

15: Скрипт: создаём в Таблице триггер и скрипт, который не увидят редакторы и владелец t.me/google_sheets/753

16: Проблемы с IMPORTRANGE() t.me/google_sheets/822

17: Отображаем функцией =IMAGE() картинки из Google Диска в ячейке t.me/google_sheets/467

18: Важный скрипт. Связанные выпадающие списки из кэша t.me/google_sheets/408

19: VLOOKUP(ВПР) + SORT t.me/google_sheets/13

20: Как одной функцией ВПР (VLOOKUP) подтянуть данные сразу из трех столбцов t.me/google_sheets/57

P.S. @vitalich, спасибо в очередной раз!
🔥38👍164👏1
Сумма прописью по-английски

Друзья, сегодняшний скрипт позволяет получить сумму прописью по-английски в формате "ONE THOUSAND ONE HUNDRED USD DOLLARS AND 50 CENTS" для 1100,50.

Спасибо за скрипт Людмиле из нашего чата, за основу она взяла вопрос на stackoverflow с примером подходящего скрипта и немного доработала его.

Скрипт будет работать и как пользовательская функция – смотрите скриншот. Просто вставьте код в редактор скриптов, далее введите в таблице =words() и сошлитесь на ячейку с числом.

Таблица с кодом
Код отдельно

PS Также по этой теме есть дополнение для Google Таблиц "numbertext" от Александра Иванова
👍25🔥5👏2