長いものには巻かれない

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

Excelで覚える簡単プログラミング。連載シリーズ続編!

If とSelect Case を取り上げます。宿題だった星座を求める関数のコードサンプル付きです。プログラミングはExcelから入るのがお勧め。

こんばんは。土日は子どもの世話で忙しいなほちゃんです。
月曜日になってホッとしていますが、もうすぐ冬休みなので憂鬱。
その前にクリスマスもあるし、正月もあるので、どよーん。
早く来い来い3学期。

お待たせしました!久々のExcelネタです。
前回は「繰り返し」を解説しましたので、今回は「条件分岐」編になります。
是非、Excelで試してみてくださいね!

前回のお話をまだ読んでない方は、こちらからご覧ください。

nagaimono.hateblo.jp

 今回は、こんなのを作りますよ!!

f:id:komanaho:20161219200853j:plain

質問の答えが2種類の時は、IF 文を使う

ExcelにはIF関数があるので、IFだけ使いたいのであれば、わざわざマクロを組む必要はありません。今回は、プログラミングの基本を説明するために IFを取り上げますので、あまり実用的ではないですが、ご了承ください。

さて、プログラミングでは状況に応じて処理を分けることが頻繁にあります。

例えば、性別によって異なる処理をさせたいとき、Excelでは、IFを使って次のように書きます(Excel では大文字・小文字のどちらで入力しても先頭だけ大文字に変換されます)

If 性別=男 Then
  ・・・男の場合の処理
Else
  ・・・女の場合の処理
End If

この書き方は、性別が男か女の2種類しかないことが前提になっています。

男か女以外の性別が想定されるのであれば、次のように書きます。

If 性別=男 Then
  ・・・男の場合の処理
Elseif 性別=女 Then
  ・・・女の場合の処理
Else
  ・・・男でも女でもない場合の処理
End If

条件が多い時は Select Case を使う

このように、3種類以上に分岐させたいときは、「Else If」を使って、条件をどんどん増やしていくことができますが、条件が増えれば増えるほど見にくくなってしまいます。そこで、Excel には、Select Case文が用意されています。

Slect Case  性別
 Case 男
  ・・・男の場合の処理
 Case 女
  ・・・女の場合の処理
 Case Else
  ・・・男でも女でもない場合の処理
End If

スッキリしましたね! プログラミングでは、なるべく見やすく書くことがバグを減らすポイントになります。

解説を省略しましたが、Select Case文は、関数のところで使いましたので、こちらもご参照ください。

nagaimono.hateblo.jp

実際に動かしてみよう!

ではExcelにコードを書いて動かしてみましょう。冒頭で紹介した「年齢を入れると、その年齢に応じたメッセージを表示させるプログラムです。

Excel を起動して、リボンから「開発」を選ぶ

リボンに「開発」がないときは、追加する方法を過去記事に書きましたので、そちらをご覧ください。

nagaimono.hateblo.jp

「コードの表示」をクリック

f:id:komanaho:20161212093856j:plain

標準モジュールを追加する

f:id:komanaho:20161212094210j:plain

標準モジュールにコードを入力

左側で「標準モジュール」の「Module1」が選ばれている状態で、右側にコードを入力します。コードはコピペでOKです。

f:id:komanaho:20161212094459j:plain

Sub ShowMessage()
    If Sheets(1).Range("A2").Value <= 30 Then
        MsgBox "若いですね!", vbInformation, "テスト"
    Else
        MsgBox "年寄りですね!", vbInformation, "テスト"
    End If
End Sub

※今回もコードを簡単にするため、エラーチェックなどは行ってませんが、ご了承ください。

ShowMessageはプログラムの名称です。Test とか Nenrei とか、何でもOKです。大文字小文字は区別されます。

Sub ShowMessage()

「Sheets(1)」はシートの左から1番目という意味です。前回は「Sheets("sheet1")」と書きました。この場合は、シートの名称を指定しています。
また、「Range("A2")」は「A2のセル」のことです。前回は「cells(1,1)」というように番号で指定しましたが、このような指定方法もあります。
「<= 30」は、入力された年齢が30歳以下という意味です。この30は適宜違う数字に置き換えてみてください。

If Sheets(1).Range("A2").Value <= 30 Then

 「MsgBox」は、Excelでメッセージを表示するための関数で、メッセージボックスと呼ばれるものです。引数(ひきすう)は3つ指定しています。(関数については、先ほどご紹介した過去記事をご参照くださいね)

