Локаленезависимость параметров формул / Получение имени лист

Программирование на Visual Basic for Applications
Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16415
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Локаленезависимость параметров формул / Получение имени лист

Сообщение Хакер » 05.12.2021 (Вс) 11:25

В русскоязычной сборке Excel формулы пишутся на русском языке, например =ЯЧЕЙКА(...) или =СУММА(...). При этом, если сохранённая Excel-книга попадёт на компьютер с англоязычным Excel, книга отобразится корректно, формулу будут правльно работать, а при попытке посмотреть мы увидим уже =CELL(...) и =SUM(...) соответственно.

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

Вопрос состоит в том: происходит ли то же самое с некоторыми параметрами формул? Например, у функции «ЯЧЕЙКА» первый параметр — строковый литерал, который должен принимать одно из определённых значений: "адрес","цвет", "тип" и т.п. Отобразится ли в англоязычном Excel-е то, что в русскоязычном было =ЯЧЕЙКА("тип", ...), как =CELL("type", ...), или же это будет=CELL("тип", ...) и всё поломается? Может ли кто-то проверить, у кого есть доступ рус. и англ. версиям Excel?

Если второе, то как, не прибигая к написанию макросов, в ячейку подставить имя листа, на котором расположена ячейка, так, чтобы при переименовании листа менялось и содержимое ячейки?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 722
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Локаленезависимость параметров формул / Получение имени

Сообщение The trick » 05.12.2021 (Вс) 14:04

firehacker_excel.png
firehacker_excel.png (26.6 Кб) Просмотров: 457

Можно использовать type вместо тип. У меня работают оба.

Код: Выделить всё
=ПСТР(ЯЧЕЙКА("filename";A1);НАЙТИ("]";ЯЧЕЙКА("filename";A1))+1;255)
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16415
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Локаленезависимость параметров формул / Получение имени

Сообщение Хакер » 05.12.2021 (Вс) 14:26

Так, но это может быть особенностью XLSX.

Попробуй открыть вот этот XLS и посмотреть, как будет интерпретироваться формула.

Также, если можешь, сохрани из английского нового офиса свой демо-файлик в формат XLS и скинь сюда, я хочу посмотреть, как его Office 2003 откроет.
Вложения
Experiment.xls
(13.5 Кб) Скачиваний: 29
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 722
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Локаленезависимость параметров формул / Получение имени

Сообщение The trick » 05.12.2021 (Вс) 14:42

Хакер писал(а):Попробуй открыть вот этот XLS и посмотреть, как будет интерпретироваться формула.

firehacker_excel2.png
firehacker_excel2.png (19.21 Кб) Просмотров: 454


Хакер писал(а):Также, если можешь, сохрани из английского нового офиса свой демо-файлик в формат XLS и скинь сюда, я хочу посмотреть, как его Office 2003 откроет.

hacker_test.xls
(23 Кб) Скачиваний: 28
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16415
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Локаленезависимость параметров формул / Получение имени

Сообщение Хакер » 05.12.2021 (Вс) 15:55

Твой файлик у меня отображается корректно.

Остаётся надеяться, что использование латинских «ключей» тип "type" будет работать везде.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Михаил Орлов
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 30.09.2021 (Чт) 20:57

Re: Локаленезависимость параметров формул / Получение имени

Сообщение Михаил Орлов » 13.12.2021 (Пн) 15:54

1. Это файл с функциями рабочего листа CELL(), созданный в MS-Excel 2016 ENG (формулы / результат):
Изображение
Изображение


2. Вот этот же файл, открытый в MS-Excel 2016 RUS:
Изображение
Изображение

Вывод: текстовые ключи "латиницей" не конвертируются, но работают одинаково на версиях офиса с разной локализацией.
Проверено на форматах .XLS / .XLSX / XLSB - ведут себя одинаково.

А есть какие-то причины не использовать VBA?
В объектрой модели Excell есть:
Код: Выделить всё
ThisWorkbook.Name
ThisWorkbook.Path
ThisWorkbook.FullName

Можно обернуть в функцию рабочего листа, если информация нужна именно на листе Excel.
От локали не зависит :).

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16415
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Локаленезависимость параметров формул / Получение имени

Сообщение Хакер » 16.12.2021 (Чт) 10:11

Михаил Орлов писал(а):А есть какие-то причины не использовать VBA?

В основном две:
  • Людей пугают сообщения о наличие VBA-кода в экселевской книге в момент открытия. У кого-то исполнение VBA вообще выключено по соображениям безопасности.
  • При сохранении книги не в XLS, а в XML, что удобно для помещения таблиц под версионный контроль (в том же Git, или в любую другую систему контроля версий) для отслеживания изменений в них (можно делать/видеть/контролировать диффы между ревизиями), VB-код теряется, а формулы/гиперссылки в ячейках — нет.
    xml_save.png
    xml_save.png (13.95 Кб) Просмотров: 414
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14204
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Локаленезависимость параметров формул / Получение имени

Сообщение alibek » 15.01.2022 (Сб) 20:32

Для проверки не обязательно использовать разные инсталляции Excel, можно все проверить непосредственно: ?ActiveCell.Formula и ?ActiveCell.FormulaLocal. Имена функций меняются, литералы нет.
Но лично я бы предпочел использовать англоязычное написание функций. В Excel это можно сделать, загрузив и выбрав англоязычный языковой пакет (интерфейса).
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 2

    TopList  
cron