支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

マクロとは、Excelの標準機能になります。Excelでは「計算」や「データの整理」などさまざまな作業が行えますが、マクロではこういった処理を自動化することで、業務の効率を上げてくれる機能になります。 具体的にはExcel上で操作できることであれば、全てマクロ機能を使用し自動化することができます。どんな作業でも一気に効率化できるところがマクロ機能のメリットになります。
Excelで マクロとVBAはよく混同されがちですが簡単に言うと、マクロを記述しているプログラム言語のことを「VAB」と言います。 VABのコーディングができる場合、後述する「マクロの記録」を使用しなくてもマクロは作成可能です。

マクロ機能例

・ 例題では、Excelで指定したセルをコピー後、別の場所にペーストし重複を自動で削除するでマクロを作成します。

・ 前提条件・・・ExcelでB1~B5セル上から順に大阪、東京、京都、大阪、北海道の文字列が記載されています。

■手動の場合

手動で行場合、下記の手順が必要になります。

1. Excelで対象範囲(例題ではB1~B5セル)を選択
2. 対象範囲をコピー
3. ペーストするセルを選択
4. ペースト
5. 「重複の削除」を開く
6. 「重複の削除」を実行

■マクロ機能を使用した場合

上記の作業を記録したマクロ機能を使用すると下記の手順で行えます。

1. Excelで対象範囲(例題ではB1~B5セル)を選択
2. マクロを実行

上記の事例では少ないデータでしたが、大量のデータの加工や、グラフの作成、印刷などの作業を自動で行うことも可能です。 そのことからExcelでマクロ機能は大変便利な機能だとお分かりいただけるのではないでしょうか。

■マクロ機能の設定

1. 「マクロの記録」で使用するデータを作成・選択後、「表示」タブから「マクロ」メニューの「マクロの記録(R)」をクリック
2. 対象のセルをコピー後、隣接行に移動しペースト。「重複を削除」を実行。その後、「表示」タブから「マクロ」の「記録終了(R)」をクリック。
3. 先ほどと異なるデータを用意し、選択。「表示」タブから表示されたメニューから「マクロ」をクリック後、マクロを実行。

「マクロの記録」を使用すれば、簡単にマクロが作成されます。注意点としては、操作した内容がそのまま記録されるので誤った操作方法で記録すれば、マクロの内容も誤って操作されてしまうの注意が必要です。

◎VBA関数とは

VBA関数は、「Visual Basic」で用意されている関数でVBAで使用する関数のことです。 下記ではいくつか代表的な関数をご紹介いたします。

◎「Date関数」・「Time関数」・「Now関数」

VBAでは「日付」、「時刻」、「日付と時刻の両方」を取得する関数が存在します。 現在の日付を取得するには、「Date関数」を使用し、現在の時刻を取得するには、「Time関数」を使用します。日付と時刻の両方を取得するには、「Now関数」を使用します。 「Date関数」、「Time関数」、「Now関数」のいずれも戻り値は「Date型」で引数はありません。

■サンプルコード

1. Sub macro3()
2.   MsgBox Date & vbCrLf & _
3.       Time & vbCrLf & _
4.       Now End Sub

■実行結果

1. 2020/10/13
2. 12:00:00
3. 2020/10/13 12:00:00

Replace関数

「Replace」は文字列を検索して、別の文字列に置き換えることができます。 VBAには文字列の中から指定の文字列を置き換える「Replace関数」と、セル範囲の中から指定の文字列を置き換える「Replaceメソッド」があります。 指定の文字列を検索するだけ場合であれば、文字列の中から検索する「InStr関数」とセル範囲の中から検索を行う「Findメソッド」を使用しますが、置き換えの場合はどちらも同じ「Replace」を使用します。 それぞれで呼び出し方や引数の指定方法が異なりますので目的にあわせて使い分けを行う必要があります。

■Replace関数の使用方法

Replace関数は文字列の中から指定した文字列を検索し、別の文字列への置き換えに使用します。

■サンプルコード

1. Sub macro1()
2.   Dim exp As String, fnd As String, rpl As String
3.   exp = "大阪府 大阪市 淀川区 1丁目"
4.   fnd = " " '半角スペース
5.   rpl = "" '空文字
6. 
7.   MsgBox Replace(exp, fnd, rpl)
8. End Sub

■実行結果

1. 大阪府大阪市淀川区1丁目

■Replaceメソッドの使用方法

Replaceメソッドは、指定したセル範囲内から検索した文字列を他の文字列に置換する場合に使用します。

■サンプルコード

1. Sub macro2()
2.   Dim myRange As Range
3.   Dim keyWord1 As String, keyWord2 As String
4.   Dim bool As Boolean
5. 
6.   Set myRange = Range("B1:B4")
7.   keyWord1 = "淀川区"
8.   keyWord2 = "中央区"
9.   bool = myRange.Replace(keyWord1, keyWord2, LookAt:=xlWhole)
10. End Sub

■実行結果

変更前:淀川区 → 変更後:中央区

まとめ

いかがでしたでしょうか。今回はマクロ機能およびVBA関数についてご紹介いたしました。関数にご紹介しきれていない関数がまだまだたくさんありますので気になる方はぜひ使用してみてください。