引数1番目の「若いですね!」は表示するメッセージの内容。

引数2番目の「vbInformation」はメッセージボックスの種類。今回はただ情報を表示するためだけなので、このように指定しています。メッセージボックスには他に警告を出すものや、「はい」「いいえ」と答えを選ばせるようなものもあります。

引数3番目はメッセージボックスのタイトルに表示する言葉です。

MsgBox "若いですね!", vbInformation, "テスト"

 

Excelのメッセージボックス

Excelに戻って、ボタンを設定

今回は、このコードを実行するためのボタンを作ります。リボンで「開発」を選び、「挿入」の中から「フォームコントロール」の「ボタン」をクリックします。

f:id:komanaho:20161219215508j:plain

適当な場所でドラッグすると四角い枠が表示されます。マウスを離すと「マクロの登録」ダイアログボックスが表示されます。先ほど入力したプログラムの名前「ShowMessage」が表示されますので、クリックして選択し、OKで閉じます。

f:id:komanaho:20161219215550j:plain

ボタンの名前をドラッグするとカーソルが現れるので、ボタンの名前を「メッセージ表示」にします。

f:id:komanaho:20161219215656j:plain

A2セルをクリックし、適当な数字を入力して、このボタンをクリックしてください。メッセージが表示されれば成功です。メッセージはOKで閉じてください。

f:id:komanaho:20161219200853j:plain

星座名を表示する関数

さて、今回 Select Case を取り上げましたので、宿題「誕生日を入力すると星座を表示する関数を作ってみよう!」の回答です。色々やり方はあると思いますが、こんな感じでどうでしょう?

ちょっと難しいですね。

誕生日は年がマチマチなので、一律にするために、2016年に変換しています。その後、Select Case を使って、誕生日の範囲で星座を割り出しています。

Function GetSeiza(ymd As Date) As String
Dim y As String
Dim m As String
Dim d As String
Dim birthday As Date

y = "2016/"
m = Month(birthday) & "/"
d = Day(birthday)

birthday = y & m & d

Select Case True
    Case birthday >= "2016/3/21" And birthday <= "2016/4/20"
        GetSeiza = "牡羊座"
    Case birthday >= "2016/4/21" And birthday <= "2016/5/20"
        GetSeiza = "牡牛座"
    Case birthday >= "2016/5/21" And birthday <= "2016/6/21"
        GetSeiza = "双子座"
    Case birthday >= "2016/6/22" And birthday <= "2016/7/23"
        GetSeiza = "蟹座座"
    Case birthday >= "2016/7/24" And birthday <= "2016/8/23"
        GetSeiza = "獅子座"
    Case birthday >= "2016/8/24" And birthday <= "2016/9/23"
        GetSeiza = "乙女座"
    Case birthday >= "2016/9/24" And birthday <= "2016/10/23"
        GetSeiza = "天秤座"
    Case birthday >= "2016/10/24" And birthday <= "2016/11/22"
        GetSeiza = "蠍座"
    Case birthday >= "2016/11/23" And birthday <= "2016/12/22"
        GetSeiza = "射手座"
    Case birthday >= "2016/12/23" And birthday <= "2016/1/20"
        GetSeiza = "山羊座"
    Case birthday >= "2016/1/21" And birthday <= "2016/2/19"
        GetSeiza = "水瓶座"
    Case birthday >= "2016/2/20" And birthday <= "2016/3/20"
        GetSeiza = "魚座"
    Case Else
        GetSeiza = "星座なし"
End Select

End Function

Office のバージョンアップ検討中の方へ

ところで、今までなほちゃんは古いバージョンの Microsoft Office を使っていたのですが、このたび、ついにアップグレードしました!

なほちゃんは Access を使うので、当初は Office 365 Solo の導入を検討していましたが、Office 365 Solo は2台のPCにしかインストールできません。

どうしても3台以上必要なので、5台にインストールできる Office 365 Business を導入することにしました。月900円で5台使えるのは結構お得です。こちらには、Access はついていないので、Access は単体で購入しました。

Office 365 Business は、Amazon には売ってなくて(Amazon で売っているのは中国版なのでちょっと心配)マイクロソフトから購入するしかないのですが、ポイントサイトハピタスマイクロソフトのオンライショップを発見! ハピタス経由でマイクロソフトのオンライショップを利用すると3.6%ポイントがつきます(期間限定。通常は2.4%)

