VBA 使用 xlFillSeries 自动填充可见单元格(过滤范围)

标签 vba filter excel

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

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

最佳答案

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

久经考验

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

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

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

关于VBA 使用 xlFillSeries 自动填充可见单元格(过滤范围),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037349/

相关文章:

Excel-VBA 工作表拆分和保存以逗号分隔的许多空白列结束

c# - Excel VBA 代码转换

excel - 在另一个 Excel 文件中运行另一个宏

excel - 在 Excel 中用分号和空格分割文本字符串

ms-access - MS Access 使用 VBA 从 Access 文件中删除模块

excel - 如何检查任何 Excel 工作簿是否打开?

c# - Excel - 使用 C# 在 .NET 中读取合并的单元格(行)

excel - 将 Excel 筛选结果放入 VBA 数组

javascript - 从数组中过滤偶数

video - ffmpeg 将现有的 filter_complex 与 upscaleto 结合起来,例如720p