Работа с диапазоном и циклом
Народ подскажите как мне выделить определенный диапазон ячеек в столбце (причем первая и последняя ячейка диапазона заранее не известны, а выделяются если в них есть номер ) и проделать в нем цикл, и при выполнении любого из условий цикла переходить на другой диапазон.
Нужны подробности. Лучше всего, если приложите пример рабочей книги с фрагментом реальных (или аналогичных им) данных.
Пока могу посоветовать использовать для определения границ диапазона пару методов [COLOR=blue]Find[/COLOR] и [COLOR=blue]FindNext[/COLOR] (хороший пример есть в справке). В зависимости от конкретных условий могут быть использованы и другие варианты, например метод [COLOR=blue]SpecialCells[/COLOR].
Относительно цикла, то здесь тоже непонятно, что это за любое из условий цикла. И откуда возмётся другой диапазон?
Номер атрибуты
1 a
b
c
c
d
2 a
b
c
d
e
I
3 g
s
a
b
c
r
4 a
b
c
[COLOR=green]green[/COLOR]
Может эта картинка будет лучше ???
Попробуйте что-нибудь такое:
Dim curRange As Object, curCell As Range
Dim curArea As Long
curArea = 1
For Each curRange In Columns(2).SpecialCells(xlCellTypeConstants, xlTextValues).Areas
For Each curCell In Columns(2).SpecialCells(xlCellTypeConstants, xlTextValues).Areas.Item(curArea).Cells
If curCell.Value = "a" Or curCell.Value = "b" Then
'Cells(curCell.Row, curCell.Column + 1).Value = curCell.Value
curCell.Offset(0, 1).Value = curCell.Value
End If
Next curCell
curArea = curArea + 1
Next curRange
End Sub
Будет работать, если значение атрибутов - это текстовое значение (с точки зрения Excel).
Примечание: автор подобного приёма - pashulka, за что я ему очень благодарен.
немного не то, но все равно БОЛЬШОЕ спасибо
Что именно не так?
Что именно не так?
а можно сделать так что бы программа определяла диапазон по столбцу "Номер" и выводила сообщение сколько в нем строк (Например: между 1 и 2 - 5 строк ), а ведь колличество строк не всегда равно 5, бывает меньше или больше.
а можно сделать так что бы программа определяла диапазон по столбцу "Номер" и выводила сообщение сколько в нем строк (Например: между 1 и 2 - 5 строк ), а ведь колличество строк не всегда равно 5, бывает меньше или больше.
Вот пример:
Dim numCells As Long, curCell As Long
Dim myRange As Object
On Error Resume Next
numCells = Columns(1).SpecialCells(xlCellTypeConstants, xlNumbers).Areas.Count
If numCells > 0 Then
Set myRange = Columns(1).SpecialCells(xlCellTypeConstants, xlNumbers).Areas
If numCells > 1 Then
For curCell = 1 To numCells - 1
nStr = myRange.Item(curCell + 1).Row - myRange.Item(curCell).Row
MsgBox "Между " & curCell & " и " & curCell + 1 & " - " & nStr & " строк" & _
vbCr & "(включая пустую строку-разделитель)."
Next curCell
Else
MsgBox "Найдена только одна ячейка."
End If
Else
MsgBox "Ничего не найдено."
End If
End Sub
Вставил код, все работает, но только при достижении последнего диапазона начинается повтор. Я так понял это из-за того, что у меня уже есть процедура и я просто вставил в нее этот код. Как мне изменить код, что бы при определении последнего диапазона программа останавливалась ?
Надо увидеть Ваш код.