知らなかったのは私だけかもしれませんが、FillRight メソッドを使えば
AutoFilter 抽出後の可視セルデータを --> 同状態の可視セルのみへ コピーができるのですね。
FillRight メソッドなのでコピー先は限定されますが。
▼サンプルシートを作るマクロ
▼こんなデータができます。

▼以下、手作業です。 A列 1 でフィルタ抽出し、B列を選択します。

▼右下コーナーにカーソルを合わせて右にフィルドラッグします。

▼右へコピーされます。

▼オートフィルタを解除してみると、ちゃんと可視セルにだけコピーされています。

(確認環境は[win2000/xl2000][winXP/xl2003])
ついでですが、上記動作をマクロ記録してみると
これをそのまま実行しても何も起きません。
Range("B4:C12").Select
と、Select範囲を変えれば機能します。
つまり、手動操作と同じ結果を記録マクロで得るなら B4:C12セルを選択して[ Ctrl ]キー+[ r ]キー同時押し。
...のほうが良さそうです。
もうちょっと使えそうな感じで書いてみると以下。
(2009.02.05追記)
...微妙に勘違いしてるような?
上記の手動操作の例が悪いですね。
最初から
>B4:C12セルを選択して[ Ctrl ]キー+[ r ]キー同時押し。
の例にしておけば良かったです。
同じフィルドラッグ操作でも、 FilterMode によって実行されるメソッドが違うのでした。
単純に、『オートフィルタ抽出状態での[右方向へのコピー]は可視セルだけが対象になる。』という話な...だけ?
#どうも充電が足りなかったようです XD
AutoFilter 抽出後の可視セルデータを --> 同状態の可視セルのみへ コピーができるのですね。
FillRight メソッドなのでコピー先は限定されますが。
▼サンプルシートを作るマクロ
Sub sample() With Sheets.Add .Range("A1:C1").Value = [{"f1","f2","f3"}] With .Range("B2:C10") .Formula = "=int(rand()*10)" .Value = .Value End With .Range("4:4,7:7").ClearContents .Range("A4,A7,A11:A12").Value = 1 .Range("B4,B7,B11").Select SendKeys "~" Application.CommandBars.FindControl(ID:=226).Execute .Range("B12").Value = "end" .Range("A1").Select .Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:=1 .Range("B2:B12").Interior.Color = vbYellow .ShowAllData End With End Sub
▼こんなデータができます。

▼以下、手作業です。 A列 1 でフィルタ抽出し、B列を選択します。

▼右下コーナーにカーソルを合わせて右にフィルドラッグします。

▼右へコピーされます。

▼オートフィルタを解除してみると、ちゃんと可視セルにだけコピーされています。

(確認環境は[win2000/xl2000][winXP/xl2003])
ついでですが、上記動作をマクロ記録してみると
Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/2/4 ユーザー名 : no name ' ' Selection.AutoFilter Field:=1, Criteria1:="1" Range("B4:B12").Select Selection.FillRight End Sub
これをそのまま実行しても何も起きません。
Range("B4:C12").Select
と、Select範囲を変えれば機能します。
つまり、手動操作と同じ結果を記録マクロで得るなら B4:C12セルを選択して[ Ctrl ]キー+[ r ]キー同時押し。
...のほうが良さそうです。
もうちょっと使えそうな感じで書いてみると以下。
Sub test() With ActiveSheet If .AutoFilterMode And .FilterMode Then With .AutoFilter.Range.Columns(2) If WorksheetFunction.Subtotal(3, .Cells) > 1 Then Intersect(.Cells, .Offset(1)).Resize(, 2).FillRight End If End With End If End With End Sub
(2009.02.05追記)
...微妙に勘違いしてるような?
上記の手動操作の例が悪いですね。
最初から
>B4:C12セルを選択して[ Ctrl ]キー+[ r ]キー同時押し。
の例にしておけば良かったです。
同じフィルドラッグ操作でも、 FilterMode によって実行されるメソッドが違うのでした。
単純に、『オートフィルタ抽出状態での[右方向へのコピー]は可視セルだけが対象になる。』という話な...だけ?
#どうも充電が足りなかったようです XD