logの話に混じったので、ちょっと別の観点でワークシート関数について触れてみよう。

Excelには、ワークシート関数とVBAとがある。人によって「関数」と言った場合、ワークシート関数なのかVBAなのか、違うことがある。「マクロ」についても然り。よって、このブログでは使う必要がない限りは「ワークシート関数」と「VBA」という表現で明確に区別している(つもりである)。

さて、VBAからワークシート関数を利用することができるのはご存知だろう。WorksheetFunctionとかいうのを使えばワークシートの関数を利用できる。

さて、ではどんなときに使えばいいのか。一般的には次の場合だろう。
・ワークシート関数にはあるが、VBAには存在しない関数。
  これは言うまでもないだろう。わざわざロジックを組むことなく実装できるのだから。
・ワークシート関数にもVBAにも同様の関数があるが、ワークシート関数の方が高機能である場合。
  log が良い例だが、VBAのlog関数は自然対数であるが、ワークシート関数は底も指定できる。常用対数とか使うなら断然ワークシート関数を使った方がいいだろう。

なお、同等の機能でも、ワークシート関数のほうがVBAの関数よりも高速、という話を聞いたことがある。実験をしていないので確証はないが、気が向いたら実験してみて欲しい。(私もそのうちに・・)