IFで比較!Excelとマクロの考え方の違い

Excelとマクロの違いと、IFの事例で比較してみました。
Excelとマクロは、目的に合わせて使い分けるのがベストです。
Excel IF

 

Excelとマクロの違いは?

Excelは、人間が入力・クリックすることでExcel上の処理が行われます。
一方、マクロは、人間がプログラム(VBA)を書いて、そのプログラムを実行することでExcel上の処理が行われます。

どちらも同じExcelの処理ですので、結果は同じものになりますが、その過程や手間が大きく異なるのです。

マクロの方が、効率化の可能性は高く、より多くの処理を瞬時に行うことができます。
ただ、「プログラムを書く」という高い敷居があるのも事実です。

マクロを使わずに、Excelの機能で処理した方が、断然早いこともあります。
だからこそ、Excel→マクロという概念ではなく、
・Excel or マクロという選択ができるかどうか
・Excel & マクロという使い方ができるかどうか
が重要です。

マクロについては、こちらの記事を参考にしてください。
(古い記事なので近日中にリメイクします)
Excelマクロ入門ー実際にかんたんなマクロを書いてみましょうー

スクリーンショット 2015 02 06 9 54 15

 

 

ExcelのIFとマクロのIFの違い

IF関数で、Excelとマクロの違いを見てみましょう。

Excelでの処理

Excelでこういったデータがあり、「金額が10,000より大きかったら、判定欄へ1、そうでなかったら2を入れる」処理をします。
スクリーンショット 2015 02 06 10 04 43

Excelなら、こういう数式を入れるでしょう。
スクリーンショット 2015 02 06 10 05 53

すべてのデータにコピーする場合も、セルB2の右下隅でダブルクリックすれば、スクリーンショット 2015 02 06 10 07 25

瞬時にコピーできます。
スクリーンショット 2015 02 06 10 08 03

 

 

マクロでの処理

マクロだと、まずこう書く方法が考えられます。

Sub test()

    Range("b2").Value = "=IF(A2>10000,1,2)"
    

End Sub

そのまま、セルB2に「=IF(A2>10000,1,2)」という値を入れるのです。

Excelでの操作を忠実に再現するなら、こういうプログラムになります。

Sub test1()

    Range("b2").Value = "=IF(A2>10000,1,2)"
    Range("b2").AutoFill Destination:=Range("b2:b7")
    

End Sub

ただ、後々の応用が利きません。
「Excel to マクロ」ではなく、「Excel & マクロ」と考えると、Excelとは切り離して、マクロ特有の考え方・書き方になじんでおくべきです。

ちょうど、MicrosoftMVP &『インストラクターのネタ帳』管理人の伊藤さんが、こういったツイートをされていました。

通常は、こう書きます。

Sub test2()

        If Range("a2") > 10000 Then
            Range("b2").Value = 1
        Else
            Range("b2").Value = 2
        End If

End Sub

「If」 と 「End If」ではさんだ部分がIF文で、Excelの「=if(     )」に該当します。
Excelでも「)」がつくように、マクロでもちゃんと「End If」で終わりましょう。

「Else」は、そうでなければ、という意味です。

すべてのデータに入力するならば、こういったプログラムにします。
2行目から7行目に繰り返し処理をするというプログラムです。
(通常はデータ数を数えて、データ数だけ処理を繰り返すというプログラムを書きます)
マクロだと、瞬時に、IFの処理とコピーができます。

Sub test3()

    Dim i
    For i = 2 To 7
        If Range("a" & i) > 10000 Then
            Range("b" & i).Value = 1
        Else
            Range("b" & i).Value = 2
        End If
    Next

End Sub

やはり、このプログラムをささっと書くのは敷居が高いと感じるかもしれません。
通常は、ExcelでIFを入力すれば十分です。

 

 

Excelとマクロの両方を使えるようにしておくのが理想

しかし、マクロはこの先の可能性があります。
たとえば、「判定が2のデータのみ、つまり10,000より大きいデータのみ別のシートへ取り出す」という例を考えてみましょう。

Excelでやるならば、IFを入れて、オートフィルターで2のみを抽出し、コピーして別のシートへ貼り付けます。

スクリーンショット 2015 02 06 10 17 13

そこそこの手間です。

これをマクロでやるならば、次のようなプログラムを書きます。

Sub test4()

    Dim n
    n = 2
    
    Dim i
    For i = 2 To 7
        If Range("a" & i) > 10000 Then
            Worksheets("output1").Range("a" & n).Value = Range("a" & i).Value
            n = n + 1
        End If
    Next

End Sub

「もし10,000より大きかったら、シート「output1」へ書き出す」というプログラムです。
フィルター、コピーや貼り付けの手間はいりません。
ミスをすることもないです。

スクリーンショット 2015 02 06 10 20 25

さらには、「「もし10,000より大きかったら、シート「output1」へ書き出し、そうでなかったら、シート「output2」へ書き出す」という事例ならどうでしょう。

Excelでやるとさらに手間が増え、大変です。

マクロなら、こう書きます。
(実際に使うならもっと効率的な書き方がありますが・・)

Sub test4()

    Dim n1
    n1 = 2
    Dim n2
    n2 = 2
    
    Dim i
    For i = 2 To 7
        If Range("a" & i) > 10000 Then
            Worksheets("output1").Range("a" & n1).Value = Range("a" & i).Value
            n1 = n1 + 1
        Else
            Worksheets("output2").Range("a" & n2).Value = Range("a" & i).Value
            n2 = n2 + 1
            
        End If
    Next

End Sub

その目的により、判断して使い分けていくのが理想です。

今回の事例なら、単に判定すればいいだけならExcelの機能で、シートやブックに関する処理があるならマクロでやるという判断をします。

毎月、毎日、毎年繰り返すなら、マクロを入れた方がいい場合も多いです。

超人的にプログラムが得意な人なら、マクロだけでもすべてをこなせますが、私も含めてそうでないなら、Excelの基本機能もしっかり使いましょう。
以前はマクロでしかできなかったことがExcelの機能だけでできるようになっているものもあります。

 

 





【編集後記】
ストレッチを毎日の習慣にして、3週間ほど。
ちょっとずつ効果が出てきている気がしています。
トライアスロンの今シーズンの初のレースは1ヶ月後。
じっくり続けていきます。
(スイムもやらないと・・。今日行きます)

【昨日の1日1新】
※詳細は→「1日1新」

一之江バーミヤン
ライフネット生命問い合わせ
ドラゴンボール ゼノバース

過去記事一覧(直近365)

■著書
『改訂版 税理士のためのRPA入門 ~一歩踏み出せば変えられる!業務効率化の方法~』
『税理士は「話せなくても」うまくいく ―独立がより楽しくなるコミュニケーション思考―』
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方