読者です 読者をやめる 読者になる 読者になる

長いものには巻かれない

常識は非常識かもしれないと考えてみる

Excelでオリジナル関数を作っちゃおう!初心者向けExcelマクロ入門第2弾!!

こんにちは。
現役在宅プログラマのなほちゃんです。
予告どおりExcelで関数を作る方法を解説します。
なるべく分かりやすく説明するので、是非挑戦してみてくださいね。
Excelは関数が肝だから、自分で作れるようになると、Excelを上から目線で見られるようになるかも~。

関数とは何か?

関数とは何でしょう? なほちゃんも、初めてExcelで「関数」という言葉を聞いた時、「関わる数ってなんだ?」とか、「数学で習った1次関数?」とかを思い浮かべて、やたら難しいような感じがした経験があります。

関数は英語では「Function」。ファンクションは「機能」っていう意味でも使われるので、「関数」じゃなくて、「機能」っていう名前にした方が分かりやすかったんじゃないかと思う。ほら、パソコンのキーボードに「F1」とか「F2」とか書いてあるけど、昔は「機能1」とか「機能2」とかって書かれていたことがあったでしょう? 関数はそれだ!と言えば分かりやすいと思うんだけど。

で、Excelで関数と言えば、合計を求める「SUM」とか、平均を求める「AVERAGE」とかがよく使われます。つまり関数とは何かを渡すと決まった法則に基づき答えを返してくれる特別な計算式のこと。この時、渡すものを「引数(ひきすう)」答えを「戻り値(もどりち)」と呼びます。返り値(かえりち)と呼ぶこともありますが、返り血ではないので注意しましょう。手品で言えば、切った白い紙を帽子に入れると鳩が出てくるような感じですね!

f:id:komanaho:20161212085633j:plain

 SUM関数なら、〇=SUM( X:Y ) って書くと思いますが、〇の部分が戻り値で、カッコのが引数になります。「:」は「~」という意味です。

f:id:komanaho:20161212090654j:plain

干支を求める関数を作る

では、いよいよ関数を作っていきます。
せっかくなので、簡単に作れて実用的なものを考えてみました。

今回は、年を西暦4ケタで渡すと、干支が返ってくる関数を作ることにします。
年が引数で、干支が戻り値ですね。関数の名前はGetEtoにしましょう。

f:id:komanaho:20161212091509j:plain

計算式は、西暦を4で割って余りを求める式になります。

余りを求めるときは「+」や「-」の代わりに「MOD」を使います。「2016 MOD 12」は割り切れて余りはないので、答えは「0」になります。2016年は申年なので、余りが「0」の時は申年になります。

では、2017年はどうでしょう?「2017 MOD 12」は割り切れず余りは「1」になります。つまり、余りが「1」の時は酉年になります。このように計算していくと、次のようになることが分かります。

あまりが0の時  申
あまりが1の時 酉
あまりが2の時 戌
あまりが3の時 亥
あまりが4の時 子
あまりが5の時 丑
あまりが6の時 寅
あまりが7の時 卯
あまりが8の時 辰
あまりが9の時 巳
あまりが10の時 午
あまりが11の時 未

Excelで関数を作る手順

干支を求める計算方法を確認したところで、実際にExcelで使えるようにしてみたいと思います。

関数をクリックします

Excelのリボンに「関数」はありますでしょうか?

f:id:komanaho:20161208091434p:plain

「開発」がない場合は、前回の記事で詳しく説明していますので、参考にしてくださいね。

nagaimono.hateblo.jp

コードの表示をクリックします

f:id:komanaho:20161212093856j:plain

メニューから「標準モジュール」を選びます

f:id:komanaho:20161212094210j:plain

 標準モジュールが追加されます

f:id:komanaho:20161212094459j:plain

コードを入力します

以下をコピペしちゃってくださいね! はてな記法だとコードに色が付くはずなんですが、VBAのせいかうまくいかない。見にくくてごめんなさい。
あと、本当はエラーチェックとか色々することがあるんですが省略してます。

コードを入れるときは、左側が「標準モジュール」の「Module1」が選ばれているのを確認してから入れてくださいね(「Module1」がグレーに網掛け表示されているはず)違うところに入れると後でエラーになるので注意しましょう。

Function GetEto(nen As Integer) As String

Select Case nen Mod 12
    Case 0
        GetEto = "申"
    Case 1
        GetEto = "酉"
    Case 2
        GetEto = "戌"
    Case 3
        GetEto = "亥"
    Case 4
        GetEto = "子"
    Case 5
        GetEto = "丑"
    Case 6
        GetEto = "寅"
    Case 7
        GetEto = "卯"
    Case 8
        GetEto = "辰"
    Case 9
        GetEto = "巳"
    Case 10
        GetEto = "午"
    Case 11
        GetEto = "未"
    Case Else
        GetEto = "エラー"
End Select

End Function

Excelに戻って試してみる

適当なセルに西暦4ケタを入力して、GetEto関数を別のセルに入力して、その西暦を引数に指定します。

f:id:komanaho:20161212102626j:plain

干支が出たら成功です。年を変えて試してみると楽しい♪

f:id:komanaho:20161212102916j:plain

終わりに

いかがでしたでしょうか?
意外と簡単にできて驚かれたのではないでしょうか?
是非、色々いじって遊んでみてくださいね。

今回は干支にしましたが、もし「誕生日を入れたら星座が表示されるようにしたいなぁ」と思われた方はプログラマに向いてます!
すっごい難しいですが、是非挑戦してみてください。

宿題:誕生日を入れたら星座を表示させる

コードの詳細については、次回以降、少しずつ解説していきますので、ご期待くださいね。それでは、また。


そろそろOffice365 solo はいかがですか? 2台のPCとタブレットにも入れられるし、常に最新バージョンが使えて便利です。

Microsoft Office 365 Solo (1年版) 購入特典活用ガイドPDF付き 12/31まで |オンラインコード版|Win/Mac対応
B00O2TXF8O