Объявление массива в Excel VBA - PullRequest
0 голосов
/ 28 августа 2010

У меня в поле Excel (созданном кем-то) есть формула, содержащая массив:
=PERCENTILE(Scale1, 0.5).
Мне нужно расширить этот массив для других полей.

Обычно массив - этодиапазон, такой как A1:C52, поэтому расширение его означает изменение формулы, скажем, A1:C152.

Но это «Scale1», даже если я вижу его границу в синемцвет, я не могу изменить его диапазон.

Я пытался найти, где определен этот «Scale1», но безуспешно.Кто-нибудь знает, как это изменить?

(Я не могу просто заменить «Scale1» на A1: C152, потому что «Scale1» используется в нескольких местах ...)

Ответы [ 3 ]

2 голосов
/ 28 августа 2010

Звучит так, как будто somone использовал имена.Вы можете изменить их в интерактивном режиме в пользовательском интерфейсе:

  • Перейдите на вкладку Формулы / лента
  • Нажмите Диспетчер имен
  • Выбрать Масштаб1
  • Изменить диапазон в текстовом поле внизу
  • Нажать кнопку Закрыть

(В Excel 2003 аналогичное диалоговое окно можно открыть с помощью «Имя> Определить ...» (в меню Вставить ).

или через VBA:

ThisWorkbook.Names("Scale1").RefersTo = "Table1!$A$1:$C$152"
0 голосов
/ 29 августа 2010

В Excel 2003 менеджер имен находится по адресу Вставить | Имя | Определить.

0 голосов
/ 28 августа 2010

Если вы используете Excel 2007/2010, вы можете открыть XML-содержимое документа xlsx. Ищите «Scale1» таким образом. Чтобы сделать это в коде, используйте API OpenXML .

Получение значений ячейки Excel: http://msdn.microsoft.com/en-us/library/bb332058%28office.12%29.aspx

Аналогичный вопрос по пересчету формул: OpenXML SDK: сделать Excel пересчитать формулу

Наконец, если вам нужно сделать это в VBA, я нашел эту статью о редактировании элементов, но не пробовал этого:

Для Excel 2003 вы можете установить Compatibility Pack , который позволит Office 2003 открывать, редактировать, сохранять и создавать файлы с использованием форматов Open XML, новых для системы Microsoft Office 2007.

...