はじめに
このシリーズからExcelでの単純作業を少しでも楽にするためのアイデアを発信していきます。Excel自動化にはpythonライブラリのopenpyxl等を使用することも可能ですが、基本的にはVBAによる自動化について書いていきます。
また、より業務効率化のイメージを持ってもらうためにシチュエーションを想定して説明したいと思います。
置かれている状況と今回やること
あなたはとあるクラスの先生です。
全員の成績を集約したExcelシート(基本データ)をもとに、生徒の氏名が入ったシートを作成し各シートに成績を転記したいと考えています。
しかし、生徒が50人いるので(画像では25人までしか見えていないですが)手作業で入力するのは時間がかかりそうです。
そこで、まずは生徒の氏名が入ったシートを自動で作成していきます。
コードの記述
以下のようにコードを記述します。
氏名シートの作成
Sub create_newsheet()
'変数の定義
Dim i As Long
Dim lastRow As Long
'氏名列の最終行を取得して変数に代入
lastRow = Sheets("基本データ").Range("B2").End(xlDown).Row
'基本データから氏名を取得してi番目のシート名にする
For i = 1 To lastRow - 1
Sheets.Add(after:=Sheets(i)).Name = Sheets("基本データ").Cells(i + 1, "B").Value
Next i
'基本データに戻る
Sheets("基本データ").Activate
End Sub
実行結果
今回は「シート作成」というボタンを作成し実行してみます。(F5キー等で実行しても大丈夫です)
全員分の氏名が入ったシートを作成することができました!
今の段階では各シートには何も書かれていないので、次の記事で成績の転記方法について説明したいと思います。
次の記事はこちら
参考文献
本記事を書くにあたっては以下の情報を参考にしました。