【问题标题】:VBA Auto fill visible cells (filtered range) with xlFillSeriesVBA 使用 xlFillSeries 自动填充可见单元格(过滤范围)
【发布时间】:2012-02-20 16:21:28
【问题描述】:

我想将 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 

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

【问题讨论】:

  • 我不确定在过滤范围上使用 xlFillSeries 是否有意义。如果您在使用自动填充过滤范围时录制宏,您会看到 Excel 甚至不会尝试填充系列,但如果您的范围未过滤,它会尝试填充。你能解释一下你的目的吗?我想,每当您的过滤器下一次更改时,您的填充系列创建的数据就没有多大意义?

标签: vba filter excel


【解决方案1】:

自动填充不适用于过滤范围,但有替代方法。 :)

久经考验

您可以改用此公式(我假设您根据 Col A 中存储的内容进行过滤(参见示例图片)

当您在单元格“c2”中以值 2 开始系列时,我正在添加 + 1

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

为了适应您的示例,请使用此代码。

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”更改为相关文本。此外,您可能需要更改参考范围。就像我提到的,我假设过滤器基于 Col A 中的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多