К чему относится диапазон в функции фильтра VBA - PullRequest
0 голосов
/ 05 ноября 2018

Хотелось бы проверить в ActiveSheet.Range ("$ A $ 1: $ O $ 1583"). Поле автофильтра: = 7, Criteria1: = "=", на что ссылается диапазон $ O $ 1583?

 sub Filter  
       ‘Remove empty cell in column G,K,L’
            Range("A2").Select
            Selection.End(xlDown).Select
            Selection.End(xlUp).Select
            Range("B2").Select
            ActiveSheet.Range("$A$1:$O$1583").AutoFilter Field:=7, Criteria1:="="
            ActiveSheet.Range("$A$1:$O$1583").AutoFilter Field:=11, Criteria1:="="
            ActiveSheet.Range("$A$1:$O$1583").AutoFilter Field:=12, Criteria1:="="
            Rows("10:10").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Delete Shift:=xlUp
        ActiveSheet.ShowAllData
    End sub

1 Ответ

0 голосов
/ 05 ноября 2018

ActiveSheet.Range("$A$1:$O$1583") - это диапазон, который будет фильтроваться. A1 - верхняя левая ячейка, а O1583 - нижняя правая. Эта ячейка находится в столбце O, строка 1583.

Знаки $ могут быть удалены, в VBA они не важны. В Excel $ знак означает, что строка или столбец, следующий за знаком доллара, привязаны или являются абсолютными. При копировании формул Excel они будут копировать ячейки, указанные в этой формуле, относительно позиции, в которую они копируются.

Попробуйте следующие строки, чтобы увидеть выбранный диапазон:

Sub TestMe
    ActiveSheet.Range("$A$1:$O$1583").Select
End Sub

Диапазон важен, потому что он показывает отфильтрованный диапазон. Представьте себе эти данные:

enter image description here

Как только вы запустите этот Range("A1:G10").AutoFilter, вы увидите, что в фильтре находятся только значения от 1 до 6, а MORE там нет. Однако, если вы записываете значения во всех ячейках от конца фильтра до MORE (строки 11, 12, 13, 14), они будут присутствовать, поскольку Excel будет считать, что значения были увеличены.

Также по столбцам вы не можете отфильтровать поле за пределами вашего диапазона. Range("$A$2:$B$1583").AutoFilter Field:=3 не будет работать, так как вы будете искать фильтр по столбцу 3 из диапазона 2 столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...