2013-05-14 2 views
0

У меня есть столбец значений, и я хочу, чтобы выбрать ячейки, которые больше, чем 0:Выберите ячейки с больше нуля

Example

Я попытался глядя в Интернете, но не смог найти решение. Как я могу это сделать с помощью скрипта VBA, желательно без написания цикла?

Спасибо!

ответ

1

Может быть, как это:

Option Explicit 

Sub Main() 

    Dim ws As Worksheet, i&, arr() As Long, rng As Range 
    Set ws = ThisWorkbook.Sheets("Sheet1") 

    ReDim arr(0) 
    Call nonZeroSelection(ActiveSheet, i, arr, rng) 

End Sub 

Sub nonZeroSelection(ByRef ws As Worksheet, ByRef i&, ByRef arr() As Long, rng As Range) 
    Dim lr&, ix$ 
    lr = ws.Range("A" & Rows.Count).End(xlUp).Row 
    For i = 1 To lr 
     Set rng = ws.Range("A" & i) 
      If rng.Value = "0" Then 
       ReDim Preserve arr(UBound(arr) + 1) 
       arr(UBound(arr) - 1) = i 
      End If 
     Set rng = Nothing 
    Next i 
    ReDim Preserve arr(UBound(arr) - 1) 
    For i = LBound(arr) To UBound(arr) 
     ix = ix & arr(i) & ":" & arr(i) & "," 
    Next i 
    ix = Left(ix, Len(ix) - 1) 
    ws.Range(ix).Select 
End Sub 
2

Используйте Filter. Добавьте дополнительную строку выше A1, создайте фильтр и фильтр 0. Нет необходимости в VBA :)

Вы также можете создать custom filter.

+0

Спасибо за быстрый ответ. Я хочу использовать сценарий VBA для этого, потому что это часть автоматизированного процесса. Диапазон будет передан другой функции. – mchangun

+0

О, хорошо, что с этим делать во время записи макроса. Должен дать вам хорошее начало для работы. – CustomX

+1

эта ссылка от Ozgrid могла бы помочь: http://www.ozgrid.com/VBA/autofilter-vba-criteria.htm – CustomX

1

или другой столбец (столбец B здесь, но может быть любой столбец) и SpecialCells функция

Sub selectCells() 

Dim sFormula As String 
Dim lLastRow As Long 

lLastRow = Rows(ActiveSheet.Rows.Count).End(xlUp).Row 

sFormula = "=IF(A:A>0,NA(),"""")" 

With Range("B1:B" & lLastRow) 
    .Formula = sFormula 
    .SpecialCells(xlCellTypeFormulas, xlErrors).Offset(0, -1).Select 
    .clear 
End With 

End Sub 

так это выполняет то, что вы хотите без петли, но аналогично Фильтр

Смежные вопросы