Top

hiroyuki.tank.support.site

簡単!マクロ講座

第19回〜一か月前〜

「一か月前」ってなに?と思われるでしょうが,実務で「ちょうど一か月前の日を表示したい」なんてことがありますよね。
 これをマクロで実現してみましょう。
 セルA1に「8/13」と入力するとその年の「8月13日」が入力されるというのはエクセルならではの便利な点です。
 エクセルを使う人はもちろんご存じでしょうが,A1は見た目は「8月13日」ですが,「8月13日」という文字が入っているわけではありません。実際は「37481」という数値が入っています。それと,西暦表示だと「2002/8/13」となっています。
「37481」はシリアル値といって1900年1月1日を1とした数値です。2002年8月13日は1900年1月1日から37481日目ということになります。

 一か月前をマクロで算出するためにはいくつかの問題点を解決しなければなりません。
 まずいまある状況を分析し,問題点を考え,次にそれをどうしたら解決できるかを考えます。
 これが穴埋問題でもやった手順を書くという作業の前段の作業になります。

【状況の分析】
1.A1にはなにが入っているか。
2.これをなんらかの処理をして一か月前を計算する。
3.そのためになにをしたらよいか。

【問題点の洗い出し】
1.A1は見た目は「8月13日」だが,「8月13日」という文字が入っているわけではない。
2.A1に入っている値から一か月前をどうやったら計算できるか。

【解決策のための考察】
1.「37481」というシリアル値をつかうか?
2.「37481」数値から31を引くと1,3,5,7,8,10,12月は対応できる。
3.でもこれでは他の月はどうするか?
4.A1は見た目は「8月13日」でシリアル値は「37481」だが,日付は他の表示方法もあるはずだぞ!
5.数式バーをみると「2002/8/13」となっている。
6.これを年と月と日の3つに分けると月の部分だけが取り出せる。
7.年と月と日をそれぞれ抜き出して月だけ1引いて,その後でまた合わせると一か月前の日付が出るんじゃない!?

 いいアイデアが出てきました。これが問題点の洗い出しと解決策のための考察という重要な作業です。
 この講座ではマクロ講座と題してエクセルマクロやVBAプログラミングを説明していますが,ところどころで出てくる物事の考え方というものは何の作業でも共通することが多いものです。
 第18回で「こんなの必要なの?」と思った方も「損はありません」とお知らせしたように必ず役に立ちます。

 それでは,次に手順を自分で紙に書いてみてください。

| hiroyuki.tank.support.site.Top | このページのTop | マクロ講座目次 | 前回 | 次回 |