エクセルバージョン
マイクロソフト365
本日はエクセルVBAで祝日を削除するサンプルコードをご紹介したいと思います。
VBAを使用しなくてもWORKDAY関数を使用すれば土日祝日を削除するデータが作成できます。
ですが…
日付データが少なければ特に問題ないのですが、何千行も日付データがある場合は関数式でファイルが重くなるというお悩みの方もいるのではないでしょうか?
今回はそんなお悩みの方にエクセルVBAでセルに数式が入らずに土日祝日の削除データが作成できる方法があるのでご紹介したいと思います。
それではいってみましょう(*^^)v
土日なしのデータ作成
まずは普通に作成したい日付をA列に作成します。
フィルハンドルでコピペして連続データ(週日単位)を選択すると土日なしのデータが簡単に作成できます\(^^)/
祝日データを作成
手順
➀祝日というシートを作成します。
②作成した祝日シートに下記の祝日コピペデータをコピペします。
③日付は必ず作成した祝日シートのA列にセットします。
※祝日データはご自身で用意してもらって結構です。
【祝日コピペデータ】
データは2021年と2022年の祝日データになります。
下記の祝日データを「祝日」という名前のシートを作成してA列にコピペします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 2021/1/1 金 元日 2021/1/11 月 成人の日 2021/2/11 木 建国記念の日 2021/2/23 火 天皇誕生日 2021/3/20 土 春分の日 2021/4/29 木 昭和の日 2021/5/3 月 憲法記念日 2021/5/4 火 みどりの日 2021/5/5 水 こどもの日 2021/7/22 木 海の日 2021/7/23 金 スポーツの日 2021/8/8 日 山の日 2021/8/9 月 振替休日 2021/9/20 月 敬老の日 2021/9/23 木 秋分の日 2021/11/3 水 文化の日 2021/11/23 火 勤労感謝の日 2022/1/1 土 元日 2022/1/10 月 成人の日 2022/2/11 金 建国記念の日 2022/2/23 水 天皇誕生日 2022/3/21 月 春分の日 2022/4/29 金 昭和の日 2022/5/3 火 憲法記念日 2022/5/4 水 みどりの日 2022/5/5 木 こどもの日 2022/7/18 月 海の日 2022/8/11 木 山の日 2022/9/19 月 敬老の日 2022/9/23 金 秋分の日 2022/10/10 月 スポーツの日 2022/11/3 木 文化の日 2022/11/23 水 勤労感謝の日 |
祝日削除サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | Option Explicit '定数 Const DATECOL As String = "A" '土日祝日を削除するシートの列 Const PUB_HOLI_COL As String = "A" '祝日シートの列 Const STARTROW As Integer = 1 '土日祝日を削除するシートの行頭番号 Sub 祝日削除サンプル() '変数 Dim rowEnd, rowEndShukujitu, rowNum, rowNumShukujitu As Integer '祝日を削除するシートのA列の最終行番号取得 rowEnd = Cells(Rows.Count, DATECOL).End(xlUp).Row '祝日シートのA列の最終行番号取得 rowEndShukujitu = Sheets("祝日").Cells(Rows.Count, PUB_HOLI_COL).End(xlUp).Row '高速化 With Application .Calculation = xlCalculationManual .ScreenUpdating = False .EnableEvents = False '祝日を削除するシートの変数rowNumの行頭セルはA1 For rowNum = STARTROW To rowEnd '祝日シートの変数rowNumShukujituの行頭セルはA1 For rowNumShukujitu = 1 To rowEndShukujitu '土日祝日を削除するシートに祝日シートの日付があったら処理 If Cells(rowNum, DATECOL) = _ Sheets("祝日").Cells(rowNumShukujitu, PUB_HOLI_COL) Then '祝日を削除して上詰め Cells(rowNum, DATECOL).Delete Shift:=xlUp End If Next Next '高速化解除 .ScreenUpdating = True .EnableEvents = True .Calculation = xlCalculationAutomatic End With MsgBox "FINISH" End Sub |
作成しなくてもいいですがシートにマクロボタンでも作成しておけばボタンをポチッと押すだけなので簡単に使用できるかと思います。
まとめ
ファイルが数式で重たいという方はVBAで是非実践してみてください。
あとはサンプルコードの定数である行頭の行番号や列を変更すれば自由自在に祝日削除データが作成できます(^^♪
以上です。