Officeのバージョンアップ検討中の方は是非。他にもネットショップを利用される方にはすごいお勧めです。ハピタスに登録されていない方は、以下から登録すると30ポイントつきますので、よろしく!

日々の生活にhappyをプラスする|ハピタス

Office 365 solo を購入される場合は Amazon ですね。12/31まで8%引きなので、こちらもどうぞ。

税金や年金、お金の仕組みを教育することは国の義務ではないだろうか

「何でも学校のせいにしたがる親っているよね。本来子どもの教育は親がするべきなのに」ハイ。確かにそのとおりです。でも家庭環境に左右されない教育環境を作るのは国の仕事です。国がそれをさぼれば格差が生まれます。

こんにちは。
土日はブログを書かないって決めたんですが、
出てきちゃいました。
はてなで読者登録した記事を読んでいると、書きたくなってきますね。
これを「はてなマジック」と呼びます。嘘です。
眠いのでちょっとハイになってます。

f:id:komanaho:20161217233741j:plain

 ※イラストはこちらからお借りしました

単純に親の問題だろう

 昨日のブログのブクマにコメントをいただきました。

f:id:komanaho:20161217234104j:plain

確かに、お小遣いはいくらにするか、とか、お小遣いで買い食いをしてはいけないとか、その程度のしつけは親がするべきでしょう。

でも、源泉徴収税額はどのように計算されるのか、とか、確定拠出型年金は何かとか、教えられる親がどれだけいるのでしょう。ちなみに私は教えられれません。すみません。

選挙権年齢を引き下げるのなら

選挙権年齢が18歳に引き下げられました。例えば、年金制度改革について、各党が色々な主張をしたとして、年金制度が今どうなっているのか知らない人たちは、どの主張を支持すれば良いのか判断できません。

学校を卒業したら進路を決めなければならないのに、所得税がいくらなのか、国税地方税がどのようにして決まるのか、個人事業と会社員とどちらが有利なのか分からないまま将来を考えなければならないなんて、ひどくないですか?

英語やプログラミングよりお金の知識

英語やプログラミングを小学生から学ばせようという話が出ていますが、お金の話はもっともっと根本的な知識です。生きていく上で絶対に必要じゃないですか?

しかも税金は国が徴収するんですから、なぜその金額を払わなければいけないのかをしっかり説明する義務があります。

日本版401Kって何さ?

厚生労働省が進めている確定拠出型年金制度というものがあります。

www.mhlw.go.jp

アメリカに401Kという似たような制度があって、それをマネっこして作ったので、別名で日本版401Kと呼ばれています。

確定拠出型年金制度は、日本の年金が行き詰ってきたので個人に責任をもって運用してもらおう、というもの。損が出てもあなたの運用のせいよって言って責任逃れする予定。これ、私は、とんでもないと思ってます。だって投資はプロでも失敗するんですよ。個人にできるはずないじゃないですか。

日本人は貯金が大好きな人種で、株式投資とか全然やってきませんでした。でも国は、それじゃあお金は増えないから、多少でもリスクをとって投資をしようと呼び掛けているんです。子ども版NISAだって税金が優遇される投資用の口座ですよね。

投資について学校は何の教育もしていない。親もそんな経験してこなかったかったから子どもに教えるなんて無理です。今までは投資なんてしなくても郵便貯金さえしておけば子どもの学資が貯められたんですから。でもこれからはそうはいかない。

まとめ

この分野は本当に苦手なのでうまくまとめられません。

でも、とにかく税金とか年金とか投資とかローンの金利とか消費者金融とかクレジットカードとか、社会には怖いものがたくさんあるので、そういうものを国が責任をもって教育すべき、というのがなほちゃんの考えであります。

とりあえず我が家では、これを教科書にする予定

ナニワ金融道(1) (サンエイムック) ムック – 2016/5/18 青木 雄二 (著)

ちょっと刺激が強いので、子どもが高校生になったら目につくところに置いとこうかな。

色々学べるので、まだ読んでない方は是非。お勧めです。新装版が出たんだね。

税の優遇制度を知らなくて400万円失った話

お金の話ってなぜかタブー視されていて、学校ではほとんど扱われないですよね。道徳とか学活とかで是非子どもたちに学ばせて欲しいんですが、そもそも先生たちが苦手分野なのかもしれない。あるいは国の戦略!?

おはようございます。いつもご訪問いただきありがとうございます。今朝は雪が舞っていて一段と寒くなりましたが、心は熱いなほちゃんです。

以前、土地を買ったらもっと高い値段で売れてびっくりな話を書きました。

nagaimono.hateblo.jp

今回は、その後日談です。不思議なことに、簡単に得たお金というものは手元に残らないものなんだなぁってつくづく思いました。

f:id:komanaho:20161216094202j:plain

※イラストはこちらのものをお借りしました

不動産の譲渡税が高くてびっくり

住宅を売った後、税金を計算したら400万円!だったと思います。確か。びっくりしました。

そもそも差し引ける経費があまりなかったんです。仲介手数料と印紙代と登記代ぐらいです。もちろん購入金額は引けますけど、上回った金額が大き過ぎて、税金も高額になりました。

関係ないけど、不動産屋さんていつも大きい金額を扱っているんですね。億単位なのかな。感覚がマヒしそうです。

慌てて、何か税の優遇制度はないかと探しました。売ってからじゃ遅いんですけどね。

マイホームを売ったときの特例

調べたら、こんなのが出てきました。

No.3302 マイホームを売ったときの特例|譲渡所得|国税庁

自分の家を売った時に利益が出ちゃったら、3,000万円まで控除できるという特例があるんです。家を建ててすぐに売却した場合は、建築費用がかかる割には中古価格になってしまうので、利益が出るなんてことはあり得ません。

でも、首都圏に昔から住んでいる古い家を売る場合、土地の価格が高いし、取得費用は無いに等しかったりするので、結構利益が出ると思います。

多分、この特例はそういう時のためのものなんでしょう。なほちゃんは税金のことは良く分からないので推測です。

住んでいないと、この特例は受けられない

マイホームを売却したときの特例ですから、住んでいなければこの特例は受けられません。注意書きに「この特例を受けることだけを目的として入居したと認められる家屋」は適用除外になるので注意が必要です。

すごく悔しかったのは、今回売却した家を購入したとき、住むかどうか迷った時期があったからです。その時は、その地域の子育て支援策が気に入らなかった、というだけで(子育て中の身としては、この理由は結構大きかったんですけど)その家は他人に貸して、自分たちは他の地域に家を借りて住むことにしたのでした。

自分の財産を守るためにお金の勉強は必要

結局、めぼしい税の優遇制度は見つけられなくて(あるわけない)泣く泣く400万円払いました。大きいお金が動くときは税理士さんに相談するべきだったと後悔しています。

今回の例は特殊ですが、ちょっとだけ税金や国の制度なんかを調べるうちに、知らないと搾取されるということがよく分かりました。学生の頃は「だって知らなかったから」で許されることも多かったのですが、社会人になると知らないでは済まなくなるんです。だったら最低限のことを義務教育で教えてくれよって思うんですけど。

例えば、確定申告。税務署の姿勢は「とりあえず取っとくから、おかしかったら言ってね」なんですよ。申告しなければ、多くとられていても返ってこないんです。面倒なので申告しないサラリーマンは多いと思いますが、税務署の思う壺です。逆に、個人事業主は、申告して税金を払うので有利です。

で、知っておいた方が良いと思うお金の知識ですが、

その1 簿記3級ぐらいはあった方が良い

中小企業診断士の勉強をしたことがあって、その資格は企業の財務分析ができるようにならないといけないんですが、これが超難しい。簿記はその前提になるので勉強しました。たまたまワープロコンクールに出た時の参加賞が日本マンパワーの簿記3級の通信講座だったので、それを使いました。簿記は勉強する人が多くて、良い書籍がたくさん市販されています。問題集を1冊やる程度で合格できるし、簡単な割りには一生役に立つので、とてもお得な資格だと思います。

その2 できればファイナンシャルプランナー

会社に勤めている人は雇用保険を払っていると思います。雇用保険の制度に教育訓練給付金というのがあります。

www.mhlw.go.jp

なほちゃんはこの制度を使ってファイナンシャルプランナーの通信教育を受けました。ファイナンシャルプランナーになる予定がなくても、お金の知識があれば人生有利になるのでお勧めです。

参考までに、オンラインで簿記やファイナンシャルプランナーの資格を学べる通信講座があったので、貼り付けときます。今どきは何でもネットで学べるので便利ですね。

=>「通勤講座」の詳細はコチラ!

 

今週は5日連続投稿できて楽しかったです。来週から繁忙期に入るので更新頻度は低くなりそうですが、がんばって書くので、また遊びに来てくださいね。

では、また!

困ったちゃんが増えている? 子育ては続くよどこまでも~♪

ニートとか引きこもりが増えているっていうけど、最近、実感してます。周囲でもたくさん聞くようになりました。うちにも謎の息子がいるので、決して他人事ではないです。

昨日のExcel記事はたくさんの方が読んでくれたみたいで、すごく嬉しかったです。「分かりやすい」と言ってもらえるのも、とても励みになります。これからもよろしくお願いします。でもExcelネタが続いたので、今回は子育てネタ。

f:id:komanaho:20161215091806j:plain

子どもが大きくなるほど心配も大きくなる

子どもが大きくなるほど心配も大きくなるって大学生の息子さんのいるお母さんがよく言ってます。うちの息子は中3ですが、すごくよく分かります。

今思えば、子どもが小さいころの悩みって小さかった。こんな感じ。

「夜なかなか寝ない」「オムツが取れない」「野菜を食べない」・・・

こういうことは、渦中にいると、すごい悩みなんだけど、成長するにつれて自然に解決していくことが多い。

では中3の息子を育てる親の悩みとは? たった一つ。「受験生なのに勉強をしない」これだけです。これ、私的には結構深刻なんですけど、例の大学生の息子さんを持つお母さんが言うには「そんな悩み、悩みのうちに入らないよ」って言います。

もっと大きくなった息子さんの悩みとは?

ケースその1 大学を辞めてうちに閉じこもっている

他の知り合いのおうちの話です。2年生で大学を辞めて実家に引きこもってしまったそうです。心配したお父さんが勉強会に連れてきてお会いしたんですが、大きなマスクで顔を隠して、誰とも話さず隅っこにいて、気がついたら帰ってしまっていました。ご両親はさぞ心配なことだろうと思いました。

ケースその2 高校生なのに子どもができた

知り合いに聞いた話ですが、結構あるらしいです。引きこもって結婚しないというのは心配ですが、早熟なのも心配です。親御さんが引き取って育てているという話も聞きます。相手のあることなので、両家での話し合いもあるのでしょう。うちの子がどこかの娘さんをはらませてしまったらどうしよう。これはこれで非常に心配です。

ケースその3 40代で家庭があるのに養鶏場を開きたい

うちのダンナも東京のサラリーマンから農家になるって言い出した時、義母は泣いて泣いて止めました。40代って、腹も出た中年なのに、母親にとってはいつまでも息子なんですねぇ。養鶏場を開きたいって言った方は知り合いの弟さんです。妻子もあって、動物なんて育てたことないのに、突然何を言い出すのかって、家族会議になっているそうです。

まとめ

いかがでしたでしょうか。うちの息子が勉強しないなんて、小さい悩みに思えてきました。いくつになっても子どもは子どもなんですね。

昔と比べて、就職して結婚して子どもを育ててっていう人生が普通じゃなくなっているのだから、親も常識にとらわれず、子どものやりたいようにやらせてあげないといけないのでしょう。

あ~、それにしても心配だ。

 

そろそろ準備を始めないと。1週間後にせまりましたね!
Amazon のクリスマス特集

 

 

プログラムの基本は「繰り返し」と「条件分岐」の二つだけ。Excelサンプルコード付き。

プログラミングはとってもシンプルです。だから奥が深い。細かい決まり事はたくさんあるけど、結局のところ「繰り返し」と「条件分岐」を組み合わせているだけです。

こんにちは。天気が悪いせいか、毎日パソコンに向かっているせいか、目の奥が痛いです。こんな時は暖かいタオルを目に乗せて休憩すると気持ち良いですね。

でも、ホットアイマスク を検索してみたら色々出てきましたが、使い捨ては高いし、USBタイプは焦げるとか書いてあるし、イマイチでした。

f:id:komanaho:20161214092500j:plain

プログラミング言語より何をしたいのかが大事

昔勤めていたソフトハウスに新人の男の子が入ってきたんですが、すぐに辞めてしまいました。理由は「C言語をやりたかったのにやらせてもらえない」からだとか。自分のキャリアを考えて、さっさと会社を見限るのは悪いことではないですが、なぜC言語をやりたいのかがはっきりしてなくて、この人大丈夫かな?と思いました。

