関数とマクロのどちらで解決すべきか迷ったら ~ 制御構造

こんにちは。Excelでデータ集計をするときに、関数とマクロのどちらで解決すべきか悩むことは結構あると思います。



そんなときには、関数とマクロの性質の違いに着目してください。

---

関数には、「必ず一意に定まる」という特徴があります。

つまり、関数の結果はひとつです。

それに対して、マクロは「繰り返し」に特徴があります。

---

かつて、ダイクストラ(E.W.Dijkstra)はプログラムの制御構造を3つにまとめました。

順次構造(sequence)
選択構造(selection)
繰返し構造(iteration)



つまり、「全てを探し出す」という処理は、繰返し構造をもつマクロが向いています。

逆に、「一つあるものを見つける」というのは関数でも、IF関数やVLOOKUP関数などで解決することができます。

---

たとえば、よく聞かれる問題に、予定の一覧表をカレンダー形式に変更したい、という場合があります。



多くの人はまずはじめに、カレンダーの予定を入れるセルに、VLOOKUP(日付, 表, 項目行, 0)と日付をもとに検索して、予定を考えます。

しかし、予定が1日に二つある場合に、探し方がわからなくなります。

このような時に、関数ではなくマクロによる解決に切り替えてください。