• ベストアンサー

日付から判別できる表を作りたいと思っているのですが…

年月日を入力すると、その年月日に応じて、データを出力できるソフトを探しています。 まず、年月日を入力すると、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、などというふ うにしたいのです。 こんなことができるソフトって、あるのでしょうか?

noname#110252
noname#110252

質問者が選んだベストアンサー

  • ベストアンサー
  • tokpy
  • ベストアンサー率47% (1313/2783)
回答No.4

#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"の部分も変更してください)とすれば,月を元にしての計算もできるはずです。

noname#110252
質問者

お礼

3度も回答していただき、ありがとうございました。ここでまとめて御礼とします。 ただ、上記(訂正分含む)のとおりにしてみたのですが、「#NAME?」と表示されたのですが…

その他の回答 (6)

  • tokpy
  • ベストアンサー率47% (1313/2783)
回答No.7

> ただ、上記(訂正分含む)のとおりにしてみたのですが、「#NAME?」と表示されたのですが… どこかの関数名を間違えているものと思われます。

noname#110252
質問者

お礼

ありがとうございました。 実を言いますと、CHOOSE関数を併用することで対処できました。 せっかく回答してくださったのに、申し訳ございませんでした。

  • tokpy
  • ベストアンサー率47% (1313/2783)
回答No.6

まだミスがありましたね。下記のように訂正してください。 ここでは,A1セルに経過日として「2006/4/11」,B1セルに基準日として「2006/4/1」が入っているとします。 適当なセルに  =A1-B1 と打てば,・・・

noname#110252
質問者

お礼

ありがとうございました。 気をつけてくださいね。

  • tokpy
  • ベストアンサー率47% (1313/2783)
回答No.5

ごめんなさい。ミスがありました。 誤:(3) B2セルの右下の■の部分を右へ数セルドラッグする(D2までドラッグしたとします)  ↓ 正:(3) A2セルの右下の■の部分を右へ数セルドラッグする(D2までドラッグしたとします)

noname#110252
質問者

お礼

訂正、ありがとうございました。

  • bullfrog
  • ベストアンサー率22% (302/1370)
回答No.3

年月日から月と日の値を抜き取って、VLOOKUP関数あたりをつかって月のデータを読みとり、日のデータでの計算結果を反映させた値を目的の場所に表示というあたりでしょうか。 数段階の計算が必要になるように思いますが、工夫をするとできるだろうと思います。

回答No.2

ExcelでIf~構文を用いれば良いのでは? 参照URL エクセル中級5:AND関数・ネスト

参考URL:
http://www.kenzo30.com/ex_kisotyu/ex_ks_tyukyu5.htm#ネスト関数(IF・AND関数)
noname#110252
質問者

お礼

回答ありがとうございました。 出したい関数がいくつかあるのと、日付からの計算式となるので、そこが少し難しいのですが…

  • tokpy
  • ベストアンサー率47% (1313/2783)
回答No.1

表計算ソフトで簡単にできそうです。 Microsoft Excel(有償)とか,Openoffice(フリー)のCalcなどを使えばいいと思います。 Openoffice http://ja.openoffice.org/

noname#110252
質問者

お礼

ありがとうございました。 では、やり方はどうすればいいでしょうか?

