- ベストアンサー
日付から判別できる表を作りたいと思っているのですが…
年月日を入力すると、その年月日に応じて、データを出力できるソフトを探しています。 まず、年月日を入力すると、1月ならば1の欄にはA、2の欄にはB、3の欄にはC、4の欄にはD、5の欄にはA…と、2月ならば1の欄にはB、2の欄にはC、3の 欄にはD、4の欄にはA、5の欄にはB…と、入力した月に応じてデータを出力したいのです。 そして、年月日を入力すると、任意の日からの経過日数をある数で割ったあまりからもデータを出力したいです。たとえば、「2006年4月11日」と入力 した場合、2006年4月1日からの経過日数は11日ですので、たとえば11を5で割ると1余るので今日はB、11を6で割ると5余るから今日はE、などというふ うにしたいのです。 こんなことができるソフトって、あるのでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 詳しい話をするとややこしいので原理を説明します。 Excelにおいては,1900年1月1日を初めとして日付や時間は1日を1とする「シリアル値」というもので管理しています。ですから,日付同士を引くことによってその間の日数を計算することはできます。 > 2006年4月1日からの経過日数は11日です 厳密には10日です(^^)。 ここでは,A1セルに経過日として「2006/4/1」,B1セルに基準日として「2006/4/1」が入っているとします。 適当なセルに =B1-A1 と打てば,シリアル値の「10」となりますが,これは,「2006年4月1日午前0時00分」から「2006年4月11日午前0時00分」までは10日離れているということです。(シリアル値なので,日付と解釈されてそのままでは表示は「1900年1月10日」になってしまいますが,表示形式を指定すれば「10」と表示させることができます) シリアル値より月を返す関数は,month()です。例えば, =month("2006/4/1") とすると,結果は「4」になります。(日付を式の中で使う場合はダブルクオーテーションで囲ってください) あと,文字列の中から文字列を取り出す関数mid(),余りを返す関数mod(),そのセルの列数を返す関数colomn(),行数を返す関数row()などを用いると良いでしょう。例を挙げますので,この通りに打ってみて,後は適当に考えてみて下さい。 (1) A1セルに「06/4/11」,B1セルに「06/4/1」と打つ (2) A2セルに「=MID("BCDA",MOD($A$1-$B$1+ROW(B1)+COLUMN(B1),4)+1,1)」と打つ(ここからコピーすると簡単です) (3) B2セルの右下の■の部分を右へ数セルドラッグする(D2までドラッグしたとします) (4) そのまま(A2からD2までが選択された状態で)右下の■の部分を下へ数セルドラッグする すると, C D A B D A B C A B C D というような感じに並びます。その後,A1セルの値を「06/4/12」等に変更すると,日付にあわせてアルファベットが変化するはずです。 A2セルに入れた式の意味は, B1セルとA1セルの日付の経過日数を求める。 それに,現在のセルの位置を加えて,4で割った余りを求める。 そのままでは0~3になってしまうので,1~4に直すために1を足す MID()関数で文字列から1文字を取り出す というような感じになります。 この例は日付を元に計算していますが,$A$1の部分をmonth($A$1),$B$1をmonth($B$1),(それから適当に"BCDA"の部分も変更してください)とすれば,月を元にしての計算もできるはずです。
その他の回答 (6)
- tokpy
- ベストアンサー率47% (1313/2783)
> ただ、上記(訂正分含む)のとおりにしてみたのですが、「#NAME?」と表示されたのですが… どこかの関数名を間違えているものと思われます。
お礼
ありがとうございました。 実を言いますと、CHOOSE関数を併用することで対処できました。 せっかく回答してくださったのに、申し訳ございませんでした。
- tokpy
- ベストアンサー率47% (1313/2783)
まだミスがありましたね。下記のように訂正してください。 ここでは,A1セルに経過日として「2006/4/11」,B1セルに基準日として「2006/4/1」が入っているとします。 適当なセルに =A1-B1 と打てば,・・・
お礼
ありがとうございました。 気をつけてくださいね。
- tokpy
- ベストアンサー率47% (1313/2783)
ごめんなさい。ミスがありました。 誤:(3) B2セルの右下の■の部分を右へ数セルドラッグする(D2までドラッグしたとします) ↓ 正:(3) A2セルの右下の■の部分を右へ数セルドラッグする(D2までドラッグしたとします)
お礼
訂正、ありがとうございました。
- bullfrog
- ベストアンサー率22% (302/1370)
年月日から月と日の値を抜き取って、VLOOKUP関数あたりをつかって月のデータを読みとり、日のデータでの計算結果を反映させた値を目的の場所に表示というあたりでしょうか。 数段階の計算が必要になるように思いますが、工夫をするとできるだろうと思います。
- gokiburi_bun
- ベストアンサー率13% (10/76)
ExcelでIf~構文を用いれば良いのでは? 参照URL エクセル中級5:AND関数・ネスト
お礼
回答ありがとうございました。 出したい関数がいくつかあるのと、日付からの計算式となるので、そこが少し難しいのですが…
- tokpy
- ベストアンサー率47% (1313/2783)
表計算ソフトで簡単にできそうです。 Microsoft Excel(有償)とか,Openoffice(フリー)のCalcなどを使えばいいと思います。 Openoffice http://ja.openoffice.org/
お礼
ありがとうございました。 では、やり方はどうすればいいでしょうか?
お礼
3度も回答していただき、ありがとうございました。ここでまとめて御礼とします。 ただ、上記(訂正分含む)のとおりにしてみたのですが、「#NAME?」と表示されたのですが…