Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с диапазоном и циклом

13K
15 ноября 2005 года
YSS
9 / / 09.11.2005
Народ подскажите как мне выделить определенный диапазон ячеек в столбце (причем первая и последняя ячейка диапазона заранее не известны, а выделяются если в них есть номер ) и проделать в нем цикл, и при выполнении любого из условий цикла переходить на другой диапазон.
405
15 ноября 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by YSS
Народ подскажите как мне выделить определенный диапазон ячеек в столбце (причем первая и последняя ячейка диапазона заранее не известны, а выделяются если в них есть номер ) и проделать в нем цикл, и при выполнении любого из условий цикла переходить на другой диапазон.


Нужны подробности. Лучше всего, если приложите пример рабочей книги с фрагментом реальных (или аналогичных им) данных.
Пока могу посоветовать использовать для определения границ диапазона пару методов [COLOR=blue]Find[/COLOR] и [COLOR=blue]FindNext[/COLOR] (хороший пример есть в справке). В зависимости от конкретных условий могут быть использованы и другие варианты, например метод [COLOR=blue]SpecialCells[/COLOR].
Относительно цикла, то здесь тоже непонятно, что это за любое из условий цикла. И откуда возмётся другой диапазон?

13K
16 ноября 2005 года
YSS
9 / / 09.11.2005
В примере есть 2 столбца (номер и атрибуты). Необходимо в диапазоне между номером 1 и номером 2 выбрать несколько атрибутов (например a и b) и занести их в ячейку С1 - С2, а после в диапазоне между 2 и 3 номерами и.т.д.
Номер атрибуты
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]
13K
16 ноября 2005 года
YSS
9 / / 09.11.2005
Может эта картинка будет лучше ???
405
16 ноября 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by YSS
Может эта картинка будет лучше ???


Попробуйте что-нибудь такое:

Код:
Sub Example()
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, за что я ему очень благодарен.
13K
16 ноября 2005 года
YSS
9 / / 09.11.2005
немного не то, но все равно БОЛЬШОЕ спасибо
405
16 ноября 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by YSS
немного не то, но все равно БОЛЬШОЕ спасибо


Что именно не так?

13K
17 ноября 2005 года
YSS
9 / / 09.11.2005
Цитата:
Originally posted by Dmitrii
Что именно не так?



а можно сделать так что бы программа определяла диапазон по столбцу "Номер" и выводила сообщение сколько в нем строк (Например: между 1 и 2 - 5 строк ), а ведь колличество строк не всегда равно 5, бывает меньше или больше.

405
18 ноября 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by YSS
а можно сделать так что бы программа определяла диапазон по столбцу "Номер" и выводила сообщение сколько в нем строк (Например: между 1 и 2 - 5 строк ), а ведь колличество строк не всегда равно 5, бывает меньше или больше.


Вот пример:

Код:
Sub Example2()
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
13K
21 ноября 2005 года
YSS
9 / / 09.11.2005
Вставил код, все работает, но только при достижении последнего диапазона начинается повтор. Я так понял это из-за того, что у меня уже есть процедура и я просто вставил в нее этот код. Как мне изменить код, что бы при определении последнего диапазона программа останавливалась ?
405
21 ноября 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by YSS
Вставил код, все работает, но только при достижении последнего диапазона начинается повтор. Я так понял это из-за того, что у меня уже есть процедура и я просто вставил в нее этот код. Как мне изменить код, что бы при определении последнего диапазона программа останавливалась ?


Надо увидеть Ваш код.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог