Эх, разошёлся я, раскочегарился
Цитата:
Сообщение от
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