2012-01-27 144 views
2

我想将2..N个整数系列填充到过滤/可见范围中。VBA使用xlFillSeries自动填充可见单元格(过滤范围)

此代码填写在系列但忽略了过滤范围:

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 

任何暗示如何仅在过滤/可见单元格上填充该系列?

+0

我不确定在过滤的范围上使用'xlFillSeries'是否有意义。如果您在使用自动填充过滤范围的同时录制宏,则会看到Excel甚至不会尝试填充一个系列,但如果未对范围进行过滤,则会发生这种情况。你能解释你的目的吗?我可以想象,只要你的过滤器将是下一次改变,你的填充系列创建的数据将没有多大意义? – Skytunnel 2012-01-27 21:32:16

回答

1

自动填充不适用于已过滤的范围,但还有其他选择。 :)

久经考验

你可以使用这个公式,而不是(我假设你是什么是存储在柱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”更改为相关文本。您也可能需要更改参考范围。就像我刚才提到的那样,我假设过滤器是基于A列中的值。