Показать сообщение отдельно
Старый 20.09.2008, 17:37   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Спасибо. А вот мой рассказ

Я собирался попробовать подсунуть такой диапазон, как если бы в Excel, держа Ctrl, щелкать мышкой по ячейкам через одну:
Код:
 
'код - Excel VBA

SeriesCollection.XValues = Worksheets("свод").Range("E2,G2,I2,K2,M2,O2,Q2,S2,U2")
Но это не сработало. Выяснилось, что диапазон для XValues должен быть непрерывным типа "E2:U2".

Далее я попытался "где-то сбоку" в той же строке, в подряд идущих ячейках AA2:AI2 написать формулы, ссылающиеся на разрозненные ячейки исходного диапазона:

Код:
 
Set cell = Worksheets("свод").Range("AA2")
For i = 22 To 15 Step -1
    cell.FormulaR1C1 = "=RC[-" & i & "]"
    Set cell = cell.Offset(0, 1)
Next i

SeriesCollection.XValues = Worksheets("свод").Range("AA2:AJ2")
И это получилось. В Excel на VBA.

При попытке же переноса в Аксапту происходили какие-то странные вещи с FormulaR1C1. В ячейку AA2 по этому моему алгоритму должна была попасть формула =RC[-22], которая в ячейке преображалась в формулу A1-стиля: =E2. И при прогоне в Excel всё так и происходило.

При попытке же задать формулы из Аксапты в ячейке AA2 вместо ожидаемого =E2 оказалось =IA1, что в R1C1-стиле соответствует =R1C235. Интересно, что 235 - это 257-22 (взгляните на исходную формулу =RC[-22] ). Ну, а 257 - это нечто рядом с 256. Есть ощущение, что значение в квадратных скобках, внешнее напоминающее контейнер или индекс массива, каким-то таинственным образом преображается. В общем, хочу всё это на досуге поисследовать.

НО! Даже если это наконец заработает, всё равно необходим дополнительный код, объем которого будет явно не меньше кода, формирующего строку outputRangeHeader.

Так что оставим в покое вопросы красивости. Ваше решение - простое, экономное и, самое главное, уже работающее.