green_fr (green_fr) wrote,
green_fr
green_fr

Category:

Excel : relative named ranges

«Шутка» для любителей Excel (смеяться грустно, после слова «L516»).
Знаете, есть там возможность дать какой-то области имя, и потом это имя использовать в формулах? В английском Excel это делается через Insert->Names.
Я только что потерял пол часа, пытаясь сделать то же самое через VBA.

Оказывается, когда я пишу Call ThisWorkbook.Names.Add("LIB_TYPE«, «=param!I1:K516»), написанный мною абсолютный адрес I1:K516 пересчитывается в относительный (относительно той ячейки, на которой стоит в это время курсор, например, если он стоит на A1, то пересчитанный адрес будет L1C9:L516C11), и именованная зона определяется с этим относительным адресом.
Таким образом, если я потом переставлю курсор на B1 и вызову LIB_TYPE, мне вернётся значение матрицы J1:L516! Я не могу представить себе, кому может понадобиться такое поведение именованных зон.

Решением является простановка долларов: Call ThisWorkbook.Names.Add("LIB_TYPE«, «=param!$I$1:$K$516»)

Дабы предупредить возможные комментарии «Переходи на Linux Open Office!», расскажу шутку из Open Office Calc. Предположим, у вас есть файл с двумя закладками: A и B. В закладке B есть формула, указывающая на ячейку X1 закладки A. Скопируем закладку B и поставим её (под именем C) третьей в этом же файле. Вместе со всеми данными закладки скопируется и формула, только теперь она будет указывать на ячейку X1 закладки B!

В данном случае я не то, что не понимаю, кому может пригодиться такое поведение. Я искренне верю, что писавшие Open Office люди просто проморгали этот баг. Надо бы как-нибудь сообщить о нём...
Tags: excel, rabota
Subscribe

  • Функция синуса для очень занятых людей

    Выходит новая версия MatLab, я, как обычно, читаю release notes. Вводятся новые функции: sinpi и cospi. Compute the sine and cosine of multiples…

  • Matlab под Unix

    На работе надумали обзавестись серьёзным production для проекта, написанного на MatLab. Как говорят на anekdot.ru, преамбула. Мы когда-то давно…

  • Нулевое января

    После вопроса про миллиард секунд разговорился с коллегами. Полезли проверять, чему соответствует дата 0 в наших системах. Про Excel я помнил, что…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 26 comments

  • Функция синуса для очень занятых людей

    Выходит новая версия MatLab, я, как обычно, читаю release notes. Вводятся новые функции: sinpi и cospi. Compute the sine and cosine of multiples…

  • Matlab под Unix

    На работе надумали обзавестись серьёзным production для проекта, написанного на MatLab. Как говорят на anekdot.ru, преамбула. Мы когда-то давно…

  • Нулевое января

    После вопроса про миллиард секунд разговорился с коллегами. Полезли проверять, чему соответствует дата 0 в наших системах. Про Excel я помнил, что…