AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.12.2008, 13:37   #18  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Эх, разошёлся я, раскочегарился
Цитата:
Сообщение от Gustav Посмотреть сообщение
если бы можно было помимо "Константа - Число" еще при этом и конкретное число указывать - было бы очень удобно для подобных манипуляций.
Как мне только что стало ясно, достаточно всего двух колонок: в одной целые числа - метки секций, а в другой формула-индикатор. После окончания вывода всех данных отчета значения индикатора меняем в небольшом цикле, последовательно перебирающем все возможные уникальные значения из первой колонки.

На каждом шаге фиксируется диапазон (несколько несоседних строк) для конкретной метки. "Фиксируется" - в соответствующую объектную переменную, в Аксапте это будут COMы, здесь в Excel мы можем себе позволить массив типа Range.

С каждым таким составным диапазоном потом можно делать что угодно. В нижеследующем VBA-примере я их расцвечиваю разными цветами:
Код:
Sub ExcelVBAMacro3()

    Dim rngB As Range  'колонка B
    Dim rng(1 To 10) As Range 'массив диапазонов

    Dim z As Integer
    Dim i As Integer
    
    ActiveWorkbook.Names.Add Name:="current", RefersToR1C1:="=0"
    
    'генерирование тестовых данных - в 2 колонки
    For z = 1 To 4
        For i = 1 To 10
            'меточные значения в колонке A
            Cells((z - 1) * 10 + i, 1).Value = i
            
            'формулы с "ошибкой-индикатором" в колонке B
            Cells((z - 1) * 10 + i, 2).FormulaR1C1 = "=RC[-1]/(RC[-1]-current)"
        Next i
    Next z
    
    Set rngB = Range(Range("B1"), Range("B1").End(xlDown))
    
    'определение диапазонов
    For i = 1 To 10
        'фактически присваивание current = i
        ActiveWorkbook.Names.Add Name:="current", RefersToR1C1:="=" & CStr(i)
        
        '"Правка - Перейти - Выделить - Формулы - Ошибки".
        Set rng(i) = rngB.SpecialCells(xlCellTypeFormulas, 16).EntireRow
    Next i
    
    'визуализация диапазонов расцвечиванием
    For i = 1 To 10
        rng(i).Interior.ColorIndex = i
    Next i
    
End Sub
Нажмите на изображение для увеличения
Название: ranges3.jpg
Просмотров: 664
Размер:	78.9 Кб
ID:	4070
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
gl00mie: Read Excel table via ADO Blog bot DAX Blogs 2 09.04.2010 08:32
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вызов Item() для коллекций Excel Владимир Максимов DAX: Программирование 15 17.08.2006 19:47
Как выделить все записи в гриде скопировать и отправить в Excel??? velk DAX: Программирование 36 22.12.2005 14:35

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:44.