dポイントプレゼントキャンペーン実施中!

VBAにて以下の動作となるようにするにはどのようにしたらよいかご教授ください。

<基本シート>
A列   B列   C列
佐藤  男性  東京
伊藤  女性  神奈川
鈴木  女性  大阪
高橋  男性  長崎
渡邊  男性



↓マクロを実行して

男性シート         女性シート   
A列   B列   C列     A列   B列   C列     
佐藤  男性  東京    伊藤  女性  神奈川 
高橋  男性  長崎    鈴木  女性  大阪      
渡邊  男性


行や列は今後追加されます。
上記よりB列の男性と女性を、それぞれ別のシートに行ごと抽出するにはどうしたらよいでしょうか。
どなたかご教授お願い致します。

質問者からの補足コメント

  • 小生、マクロ初心者で勉強中です。
    マクロのコードも教えてください。
    よろしくお願いします。

      補足日時:2022/02/06 14:48

A 回答 (3件)

こんばんは


>VBAにて以下の動作となるようにするにはどのようにしたらよいかご教授ください。
VBAを使わない場合は、どのように処理しますか?
処理するにあたりExcelの機能やショートカットキーは分かりますか

>小生、マクロ初心者で勉強中です。
自動記録はご存知ですか?
https://fastclassinfo.com/entry/macro_jido_kiroku/

ご存知なくともVBA勉強中なら自身でやるしかありません。

ご質問のような
基本シート 男性シート 女性シートを作成して
基本シートにミニマムな表を作り、処理を記録すれば、参考コードが出来ます。
例として
#2様の回答にある方法を参考に記録を実施すると少し難しい、注意する点を上げます。
(A1からC6セルで記録すると)

Range("A1").Select
Selection.CurrentRegion.Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$6").AutoFilter Field:=1, Criteria1:=

みたいに記録されると思いますが
>行や列は今後追加されます。
との事なので 限定された範囲ActiveSheet.Range("$A$1:$C$6")を
何とかしなくてはなりません。

記録されたコードを1行ずつ読むと
CurrentRegion.SelectとSelection、ActiveSheet.Range("$A$1:$C$6")は
同じ範囲を示しているので
Range("A1").Select
Selection.CurrentRegion.Select
Selection.AutoFilter Field:=1, Criteria1:=
のように書き直せます。
(もっと省略できますが、そこは考えてください)
これで範囲が変わっても対応できます。

ActiveSheet.Range("$A$1:$C$6").AutoFilter  は
男、女、で2か所できるはずですが同様です。

内容はともかくとして、出来上がったのではないでしょうか?

>マクロ初心者で勉強中です。
自動記録は必要スキルです。ショートカットキーもです
Selection.CurrentRegion.Select の
ショートカット操作 Ctrl+Shift+* 
選択されているセルが含まれる空白セルに囲まれたセル範囲(塊)の選択
    • good
    • 1
この回答へのお礼

ありがとうございます。
勉強になりました。

お礼日時:2022/02/06 18:08

こんにちは



普通に考えれば、「基本シート」を順に見ていって、性別によって「男性シート」、「女性シート」に振り分けながらコピペとかでしょうか?

エクセル的に考えるなら、「基本シート」B列を男性でフィルタ。
結果を「男性シート」へコピペ。
という方法もあるでしょう。(女性も同様)

>小生、マクロ初心者で勉強中です。
>マクロのコードも教えてください。
コードをコピペしてても何の勉強にもなりません。
上記2番目の方法なら、「マクロの記録」で、ほぼそのままのコードを作成可能です。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2022/02/06 18:07

do untlで回してセルで検索して.offsetでコピペする

    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2022/02/06 18:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!