なほちゃんはあんまりプログラミング言語にこだわりはなくて、やりたいことが簡単に実現できるのなら何を使ってもOKと思います。

業界では Excelマクロみたいな Visual Basic系のものをバカにしている感じがしないでもないですが、世の中、中小企業が9割を占めているわけですし、ちっちゃい会社はExcelAccess で十分業務改善できるし、それすらできていない会社の方が圧倒的に多くて、なのに騙されて何百万もするソフトを買わされてるケースを良く見かけます。

プログラミング言語って種類によって違うのか?

プログラミング言語も星の数ほどあります。「何それ、聞いたことないよ」っていうマイナーなのもたくさんあって、出向させられれば我がままも言えなし、現場で使われている言語を即効で覚えるということもあります。また、新しい言語がしょっちゅう生まれるので、古い言語にこだわっていると仕事がなくなる、ということもあります。

つまり、プログラマは、基本を覚えたら、あとは微妙なところを追加して覚えていくという姿勢じゃないとやっていけないということ。そして、言語によって、そんなに違うのか?というと、そうでもないです。

プログラミングの基本その1 「繰り返し」

まず、プログラミングの基本は、同じことを繰り返させること。ルールが決まっているのなら人間がやることもないでしょ、機械に自動化させましょう、という考え方です。(AIは別ね)

繰り返しで大事なのは「終了条件」。これを決めないと永遠に繰り返しが続きます。(無限ループ)終了条件には2つあって、次のどちらかです。

  • 繰り返す数を決める(例:10回繰り返したら終わり)
  • 条件が変わったら終わる(例:〇〇が××になったら終わり)

プログラミングの基本その2 「条件分岐」

条件分岐っていうと難しい感じがしますが、つまり、「どちらか選んでね」ということです。選ぶ対象が何個あるかで、書き方を変える場合があります。

  • 選ぶ対象が2つ(例:性別は男?女?)
  • 選ぶ対象が3つ以上(例:好きな食べ物は、肉?魚?野菜?)

Excelだとどう書くか?

繰り返しと条件分岐はプログラムの基本なので、書き方に多少の違いはあっても、どのプログラミング言語にも必ずあります。Excelを例に説明します。

リボンから開発を選ぶ

開発がない場合は、こちらの記事をご覧ください。

nagaimono.hateblo.jp

開発からコードの表示を選び、標準モジュールを追加

標準モジュールの追加の方法の記事はこちら。

nagaimono.hateblo.jp

標準モジュールに、以下のソースコードを貼り付けます

f:id:komanaho:20161214103806j:plain

ソースコードはこんな感じ。コピペしちゃってください。

Sub Kurikaeshi1()
Dim i As Integer

For i = 1 To 10
    Worksheets("Sheet1").Cells(i, 1).Value = i
Next

End Sub

コードの解説

関数のときは「Function」からスタートしましたが、値を返さなくて良いときは「Sub」で書きます。「Kurikaeshi1」は、このプログラムの名前です。

Sub プログラムの名前(引数)・・・・End Sub

「For i=1 to 10」は、Excelで、回数を指定して繰り返したいときの書き方。「i」が「1から始めて、10回繰り返す」という意味です。VBではNext の後ろに「i」を書くのが普通かな。なくても動くし、他の言語では書かないのが普通。

For スタート to 回数・・・・Next i

「WorkSheets("Sheet1").Cells(i,1).Value = i」はExcel特有の書き方で、「シート1」のセルに「i」という値をセットするという意味。「Cells()」のカッコの中はセルの位置で、座標になってます。左側が行、右側が列です。今回は右側が「1」なので、「A列」固定です。行は「i」なので、「1行目から10行目」まで値が入ることになります。

WorkSheets(シートの名前).Cells(行,列).Value = 入れたい値

実行するには?

コードの中にカーソルを置き、実行ボタンを押します。コードは最低限にしていて、エラーチェックとか全くしていないので、例えば「sheet1」がないとエラーになりますのでご注意ください。

f:id:komanaho:20161214105149j:plain

 こんな風になったら、成功!

f:id:komanaho:20161214111439j:plain

 

是非、コードを色々変えて遊んでみてくださいね。繰り返しを20回にしてみるとか、Cellsのカッコ内の「i」を列側にしてみるとか。両方「i」にしたらどうなるかな。

 

晴れてきたので、たまった洗濯物を片付けないと。他の繰り返しの方法や条件分岐については、また今度書きま~す。

 

 

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