【1分でわかる】Excel「関数」「マクロ」の違いは?特性を解説

- 関数とマクロの違いがわかる
- マクロを使うと便利な作業が何かわかる
「マクロを使うと便利と聞くけど、計算だけなら関数で良いやん」
「マクロのメリットがイマイチわからない」
そんな素朴な疑問を解決します。
Excelマクロを利用すると、「4時間かかる作業が20秒で終わる」ことができます。かなり衝撃ですよね!
実際に関数だけで処理されている方は関数で処理するために、どこからかデータをコピペして持ってきたり、作り終わった資料を印刷したり。
そんな作業をマクロで自動化するんです!
マクロと関数の違いや、マクロのメリット・デメリットを確認しながら実務で利用できる例を見ながら確認していきましょう。
ExcelVBAのコードをLINEbotが自動生成!
↓友だち追加して作業効率化アップさせてね↓



Excelマクロと関数の違い
- 目的の違い
- ・関数 → データの取得や計算のみ。
・マクロ → 関数での計算はもちろん、文字サイズや文字色の変更、表サイズなどExcel操作自体を操ることができる。
- 処理や計算結果の違い
- ・関数 → 引数に対して、必ずなにかの値を返す。
・マクロ → 値を返す処理だけではなく、文字や表の更新をおこなったりする。

「計算などの処理をする」という点では共通していますが、規模感など根本的な概念が「別物」です。実際にExcelマクロがどんな時に活躍するのか事例を用いて紹介します。
Excelマクロはどんな時に使うか
マクロを使用すると、Excelにある機能なら組み合わせて自動化ができます。操作自体を自動化できるとかなり便利ですよね。
項目 | Excel関数 | マクロ |
---|---|---|
①処理の速さ | セルに関数が大量にあると、Excelブックが開けないくらい遅くなる。程々なら問題なし。 | めちゃ速い・めちゃ軽い |
②使いやすさ | ・とても簡単 ・他の人でも修正がしやすい ・ゆえに間違って消されやすい | ・VBEをというスキルが必要 ・他の人が修正しずらい ・誤って消されにくい ・属人化になりやすい |
③Excelの操作 | ・数字の計算や文字列の抽出や結合など ・印刷や罫線など直接的な操作はできない | Microsoft製品やサイトからデータ抽出など多岐に渡り対応可能 |
④業務改善効果 | 個人の残業時間年間120時間以上は削減可能 | 自部門や会社全体にもたらす大幅な時間削減が可能 |
⑤メンテナンス | 数式表示のみのため、ネストが増えるとわかりづらく修正が大変 | コメントアウトできるので、後任者が見てもメンテナンスがしやすい |
- 書類の作成…書類の印刷やWordへの差し込み印刷
- セルの編集…セルのコピーやペースト、文字の大きさの変更など
- データのチェック…データの修正やデータの検索、データの置換
- データの集計…グラフの作成や作成したグラフや表をPowerPointへ挿入
- ファイルの統合や分割…フォルダ操作ができ、フォルダ名一覧の作成も可能

上から下にかけて難易度が上がります。順番に解説していきますね♪
Excelマクロの作業を自動化するコードを見てみよう
マクロをどんな時に使うのか雰囲気が伝わりましたか?
そしたら次は実際にコードを見ながら確認していきましょう!

今回は事例として
①「書類の印刷実行」
②「Excelの情報をWordに転記して印刷を実行」
2つの事例を紹介します。
下のサンプルコードは、コピペしてお使いくださいね♪
難易度①書類の印刷
1 2 3 4 5 |
Sub 書類の印刷() ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False End Sub |

凄くシンプルですよね。
これだけで印刷を自動化できます。
難易度②Wordへの差し込み印刷


①[姓]②[名]③[住所]④[電話番号]⑤[メールアドレス]
こちらをマクロで自動変換していくよ♪


見出しの[xx]はWordと併せておきましょう。
またsheet名は「個人情報」と入力しておいてください。
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
Sub word_tenki() '変数 Dim i As Long, k As Long Dim waitTime As Variant 'シート設定 Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("個人情報") '最終行と最右列を取得 Dim cmax As Long, cnt As Long cmax = Range("A65536").End(xlUp).Row cnt = Range("IV1").End(xlToLeft).Column 'word起動 Dim wdapp As Word.Application Set wdapp = CreateObject("Word.application") wdapp.Visible = True 'wordのパス取得 Dim path As String path = ThisWorkbook.path & "\Sample.docx" 'Excelのデータを1行ずつ処理 For i = 2 To cmax 'Wordを開く Dim wddoc As Word.Document Set wddoc = wdapp.Documents.Open(path) 'WordにExcelのデータを挿入 For m = 0 To cnt - 2 With wddoc.Content.Find .Text = ws.Range("B1").Offset(0, m).Value .Forward = True .Replacement.Text = ws.Range("B" & i).Offset(0, m).Value .Wrap = wdFindContinue .MatchFuzzy = True .Execute Replace:=wdReplaceAll End With Next 'Excelデータを差し込んだWordを印刷 wddoc.PrintOut 'Wordを保存 Dim str As String str = ws.Range("A" & i).Value & "_" & Range("B" & i).Value & Range("C" & i).Value & ".docx" wddoc.SaveAs Filename:=ThisWorkbook.path & "\" & str 'Wordを保存せずに閉じる wddoc.Close savechanges:=False 'オブジェクト解放 Set wddoc = Nothing 'Excelにデータを出力 ws.Range("G" & i).Value = Now & "処理済" Next 'Wordをアプリケーションごと閉じる wdapp.Quit Set wdapp = Nothing End Sub |

コードの解説は、今後別途解説します。
今回はこのコードをコピペして使用ください。

- ①:[姓]→あず
- ②:[名]→たろ。
- ③:[姓]→あず
- ④:[住所]→青森県
- ⑤:[電話番号]→080-2234-5678
- ⑥:[メールアドレス]→azutaro@gmail.com

①〜⑥までの該当する箇所が置換されました。


差し込みが完了したWordファイルを新規ファイル名で保存できました。


G列に印刷処理を実行した日時を出力します。
あとで見返したときに一目瞭然ですね♪
マクロの動かし方
実際にマクロをどう動かすのかを解説した記事がありますので、こちらを確認ください。


変数の仕組みについても要チェック!


しんたろ。ブログでは「少しでも残業を減らしたい」「時間効率を上げて新しいことにチャレンジしたい」「仕事で評価を上げて年収を上げたい」そんなあなたに向けて私が学んできたノウハウを最短ルートで教えるExcelブログとなっています。
覚えておくべき関数や操作方法を徹底解説!
習得する方法を解説
「独学で習得できる気がしない」そんな方に効率よく習得できる記事を書きました。
本や動画を紹介していますが、やはり一番効率の良い習得方法は、講師にわからないことを質問できる『オンラインスクール』です。


会社員でも不就労所得を作れる。
「会社の収入だけでは不安」そう思い出会った副業がブログでした。書いた記事たちが、あなたが寝ている間もずっと働いてくれます。『不就労』の完成です。
記事を書く際の様々な分析にExcelがとても役立ちます。私は2023年末までにブログで脱サラする予定です!
あなたもブログで脱サラしましょう。