2012-01-27 8 views
2

フィルタリングされた/表示可能な範囲に2..N整数系列を入力したいと思います。私はコードにxlCellTypeVisibleを追加しようとしましたが、私の組み合わせのどれも働いた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 

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

どれヒント

このコードは、直列に埋めるが、フィルタ処理の範囲を無視しますフィルタリングされた/目に見える細胞でのみシリーズを埋める方法は?

+0

フィルタリングされた範囲で 'xlFillSeries'を使用することは意味がありません。フィルタリングされた範囲でオートフィルを使用しているときにマクロを記録すると、Excelはシリーズを塗りつぶすことさえできませんが、範囲がフィルタリングされていない場合に表示されます。あなたの目的を説明できますか?フィルタが次回に変更されたときに、フィルシリーズで作成されたデータはそれほど意味をなさないと思いますか? – Skytunnel

答えて

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」を関連テキストに変更してください。また、参照範囲を変更する必要があるかもしれません。私が言及したように、フィルタはCol Aの値に基づいていると仮定しています。

関連する問題