|
|
#18 |
|
Moderator
|
Эх, разошёлся я, раскочегарился
![]() Цитата:
На каждом шаге фиксируется диапазон (несколько несоседних строк) для конкретной метки. "Фиксируется" - в соответствующую объектную переменную, в Аксапте это будут 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 |
|
|
|
|
|