Использование цикла While для получения дескриптора строк в определенном столбце - PullRequest
1 голос
/ 14 мая 2019

Я все еще изучаю VBA.У меня есть требование, в котором мне нужно работать со строками, которые не являются пустыми в определенном столбце.Я пробовал For цикл.Но, учитывая 10 тысяч записей в Excel, были проблемы с производительностью.Можете ли вы предложить цикл while, который переходит только к тем строкам, которые имеют значение, а не по всем строкам?

В основном мне нужен дескриптор всех не пустых строк.

1 Ответ

3 голосов
/ 14 мая 2019

SpecialCells ваш друг здесь.

Если вы хотите, чтобы все ячейки с постоянными значениями в столбце А, вы можете использовать Columns(1).SpecialCells(xlCellTypeConstants)

Если вы хотите, чтобы все ячейки, в которых есть формула из столбца A, вы можете использовать Columns(1).SpecialCells(xlCellTypeFormulas)

Если вы хотите, чтобы все ячейки были пустыми из столбца A, вы можете использовать Columns(1).SpecialCells(xlCellTypeBlanks)

Вместе эти 3 дадут вам все клеток в столбце. Это означает, что «Non Blank» будет xlCellTypeConstants в сочетании с xlCellTypeFormulas. Другое название «комбинации» - Union, что позволяет нам соединять Range s вместе

Dim rngNonBlank AS Range
Set rngNonBlank = Union(Columns(1).SpecialCells(xlCellTypeConstants), _
    Columns(1).SpecialCells(xlCellTypeFormulas))
Dim rngLoopThrough AS Range
For Each rngLoopThrough In rngNonBlank
    'You can use rngLoopThrough.EntireRow to get the entire Row
Next rngLoopThrough
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...