No.3ベストアンサー
- 回答日時:
>ただ、これは手動操作でのみ可能なようです。
>
>マクロ記録するとFillRightメソッドが記録されますが、これを実行しても
>手動でうまくいくものが、マクロでは成功しません。
>#エラーは出ないのですが。(win2000/xl2000、winXP/xl2003)
>#多分仕様でしょう。
すみません。ちょっとウソ書いてました。...反省orz
右にリサイズすれば可能です。
(test1、test2でも状況によっては問題ないですが、もっと簡単でした)
コピー元を選択してマクロを走らせるなら
Selection.Resize(, 2).FillRight
これで。
オートフィルタ抽出状態で実行するなら以下で。
Sub test3()
With ActiveSheet
If .AutoFilterMode And .FilterMode Then
With .AutoFilter.Range.Columns(3) '<-この 3 はコピー元の列。要変更
If WorksheetFunction.Subtotal(3, .Cells) > 1 Then
Intersect(.Cells, .Offset(1)).Resize(, 2).FillRight
End If
End With
End If
End With
End Sub
No.2
- 回答日時:
なるほど。
オートフィルタ抽出状態で、可視セルのみの右コピーができるのですね。使った事なかったです。ありがとうございます。
ただ、これは手動操作でのみ可能なようです。
マクロ記録するとFillRightメソッドが記録されますが、これを実行しても
手動でうまくいくものが、マクロでは成功しません。
#エラーは出ないのですが。(win2000/xl2000、winXP/xl2003)
#多分仕様でしょう。
>エクセル2000でも出来るものがありましたら...
マクロで対応可能ですが、コピーしたいデータ内容によって変わってきます。
『オートフィルタで抽出された後のある列の可視セルのみを、その右列の同じ可視セルにコピーしたい』
という事ですね。
コピー先が値になって構わない、かつコピー先の列の、可視セル以外も値にしてしまって構わないなら
Loop処理不要で
Sub test1()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:="" '抽出条件 要変更
With ws.AutoFilter.Range.Columns(3).Offset(, 1) '【3】はコピー元の列。要変更
.FormulaR1C1 = "=RC[-1]"
ws.AutoFilterMode = False
.Value = .Value
End With
Set ws = Nothing
End Sub
...こんな感じでできますが、
変動範囲のSUM関数などをコピーしたい場合などにも対応させるなら、
LoopしてFormulaR1C1プロパティを設定するようなコードになるかと思います。
Sub test2()
Dim r As Range
With ActiveSheet
.Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:="" '抽出条件 要変更
For Each r In .AutoFilter.Range.Columns(3).SpecialCells(xlCellTypeVisible) '【3】はコピー元の列。要変更
r.Offset(, 1).FormulaR1C1 = r.FormulaR1C1
Next
End With
End Sub
書式もコピーしたい場合は、test2の最後にColumns(4)に対して書式を設定すれば良いです。
この回答への補足
丁寧な回答ありがとうございます。
質問不足がありましてすみません。
コピー先に元々データがあり、オートフィルタで抽出してその間に抽出した可視セルを貼り付けたいのです。
詳細は質問1の補足を参照ください。
No.1
- 回答日時:
質問の意図が良くわからない。
マクロの記録をとってコードを見る手は有ると思う。
ーー
Sub Macro1()
Range("A1").AutoFilter
Stop
Range("A1:A8").AutoFilter Field:=1, Criteria1:="a"
Stop
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _
Worksheets("Sheet1").Range("B1")
End Sub
Stopはフィルターの解除と実行の様子をシートで確認のため入れたもの。シートで確認後、VBEの実行メニューの継続をクリックして、その後を実行させる。
例データ
A列 A1:A8
コード
a
b
c
a
a
d
c
で実行すると
コードコード
a ▼a
a
a
のようになって
フィルターを解除すると
コードコード
aa
ba
ca
a
a
d
c
となったがこれではだめな点は何処か?
この回答への補足
質問不足ですみません。
コピー先にデータが入力されており、そのデータと同じ行に貼り付けしたいのです。
コード コード
a
ba
cb
a
a
da
cb
マクロ実行
結果
コード コード
aa
ba
cb
aa
aa
da
cb
という結果を出したいのですが、いかがでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
条件に応じて特定の行を非表示...
-
Excel2007 セルを右方向に削除...
-
「マクロ」の足し算の式を教え...
-
Excel 2013 文字列内の文字重複...
-
Excelでセル内の数式は残し値だ...
-
エクセルで全ての数字間にカン...
-
Excel(VBA)データ入力に応じて...
-
エクセル VBA 小数点を含む数字...
-
エクセルで、行ごとの並び替え...
-
フォルダ内の全てのExcelファイ...
-
Excelで連続印刷をするマクロ
-
エクセルの複数シートの保護を...
-
複数のシートの同じセルに入力...
-
EXCEL:同じセルへどんどん足し...
-
複数シートの特定の位置に連番...
-
Excelのシートを、まとめて表示...
-
別シート参照のセルをシート毎...
-
Accessのスプレッドシートエク...
-
Excel、同じフォルダ内のExcel...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excel2007で、太字にした行のみ...
-
Excelでセル内の数式は残し値だ...
-
「マクロ」の足し算の式を教え...
-
Excelで連続印刷をするマクロ
-
エクセル VBA 小数点を含む数字...
-
Excel(VBA)データ入力に応じて...
-
値貼り付けをしても書式も貼り...
-
エクセルで全ての数字間にカン...
-
Excel にて非表示行を探すワー...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
-
並べ替えのマクロで対象行の範...
-
エクセルで、行ごとの並び替え...
-
Excelで周期的に列を削除する方法
-
行の入れ替えってどうするの?
-
整数行を残し小数点の行を削除...
-
Excelで更新日を自動的に入れたい
-
エクセル2003でマクロをおこな...
-
yyyy/mm/ddの日付に一括変換す...
おすすめ情報