マクロの記述をもっとシンプルにしたい
このサイトでいただいた回答を利用し、また、マクロの記録を使って切り貼りして何とかやりたいことができるようになったマクロですが、記述に無駄があると思います。どのように書きかえるともっとスマートになるでしょうか。
作ったのは、190数名の数学と英語の点数を入力し、オートフィルタを使ってまず、数学の100点満点を取ったものを抽出します。そのリストをコピーし、隣のシートにコピーします。次に同じく数学ですが、60点未満のものを抽出し、それをコピーし、隣のシートのさっきコピーした隣にコピーします。それからオートフィルタを解除して、同じことを英語にも行います。最後に4つの表が並んだシートの不要な列を削除し、タイトルをつけ、列幅を調節し、オートフィルタを解除して終了します。
以下にマクロの記述をコピーします。まだなステイトメントばかりだと思いますので、アドバイスお願いいたします。
Sub 条件生徒抽出シンプル版new()
Dim wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.Clear
With Range("A1").CurrentRegion
.AutoFilter field:=5, Criteria1:=100 '数学の満点者を抽出
.Copy wS.Range("A1") '上のリストをコピー
.AutoFilter field:=5, Criteria1:="<60" '数学の不合格者を抽出
.Copy wS.Range("h1") '上のリストをコピー
Selection.AutoFilter '元データリストのオートフィルタを解除
.AutoFilter field:=6, Criteria1:=100 '英語の満点者を抽出
.Copy wS.Range("o1") '上のリストをコピー
.AutoFilter field:=6, Criteria1:="<60" '英語の不合格者を抽出
.Copy wS.Range("v1") '上のリストをコピー
End With
Sheets("Sheet2").Select
Range("A:A,F:F,H:H,M:M,O:O,S:S,V:V,Z:Z").Select
Selection.Delete 'コピーした表の不要な列を削除
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'タイトル行を追加
Range("A1").Select
ActiveCell.FormulaR1C1 = "数学満点者"
Range("F1").Select
ActiveCell.FormulaR1C1 = "数学不合格者"
Range("K1").Select
ActiveCell.FormulaR1C1 = "英語満点者"
Range("P1").Select
ActiveCell.FormulaR1C1 = "英語不合格者"
Rows("2:2").Select
Selection.HorizontalAlignment = xlCenter '追加したタイトルをセンタリング
Columns("A:A").ColumnWidth = 4.63 '各列の幅を変更
Columns("C:C").ColumnWidth = 12
Columns("C:C").ColumnWidth = 12.75
Columns("D:D").ColumnWidth = 6.38
Columns("F:F").ColumnWidth = 4.63
Columns("H:H").ColumnWidth = 12.75
Columns("I:I").ColumnWidth = 6.38
Columns("K:K").ColumnWidth = 4.63
Columns("M:M").ColumnWidth = 12.75
Columns("N:N").ColumnWidth = 6.38
Columns("P:P").ColumnWidth = 4.63
Columns("R:R").ColumnWidth = 12.75
Columns("S:S").ColumnWidth = 6.38
Sheets("今週の点数").Select
Selection.AutoFilter 'オートフィルタを解除
End Sub
お礼
回答ありがとうございます。 >ただし、コピーしたマクロ自体に Public...~End Subの記述がある場合は、 >※の操作は不要で、いきなり余白部分に貼り付ければOKです。 とてもわかり易くて嬉しいです。無事にクリアできました。 上記の「Public...~End Subの記述」が開くだけで出てきてしまい 私を混乱させていました。 消してからペーストすればいいんですね。 きっと、出ないように設定も出来るのでしょうね。 頑張ってみます(笑)くじけたらまた質問しますので その時はまたよろしくお願いします(汗)