【1分でわかる】Excel「関数」「マクロ」の違いは?特性を解説
- 関数とマクロの違いがわかる
- マクロを使うと便利な作業が何かわかる
「マクロを使うと便利と聞くけど、計算だけなら関数で良いやん」
「マクロのメリットがイマイチわからない」
そんな素朴な疑問を解決します。
Excelマクロを利用すると、「4時間かかる作業が20秒で終わる」ことができます。かなり衝撃ですよね!
実際に関数だけで処理されている方は関数で処理するために、どこからかデータをコピペして持ってきたり、作り終わった資料を印刷したり。
そんな作業をマクロで自動化するんです!
マクロと関数の違いや、マクロのメリット・デメリットを確認しながら実務で利用できる例を見ながら確認していきましょう。
LINEでExcelを気軽に学べる
□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への差し込み印刷
①[姓]②[名]③[住所]④[電話番号]⑤[メールアドレス]
こちらをマクロで自動変換していくよ♪
見出しの[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ファイルを新規ファイル名で保存できました。
G列に印刷処理を実行した日時を出力します。
あとで見返したときに一目瞭然ですね♪
マクロの動かし方
実際にマクロをどう動かすのかを解説した記事がありますので、こちらを確認ください。
変数の仕組みについても要チェック!
しんたろ。ブログでは「少しでも残業を減らしたい」「時間効率を上げて新しいことにチャレンジしたい」「仕事で評価を上げて年収を上げたい」そんなあなたに向けて私が学んできたノウハウを最短ルートで教えるExcelブログとなっています。
覚えておくべき関数や操作方法を徹底解説!
習得する方法を解説
「独学で習得できる気がしない」そんな方に効率よく習得できる記事を書きました。
本や動画を紹介していますが、やはり一番効率の良い習得方法は、講師にわからないことを質問できる『オンラインスクール』です。
会社員でも不就労所得を作れる。
「会社の収入だけでは不安」そう思い出会った副業がブログでした。書いた記事たちが、あなたが寝ている間もずっと働いてくれます。『不就労』の完成です。
記事を書く際の様々な分析にExcelがとても役立ちます。私は2023年末までにブログで脱サラする予定です!
あなたもブログで脱サラしましょう!