2009年7月4日土曜日

グラフの最小値・最大値をセルにリンクする

Excelのグラフで、目盛の最大値・最小値をセルの値にリンクさせたいときがあります。同様のことで困っている人も多いようで、ネット上で質問をよく見かけます。VBAを使え、という答えが多いのですが、便利なアドインがありましたので紹介します。

AutoChart Managerというやつです。

インストールや使い方は簡単ですが、ドキュメントが英語ですのですこし解説しておきます。

  1. 「The compressed (zipped) files」からファイルをダウンロードし、適当な場所に解凍します
  2. Excelで、[ツール]-[アドイン]を選択し、アドインダイアログで「参照」をクリックします
  3. 解凍した場所から「autochart.xla」を選択して「OK」をクリックし、アドインダイアログを閉じます
  4. 最小値・最大値を設定したいグラフ(グラフシート、シート内のグラフオブジェクトどちらもOK)を選択すると、メニューの中に「TM」というのが現れるので、「Automate Chart limits...」を選択します
  5. 「Primary axis」というのは「主軸」のことで、「Value」のところで設定すべき最小値・最大値が入っているセルを指定します(動的に変える必要がなければ空欄のままにします)
  6. 「Secondary axis」というのは「第2軸」のことで、対象のグラフが第2軸を利用している場合に表示されます
  7. 「散布図」を利用している場合、「Category」でX軸、「Value」でY軸の最小値・最大値をそれぞれ設定します

年齢の計算いろいろ

年齢を計算する方法をいろいろ紹介します。

まずは一般的な満年齢から。

誕生日:誕生日のシリアル値
年齢算出の基準日:「○○現在の年齢」という場合の「○○」のシリアル値

=DATEDIF(誕生日,年齢算出の基準日,"Y")

例:2000年1月1日生まれの人の2009年4月1日現在の年齢
=DATEDIF(DATE(2000,1,1),DATE(2009,4,1),"Y")

応用例:xx年yyヶ月zz日
=DATEDIF(誕生日,年齢算出の基準日,"Y") & "年"&DATEDIF(誕生日,年齢算出の基準日,"ym") & "ヶ月"&DATEDIF(誕生日,年齢算出の基準日,"md") & "日"

DATEDIF関数は、1つ目の引数と2つ目の引数の差を求める関数ですが、3つ目の引数を指定することによって求めたい差の形式を指定できます。
次のようなものがあります。
y:年単位の差
m:月単位の差
d:日単位の差
ym:1年未満の月数
md:1か月未満の日数
yd:1年未満の日数

満年齢の計算に限らず、入社以来の経過年月数を調べる時にも使えます。

つづいて、今日ではあまり使われなくなりましたが、「数え年」は以下のように計算します。

=DATEDIF(誕生日,DATE(YEAR(年齢算出の基準日),12,31),"Y")+1

韓国では満年齢より数え年のほうが一般的らしく、「満年齢で言わないと誤解される」と本人が自覚していない限り、数え年で年齢を教えてくれるのでいつも混乱します。

△年◆月の第○■曜日の日付 

もうすぐ海の日です。
海の日は7月の第3月曜日ですが、土日祝日に色を付けるような表を作っている場合、ちょっと面倒です。

△年◆月の第○■曜日の日付を計算させてみます。

△:2009など西暦の数値
◆:7など月の数値
○:3などの数値
■:日曜日=1, 月曜日土曜日=7

数式はこうなります。
=DATE(△,◆,1)+IF(■<WEEKDAY(DATE(△,◆,1)),7,0)+■-WEEKDAY(DATE(△,◆,1))+(○-1)*7