Что значит неразрешенное название листа в excel
Имя листа в ячейке формулой в Excel
Разберем несколько вариантов добавления имени листа в ячейку в Excel с помощью формул.
Формула имени листа в Excel
Чтобы присвоить ячейке имя листа в Excel можно воспользоваться следующей формулой:
=ПСТР(ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 );ПОИСК(«]»;ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 ))+1;255)
Давайте по шагам разберем принцип действия формулы имени листа.
Шаг 1. Функция ЯЧЕЙКА
Функция ЯЧЕЙКА позволяет получить данные о содержимом ссылки, в том числе и имя файла.
В данном случае формула ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 ) позволяет получить полный путь файла Excel на локальном диске:
Как мы видим название листа идет сразу после названия файла, обрамленного в квадратные скобки.
Шаг 2. Функция ПОИСК
Таким образом для извлечения имени листа необходимо найти символ закрывающейся квадратной скобки (]) с помощью функции ПОИСК, которая возвращает позицию первого вхождения искомого элемента:
Прибавляя к результату 1, мы получаем позицию с которой начинается имя листа.
Шаг 3. Функция ПСТР
После нахождения квадратной скобки нам достаточно извлечь из полного названия файла правую часть, применив функцию ПСТР.
Данная функция возвращает заданное количество знаков, начиная с указанной позиции.
Так как точное количество символов в имени листа неизвестно, то в качестве последнего аргумента функции ПСТР указываем заведомо большее число, чем длина имени листа (подойдет любое число больше 31 — максимальная длина названия листа).
Альтернативная формула
Чтобы вставить название листа в ячейку можно воспользоваться альтернативной формулой:
=ПРАВСИМВ(ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 );ДЛСТР(ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 ))-ПОИСК(«]»;ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 )))
Отличие от предыдущего варианта заключается в использовании функции ПРАВСИМВ, которая возвращает указанное количество знаков с конца текста.
Описание используемых функций
Функция ЯЧЕЙКА:
ЯЧЕЙКА(тип_сведений; [ссылка])
Возвращает сведения о форматировании, адресе или содержимом первой ячейки ссылки.
Функция ПОИСК:
ПОИСК(искомый_текст; просматриваемый_текст; [начальная_позиция])
Возвращает позицию первого вхождения знака или строки текста (при чтении слева направо, прописные и строчные буквы не различаются).
Функция ПСТР:
ПСТР(текст; начальная_позиция; число_знаков)
Возвращает заданное число знаков из строки текста, начиная с указанной позиции.
Как получить имя листа формулой
Задача: записать в отдельной ячейке или внутри формулы имя текущего листа(т.е. того, в котором сама функция).
В принципе это очень легко сделать простейшей функцией пользователя:
Но бывают случаи, когда использование макросов весьма нежелательно. Тогда можно воспользоваться чуть более громоздкой и менее понятной формулой:
=ПСТР(ЯЧЕЙКА(«filename»; A2 );ПОИСК(«]»;ЯЧЕЙКА(«filename»; A2 ))+1;31)
=MID(CELL(«filename»,A2),SEARCH(«]»,CELL(«filename»,A2))+1,31)
Однако эта формула вернет точно такой же результат, как функция пользователя выше и макросы совершенно не нужны.
Если вторым аргументом функции ЯЧЕЙКА ничего не указывать( =ЯЧЕЙКА(«filename») ), то функция вернет полный путь с именем того листа, который активен в данный момент(даже если это лист другой книги).
Правда, у этой формулы есть свои недостатки: обязательно необходимо, чтобы книга была сохранена на диске. Это означает, что формула не сработает для книги, которая была только что создана и не сохранена. Связано это с ограничениями возможностей параметра «filename» функции ЯЧЕЙКА(CELL). Она не может получить путь к файлу, который еще не сохранен.
Функция пользователя(UDF) GetShName (приведенная в самом начале статьи) лишена этого недостатка.
Для чего вообще может быть нужно записывать имя листа в ячейку? Ну, например, если имя листа периодически меняется, а в своих формулах вы используете функции вроде ДВССЫЛ со ссылкой на этот лист. Либо для создания более наглядного оглавления через гиперссылки.
Так же можно получить полный путь к книге и имя книги(без квадратных скобок и имени листа):
=ПОДСТАВИТЬ(ПСТР(ЯЧЕЙКА(«filename»;A1);1;ПОИСК(«]»;ЯЧЕЙКА(«filename»;A1))-1);»[«;»»)
Статья помогла? Поделись ссылкой с друзьями!
Существует ли ограничение на длину имени листа Excel?
когда я пытаюсь установить длинное имя листа с помощью ruby и win32ole со следующим кодом:
Я получаю следующее:
версия 12.0 указывает, что я запускаю Excel 2007, но он жалуется, что имя рабочего листа слишком длинное. Я взглянул на Excel 2007 технические характеристики и ограничения как говорится в это связано ответа, и я не мог найти упоминания о таком пределе. (Попытка переименовать рабочий лист вручную предполагает, что может быть такой предел, однако)
есть ли предел, и это жесткий предел или тот, который можно изменить, изменив конфигурацию Excel?
5 ответов
формат файла позволит до 255-символьных имен листов, но если пользовательский интерфейс Excel не хочет, чтобы вы превышали 31 символ, не пытайтесь выйти за пределы 31. Приложение полно странных недокументированных ограничений и причуд, и подача его файлов, которые находятся в пределах спецификации, но не в пределах диапазона вещей, которые тестировщики бы протестировали, обычно вызывает действительно странное поведение. (Личный любимый пример: использование байт-кода Excel 4.0 для функции if() в файле со Строковой таблицей Excel 97 отключено кнопка панели инструментов для полужирного шрифта в Excel 97.)
переименование листа вручную в Excel, вы попали в предел 31 символов, поэтому я бы предложил, что это жесткий предел.
мое решение состояло в том, чтобы использовать короткий псевдоним (менее 31 символа), а затем написать все имя в ячейке 0.
Я использую следующий код vba, где filename-это строка, содержащая имя файла, которое я хочу, а функция RemoveSpecialCharactersAndTruncate определена ниже:
Я только что протестировал пару путей с помощью Excel 2013 на Windows 7. Я обнаружил, что общий предел пути составляет 213, а длина базового имени-186. По крайней мере, диалоговое окно ошибки для превышения длины базового имени ясно:
и попытка переместить не слишком длинное базовое имя в слишком длинный путь также очень ясна:
ошибка пути обманчива, хотя. Совершенно неконструктивным:
это ленивый Microsoft ограничение. Нет никаких оснований для этих произвольных ограничений длины, но, в конце концов, это реальная ошибка в диалоговом окне ошибки.
Power Query. Ошибки. Разные названия листов
Все уроки курса Работа с ошибками в Power Query на этой странице и в этом плейлисте.
Описание
В этом уроке мы решим проблему, когда в ваших источниках нужные вам данные находятся всегда на листах с разными именами. В процессе решения мы вспомним и повторим следующие формулы (функции):
Подготовка к решению
Скачайте приложенные файлы. Посмотрите файлы-источники (названия начинаются на «2019»). В каждой книге 2 листа. Представьте, что вам присылают каждую неделю файлы с обновленными данными. Все вроде в порядке. Названия столбцов те же, количество столбцов совпадает, но не совпадают названия листов. Названия всегда разные. В одном файле данные находятся на листе «Лист1», а в другом файле на листе «Данные». Как составить универсальный запрос, который бы нормально работал вне зависимости от того, как назвали листы?
Решение проблемы разных имен листов в Power Query
Откройте файл РазныеНазвания_Пустой.xlsx. Здесь уже заготовлено подключение к одной из книг-источников. Вы видите содержание книги — 2 листа.
Как понять, к какому листу подключиться не указывая его имя? В нужно нам листе находятся данные, а первый столбец таблицы называется «created_on». Значит нам нужно всего лишь воспользоваться условной логикой: если на листе в первой строке первого столбца написано «created_on», то это нужный нам лист и его нужно развернуть. Решим задачу в несколько шагов.
1. Получить список значений первой строки. Воспользуемся ссылкой на объект Record. Чтобы получить Record первой строки таблицы создадим новый столбце с формулой [Data]
2. Теперь преобразуем запись в лист. Создадим новый столбец с формулой Record.ToList([Пользовательская])
3. Определим содержит ли столбец «Пользовательская.1» значение «created_on». Создадим новый столбец с формулой List.Contains([Пользовательская.1], «created_on»)
4. Отфильтруем значения FALSE в новом столбце.
5. Развернем таблицу из единственной оставшейся строки.
Теперь попробуйте подключиться к другому файлу-источнику. Подключение работает с обоими файлами не смотря на то, что названия листов везде разные
Почему в Excel появляется диалоговое окно «Конфликт имен»?
Если в Excel вы видите диалоговое окно Конфликт имен, это происходит из-за того, что вы пытаетесь скопировать один или несколько листа в книгу, которая имеет похожие именные диапазоны.
Предположим, что у таблицы, которую вы пытаетесь скопировать, и конечной книги, в которую вы хотите скопировать его, есть именный диапазон с именем InterestRates. При попытке переместить или скопировать листа Excel обнаружит этот конфликт и отобразит следующее сообщение:
Имя InterestRates уже существует. Нажмите кнопку Да, чтобы использовать эту версию имени, или кнопку Нет, чтобы переименовать перемещаемую или копную версию InterestRates.
Примечание: Диалоговое окно Конфликт имен появится для каждого экземпляра конфликтующих диапазонов имен. Если вы используете версию Excel с подпиской, сообщение в диалоговом окте о конфликте содержит третий вариант с пометкой Да для всех. Это означает, что сообщение не будет отображаться для дополнительных диапазонов конфликтующих имен.
Решение
В диалоговом окне выше необходимо сделать следующее:
Нажмите кнопку Да, чтобы продолжить использовать имя конфликтующих диапазонов в конечной книге.
Что происходит при нажатии кнопки Да?
Excel скопирует конфликтующий диапазон имен в 9-ю книгу. Это означает, что в конечной книге будут два похожих именуемого диапазона.
Предупреждение: Если в книге есть формулы, ссылающие на конфликтующие именные диапазоны, копирование этих диапазонов повлияет на эти формулы и приведет к ошибкам в книге. Если вы не знакомы с данными в конечной книге, не нажимайте кнопку Да. Вместо этого щелкните Нет, чтобы переименовать конфликтующий диапазон.
Нажмите кнопку Да для всех, чтобы продолжить использовать все возможные имена конфликтующих диапазонов в конечной книге. Обратите внимание, что этот параметр можно увидеть только в том случае, если вы используете версию Excel по подписке.
Что происходит при нажатии кнопки Да для всех?
Excel скопирует все конфликтующие диапазоны имен в 9-ю книгу. Это означает, что в конечной книге будут два или более похожих именуемого диапазона.
Предупреждение: Если в книге есть формулы, ссылающие на конфликтующие именные диапазоны, копирование этих диапазонов повлияет на эти формулы и приведет к ошибкам в книге. Если вы не знакомы с данными в конечной книге, не нажимайте кнопку Да для всех. Вместо этого щелкните Нет, чтобы переименовать конфликтующие диапазоны по одному.
Чтобы переименовать конфликтующий диапазон имен, нажмите кнопку Нет. Отобразит следующее диалоговое окно:
В разделе Новое имя введите новое имя диапазона. Новое имя не будет принято, если оно
начинается с буквы или подчеркиваия,
— ссылка на ячейку, например A1, A123 или XFD21,
имеет то же имя, что и у другого диапазона в книге, в которую вы копируете копию.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.