@andrew115

Какая формула вернет название Листа в ячейку?

Привет всем! Задачка такая:
1. Есть Таблица Гугл, в которой создан "Лист 1"
Нужно что бы название листа автоматически подставлялось в ячейку например "А1"
Т.е. если я меняю название листа, что бы значение в ячейке так же менялось.
  • Вопрос задан
  • 16199 просмотров
Решения вопроса 2
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Здравствуйте.

Можно создать собственную функцию на основе Google Apps Script.
Code.gs
function sheetName() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}

function sheetsName() {
  return SpreadsheetApp.getActiveSpreadsheet().getSheets().map(function(s){return s.getName()});
}

В Таблице необходимо указать формулу для получения имени активного листа
=sheetName(E5:E13)
Для получения списка всех листов
=sheetsName(E5:E13)
где E5:E13 особый, обязательно активный, т.е. зависящий от ввода пользователя, диапазон. Без изменения этого диапазона, толку от функции будет мало.
Внимание, функции времени (TODAY(), NOW()) нельзя передавать как аргументы.

Пример Таблицы со скриптом goo.gl/w97FNi

P.S.: Чтобы исключить гнев и любую неверную интерпретацию, скажу, что этот скрипт стал возможен после публикования вопроса и первых комментариев к этому посту. Пруф https://code.google.com/p/google-apps-script-issue...
Ответ написан
Комментировать
@camfrae
Новейший способ без скриптов:

В нужном листе в ячейку A2 ссылаемся на свой лист:
=List1!A1
или так если есть пробелы:
='List 1'!A1
где List 1 - название листа

В нужную ячейку пишем:
=REGEXEXTRACT(to_text(FORMULATEXT(A2));"='?([^'!]+)'?!")


где "='?([^'!]+)'?!" набор символов, которые будут икслючены. Поэтому пожно использовать только буквы и цифры в названии листов.

в ячейку А1 вставляем
=ТДАТА()
Это нужно что бы актуализировалось название листа. Так же, оно будет актуализироваться при любом изменении в таблице. Но для автоматического изменения делаем следующее:

Фаил-Настройки-Вычисления-Обновление рассчетов каждую минуту.

Затем можно все это упаковать в Именованную функцию.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@adzest
Здравствуйте,

ниже еще одно решение Вашего вопроса, в нем не нужны диапазоны,.
Просто укажите номер листа от 1 до N, где N - последний лист .
Инструкция, очень простая и короткая:
- Скопируйте код ниже (весь со всем скобками, слешами и запятыми):
//функция возврата имени листа по порядковому номеру
function getSheetName(num) {
  
  //переменная 'num' в строке выше - номер вашего листа и для обычного пользователя первый лист num = 1,
  //но с точки зрения программирования он имеет другой номер на 1 меньше (пользователи, не прьтесь почему так - сейчас не важно),
  //то есть то что для пользователя =1 для программы =0, поэтому ниже мы сдвигаем значение cellNumber на -1. 
  var cellNumber = num-1;         
  return SpreadsheetApp.getActiveSpreadsheet().getSheets()[cellNumber].getSheetName();
  
}

- Откройте таблицу, где необходимо использовать функцию;
- Выберите "Инструменты" > "Редактор скриптов.." в меню открывшегося редактора Google Таблиц;
- В новой вкладке откроется Редактор скриптов:
c8f853578f9843709a1485a7c7c6008b.png
- Вставьте в редактор скопированный код:
940762331ddb4a0f88375f6286a72132.png
- В меню редактора выберите "Ресурсы" > "Триггеры текущего проекта" и дайте название Вашему проекту:
424f1d7d80b04352902859bb45b18e58.png
- Затем нажмите "Триггеры не настроены. Нажмите здесь, чтобы добавить триггер." чтобы создать первый триггер:
b60df1dde1834d05982e1966a24932ec.png
- В открывшемся диалоговом окне выберите значения отмеченные на изображении ниже:
2fbf348ae661429b99fe3b73a6c1646e.png
- Редактор потребует авторизации и выполнения действий в Вашем аккаунте, выбираем "Далее", "Далее" ... и авторизируемся
* После этого функция будет работать из таблицы.
Проверяем, выбираем ячейку, вводим значение =getSheetName(1) результат "Лист1"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы