VBA Автозаполнение видимых ячеек (диапазон фильтрации) с xlFillSeries - PullRequest
2 голосов
/ 27 января 2012

Я хочу заполнить целую серию 2..N в отфильтрованном / видимом диапазоне.

Этот код заполняет серию, но игнорирует отфильтрованный диапазон:

COL_SID_CURRENT = 3
COL_SID_CURRENT_STR = "c"
ROW_LAST = ActiveSheet.UsedRange.Rows.Count

' Start the series with value 2 in cell "c2"
Cells(2, COL_SID_CURRENT).FormulaR1C1 = "2"

aRangeStr = "" & COL_SID_CURRENT_STR & "2"      ' -> "c2"
Range(aRangeStr).Select

aRangeStr = aRangeStr & ":" & COL_SID_CURRENT_STR & ROW_LAST      ' -> "c2:c24"
Selection.AutoFill Destination:=Range(aRangeStr),Type:=xlFillSeries 

Я пытался добавить xlCellTypeVisible в код, но ни одна из моих комбинаций не сработала:

Range(aRangeStr).SpecialCells(xlCellTypeVisible).Select
Selection.AutoFill Destination:=Range(aRangeStr).SpecialCells(xlCellTypeVisible), _
   Type:=xlFillSeries 

Есть ли подсказка, как заполнять серию только по отфильтрованным / видимым ячейкам?

1 Ответ

1 голос
/ 28 января 2012

Автозаполнение не работает на фильтруемом диапазоне, но есть альтернатива. :)

ПРОВЕРЕНО И ИСПЫТАНО

Вместо этого вы можете использовать эту формулу (я предполагаю, что вы фильтруете на основе того, что хранится в столбце A (см. Пример изображения)

Я добавляю + 1, когда вы начинаете серию со значением 2 в ячейке "c2"

=IF(A2="FILTER_TEXT",COUNTIF($A$2:A2,"FILTER_TEXT")+1,"")

enter image description here

И чтобы адаптировать его к вашему примеру, используйте этот код.

Sub Sample()
    COL_SID_CURRENT = 3
    COL_SID_CURRENT_STR = "c"

    ROW_LAST = ActiveSheet.UsedRange.Rows.Count

    ' Start the series with value 2 in cell "c2"
    Cells(2, COL_SID_CURRENT).Formula = "=IF(A2=""FILTER_TEXT"",COUNTIF($A$2:A2,""FILTER_TEXT"")+1,"""")"

    aRangeStr = "" & COL_SID_CURRENT_STR & "2"      ' -> "c2"

    aRangeStr = aRangeStr & ":" & COL_SID_CURRENT_STR & ROW_LAST      ' -> "c2:c24"
    Range(aRangeStr).Formula = "=IF(A2=""FILTER_TEXT"",COUNTIF($A$2:A2,""FILTER_TEXT"")+1,"""")"
End Sub

Пожалуйста, измените "FILTER_TEXT" на соответствующий текст. Также вам может понадобиться изменить диапазон референций. Как я уже говорил, я предполагаю, что фильтр основан на значениях в столбце А.

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