Excel上級者

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

しんたろ。
この記事でわかること
  • 関数とマクロの違いがわかる
  • マクロを使うと便利な作業が何かわかる

「マクロを使うと便利と聞くけど、計算だけなら関数で良いやん」
「マクロのメリットがイマイチわからない」

そんな素朴な疑問を解決します。

Excelマクロを利用すると、「4時間かかる作業が20秒で終わる」ことができます。かなり衝撃ですよね!

実際に関数だけで処理されている方は関数で処理するために、どこからかデータをコピペして持ってきたり、作り終わった資料を印刷したり。

そんな作業をマクロで自動化するんです

マクロと関数の違いや、マクロのメリット・デメリットを確認しながら実務で利用できる例を見ながら確認していきましょう。

期間限定でChatGPT✖️Googleスプレットシートのコンテンツ配布中!

LINEでExcelを気軽に学べる

しんたろ。
しんたろ。
Excel歴10年以上のプロ
Profile
【実績】
□2016年
海外拠点において、Excelでの業務改善による納期遵守率50%→100%達成。
□2018年
自動化を促進させ、自身の残業時間を年間240時間削減成功。
□2023年
├ブログとTwitter開始
├Excel無料相談会→即日満席
└ChatGPT×Googleスプレットシート配布で1週間で35万インプ達成

仕事ができなくて毎日上司に叱責されていた私がExcelを学んだら評価され残業を大幅に削減!現在は職場改善チームに所属し、PythonやRPAなどのツールで会社全体の改善をしています。仕事の依頼はTwitterのDMまで!
プロフィールを読む

Excelマクロと関数の違い

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

計算などの処理をする」という点では共通していますが、規模感など根本的な概念が「別物」です。実際にExcelマクロがどんな時に活躍するのか事例を用いて紹介します。

Excelマクロはどんな時に使うか

 マクロを使用すると、Excelにある機能なら組み合わせて自動化ができます。操作自体を自動化できるとかなり便利ですよね。

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

上から下にかけて難易度が上がります。順番に解説していきますね♪

Excelマクロの作業を自動化するコードを見てみよう

マクロをどんな時に使うのか雰囲気が伝わりましたか?
そしたら次は実際にコードを見ながら確認していきましょう!

今回は事例として
①「書類の印刷実行
「Excelの情報をWordに転記して印刷を実行」
2つの事例を紹介します。
下のサンプルコードは、コピペしてお使いくださいね♪

難易度①書類の印刷

 Sub 書類の印刷()
'
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
  IgnorePrintAreas:=False
End Sub

凄くシンプルですよね。
これだけで印刷を自動化できます。

難易度②Wordへの差し込み印刷

Wordでテンプレートを作成
word テンプレ説明

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

Excelでデータ一覧を作成
Excelデータ一覧

見出しの[xx]はWordと併せておきましょう。
またsheet名は「個人情報」と入力しておいてください。

コード作成
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ファイルを保存
Word 差し込み確認

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

Excelに印刷時間反映を確認
excel 出力確認

G列に印刷処理を実行した日時を出力します。
あとで見返したときに一目瞭然ですね♪

マクロの動かし方

実際にマクロをどう動かすのかを解説した記事がありますので、こちらを確認ください。

【保存版】Excel2013 VBAを徹底解説!
【保存版】Excel2013 VBAを徹底解説!

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

【変数宣言Dimを3分で徹底解説】ExcelVBAを知る始めの一歩
【変数宣言Dimを3分で徹底解説】ExcelVBAを知る始めの一歩
全会社員を残業地獄から救いたい
本ブログの有効活用方法
1
Concept
初心者に分かりやすい解説

しんたろ。ブログでは「少しでも残業を減らしたい」「時間効率を上げて新しいことにチャレンジしたい」「仕事で評価を上げて年収を上げたい」そんなあなたに向けて私が学んできたノウハウを最短ルートで教えるExcelブログとなっています。

覚えておくべき関数や操作方法を徹底解説!

2
Concept
Excelを最短で
習得する方法を解説

「独学で習得できる気がしない」そんな方に効率よく習得できる記事を書きました。

本や動画を紹介していますが、やはり一番効率の良い習得方法は、講師にわからないことを質問できる『オンラインスクール』です。

3
Concept
Excelが大活躍!
会社員でも不就労所得を作れる。

「会社の収入だけでは不安」そう思い出会った副業がブログでした。書いた記事たちが、あなたが寝ている間もずっと働いてくれます。『不就労』の完成です。

記事を書く際の様々な分析にExcelがとても役立ちます。私は2023年末までにブログで脱サラする予定です!

あなたもブログで脱サラしましょう!

ABOUT ME
しんたろ。
しんたろ。
Excel歴10年以上のプロ
【実績】
□2016年
海外拠点において、Excelでの業務改善による納期遵守率50%→100%達成。
□2018年
自動化を促進させ、自身の残業時間を年間240時間削減成功。
□2023年
├ブログとTwitter開始
├Excel無料相談会→即日満席
└ChatGPT×Googleスプレットシート配布で1週間で35万インプ達成

仕事ができなくて毎日上司に叱責されていた私がExcelを学んだら評価され残業を大幅に削減!現在は職場改善チームに所属し、PythonやRPAなどのツールで会社全体の改善をしています。仕事の依頼はTwitterのDMまで!
記事URLをコピーしました