関連するQ&A

  • エクセルで西暦が異なる日付を月日の昇降順にしたい

    500人分の名前と生年月日が入力されたデータがあります。 このデータを西暦は関係なく1月から12月のお誕生日の順に 並び替えるにはどのようにしたらよいでしょうか。 例) Aさん 2005/9/2 Bさん 1960/10/25 Cさん 2014/2/10 Dさん 1990/5/7 ・ ・ ・ このデータを Cさん 2014/2/10 Dさん 1990/5/7 Aさん 2005/9/2 Bさん 1960/10/25 このように月日の昇降順に並び替えるには どのようにしたらよいでしょうか。 よろしくお願いします。

  • エクセルの日付について

    年月日のデータについて教えてください。 A列  B列 C列  2007  4  10 という様に、約5年分くらいの年・月・日が各セルに入っています。 D列に2007/4/10 と表記させたいのですが、どなたかご教授ください。

  • 異なったセルに入っている「年」「月」「日」データから年月日データを生成する関数は?

    お世話になります。 関数で以下のようなものを作りたいと思います。 セルA1,B1,C1にそれぞれ2008、8、4と「年」「月」「日」データが入っています。 D1に関数を入力することによってD1の内容を「2008/08/04」というように年月日のデータに換算したいのです。 次の条件を加えてください。 ●生成した年月日データが「日付としてありえないもの」にならないように、年、月、日の元データが入っているA1,B1,C1の内容については人為的チェックを行う。よって生成する関数側でそれらのチェックは不要。 (ただし、チェックも簡単にできるよ、という場合は盛り込んでください) ●生成されたデータを元にして曜日を求めたり、任意の2日を選んで経過日数を計算したり、和暦に変換するなどしたいので、「生成された結果そのものがすでに年月日型」であってほしい。 (よって単純に&マークで連結しただけではダメ・・・・ですよね) ●年月日の区切りは"/"記号で。月、日が一桁の場合は10の位に0を挿入していかなる日付も"/"記号含めて10桁で表記したい。 いただいたコメントには必ずお礼コメント差し上げます。 もっとも要望どおりの回答には必ずポイントを差し上げます。 よろしくお願いします。

  • エクセル 日付により数字をプラスしていく方法

    日付で、例えば有給日数を増やしていきたいのですが・・・・ 現在、勤務表をエクセルで作成しています。    A1   B1   C1   D1   6月11日 7日  7月20日{   }    ↑   ↑   ↑    ↑ A1今日の日付 B1有給のプラス日数 C1プラスされる日付 D1有給の残り日数又は、プラスされた日数 例)今、○○さんは有給日数残が2日です。7月20日になったら自動的に有給日数にプラスされて、9日にしたいのですが・・・ こんな具合にしたのですが、関数・マクロなどで作成できますか>?

  • 教えてください3

    初心者なのでわかりやすくお願いします。 生年月日と今日の日付を読み込み、生年月日から今日までの日数を計算して出力するプログラムを制御文を用いて作成せよ。 配列、ポインタは使用禁止とする。関数は用いてもよい。 うるう年とは4で割り切れかつ100で割り切れない年、及び400で割り切れる年はうるう年である。 ただし、 1.年月日は西暦とし、入力できる年月日は西暦1800年1月1日以降とする 2.年月日が正しい範囲内にないときは、入力データ誤りとみなしメッセージを出力して終了 3.生年月日が今日の日付より後のときも、誤りとみなし メッセージを出力して終了とすること。 <実行結果> ** 生年月日を入力してください ** 1985 2 4 ** 今日の日付を入力してください ** 2010 6 12 1985年2月4日から今日までの日数は 9259日です ちなみに西暦1年1月1日から今日までの日数は 733935日です さらに西暦1年1月1日から生年月日までの日数は 724676日です <実行結果> ** 生年月日を入力してください ** 12 3 4 ** 今日の日付を入力してください ** 123 4 5 ** 入力した年月日が正しい範囲内にありません  <実行結果> ** 生年月日を入力してください ** 1987 1 2 ** 今日の日付を入力してください ** 1800 1 1 ** 生年月日が今日の日付より後になっています  **

  • Excel 複数登録情報の直近日付を求める

    ■複数回入庫している同一商品の直近出庫日を求める数式を教えてください。  (商品コード別の出入庫経過日数を調べるため)  使用ソフト: Excel2007  【例】   1) 1月1日(B列)に商品コード「A100」が入庫   2) 1月10(E列)に商品コード「A100」を出庫   3) 2月1日(B列)に商品コード「A100」が入庫   4) F列に1月10日を表示   5) G列に経過日数を表示(=30日)  ▼行A1~G1  A列:注文番号  B列:入庫日  C列:商品コード  D列:商品名  E列:出庫日  F列:前回出庫日(出庫無="-")  G列:経過日数=入庫日-出庫日  行1: 注番,入庫日,商品コード,商品名,出庫日,前回出庫日,経過日数  行2: 0001,1/1,A100,"冷蔵庫",1/10,"-","-"  行3: 0002,1/2,B100,"テレビ",1/15,"-","-"  行4: 0003,1/3,C200,"洗濯機",1/25,"-","-"  行5: 0004,2/1,A100,"冷蔵庫",2/5,1/10,30"日"  行6: 0005,2/5,C200,"洗濯機",2/10,1/25,11"日" ●「F列」の日付を自動入力させたいのです。

  • 指定した日付から今日までの日数をもとめるには?

    指定した日が例えば平成8年3月25日で今日までの日数は =IIf(Format([年月日],"dd")>Format(Date(),"dd"),DateDiff("d",[年月日],Date())-1,DateDiff("d",[年月日],Date()))と入力して3249日というふうに求めることができたのですがこの逆で指定した日付から3249日後は何年何ヶ月何日経っているのかを知りたい場合はどのようなことをしたらいいのかわからないです。すいません教えて下さい。 同じような質問が以前にしてあったらごめんなさい。

  • Excelの時間計算(年・月・日 別々のセルで…)

    Excelの時間計算で悩んでいます。 2つの異なる日付(年、月、日別々のセルに入力したもの)の 日数の差を関数で表示させたいのですがうまく行きません。 例えば、 A列にスタート年、B列にスタート月、C列にスタート日、D列にエンド年、E列にエンド月、F列にエンド日を入力し G列にエンド年月日-スタート年月日の日数させたいと考えています。 +----A----B----C----D----E----F----G 1   2008      2      1   2008      2     28     24 G1にDATE(D1,E1,F1)-DATE(A1,B1,C1)の数値を表示させたいのです。 ひとつのセルに日付形式で年月日を持たせれば DATEIF関数で実現可能なのは判りましたが 運用上、年月日を別のセルにして管理したいと考えています。 どなたかお解りになる方、いらっしゃいませんでしょうか。

  • エクセルマクロ 日付を検索し入力

    エクセル2003マクロを使用して以下の事を行いたいと思っていますが、どのようなマクロを組んだらよいか分かりません。よろしくお願いします。 シート上部にある以下のデータを    A      B     C      D      E     1  日付 商品A 商品B 商品C  商品D 2  5/26    5     6     1       3    ←その日のデータ(毎日変わる) 入力ボタンを作成し、それを押すことにより        ↓ 6   5/1 7    ・ 8    ・ 9   5/26   5     6     1     3 10    ・  ↑日付が予め入力された表 上記のような、同一シート上の日付欄に入力される表を作りたいのですが、方法が分かりません。 その日のデータは、別シートに入力用フォームを作成し、飛ばしています。何人かの人間が入力するので、マクロで簡単に、行えるようにしたいと思います。よろしくお願いします。

  • 関数

    A1に開始年月日B1日数を入れるとC1に年月日と出、D1曜日、出る関数、B1は何日後です、

専門家に質問してみよう