2012-01-27 139 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列中的值。