『日付の計算 何ヶ月か知りたい』(aya) 日付の引き算をしたいのです。 過去の参照を見るとdayとしての換算はあるようなのですが monthに換算したいのでお願いします。 いまひとつ、応用しきれませんでした。(1900/1となる) セルL1にyyyy/mm/dd - セルH5にyy/mm= 別シートリンク先mm L1を基準にH列(5,6,7・・・)の差を「○ヶ月」として知りたいです。 セル内を統一しなければならないなら セルL2にyy/mm - セルH5(H6,H7,H8・・・)にyy/mm= 別シートリンク先mm としてもいいと思っています。 よろしくお願いいたします。 ---- 表示形式とシリアル値 の問題かとも思いますが、 ポイントを捕捉できないので、 とりあえず、Excelヘルプで、 『日付と日付システムについて』 や 『2つの日付間の差分を計算する』 をご覧になってみてはいかがでしょう。 また、ライブラリの http://www.excel.studio-kazu.jp/lib/e1m/e1m.html  ↑もご参照ください。 (sin) ---- ヘルプを参照したところ 2つの日付間の差分を計算する =(YEAR(A4)-YEAR(A3))*12+MONTH(A4)-MONTH(A3) 異なる年の 2 つの日付間の月数を求める とありました。 実施したところ セルL2(yy.mm) - セルH5(yy.mm) =mm を目指して実施したところ '06.07 - '03.09 = 01 となりました。 また、 =DATEDIF(L2,H5,"mm") としたところ#NUM となりました。 L2には06.07 H5には03.09 と入力してあります。 うまくいきません。。。 (aya) ---- 日付(数値)として認識していないのではないでしょうか? L2の入力を 06/7/1 、 H5の入力を 03/9/1 とするといかがですか? (sin) ---- =DATEDIF(L2,H5,"mm")→#NAME となりました L2;2006/7/1 H5;2003/9/1 としてみました。 しかし、H列には約300ほどのデータがすでに「'yy.mm」の形で 入力されています。 (aya) ---- =DATEDIF(H5,L2,"m")では?      (ぷーのすけ) ---- 確認ですが、L列は「日付」として入力されていて H列は「文字」として “月(2桁).日(2桁)” で入力されているんですよね? ちなみにH列には西暦で何年から何年のものが入力されていますか? 全て2000年以降であれば空いた行に 5行目="20"&H5&".1" を入れフィルドラッグ。結果を値張り付けした後 メニューの データ→区切り位置→[次へ]→[次へ] 列のデータ形式を日付にして[完了] とすると、日付に変わると思うので H列に戻して引き算してみて下さい。 ※試行錯誤する時はコピーを取った上でやることをお薦めします。 (HANA) ---- =DATEDIF(H5,L2,"mm")→#name? となりました。 H列には2003年9月を03.09として始め 現在の2006年7月(06.07)と入力されています。 今後も2007,8,9・・・と随時データは追加していきます。 L2,H5にはユーザー定義としてyy/mmと表示しています。 ex)2006/7/1→「06/07」と表示 皆様、アドバイス本当にありがとうございます。 (aya) ---- 両方日付ですか・・・。 ちなみに ツール>アドイン>分析ツール にチェックは入ってますか? (HANA) ---- 衝突しました。 ぶーのすけさん や HANAさんと重複する点も多々ありますが、以下にそのまま貼り付けます。 >=DATEDIF(L2,H5,"mm")→#NAME > となりました > L2;2006/7/1 > H5;2003/9/1 まず、DATEDIF関数は、"mm"を月の表示と認識してくれないので、"m"とします。 また、DATEDIF(開始日,終了日,単位) ですから、=DATEDIF(H5,L2,"m") ですね。 L2とH5でどちらが小さい(古い)かも条件に入れるなら、 =DATEDIF(MIN(L2,H5),MAX(L2,H5),"m") とされたらいかがでしょう。 >しかし、H列には約300ほどのデータがすでに「'yy.mm」の形で入力されています。 仮にH1:H300に入力されているとすると、 I1セルに =H1&".1" と入力し、I100までコピーし、 I1:I100を選択してコピー → 形式を選択して貼付け-値にチェックを入れてOK。 そのままI1:I100を選択した状態で、【データ】-【区切り位置】-【次へ】-【次へ】-【日付】にチェックを入れ-OK。 これをH列に貼り付け直す。 出来ましたか? ここから追記しました。 日付や時間は、正しく入力しておかないと、後々色々と面倒になる! と考えた方が良いと思います。 正しく入力した上で、画面上(表示上)を見易くされる事をお勧めします。  ↓これもExcelヘルプの抜粋です。 検索ワード:『ワークシートのセルにデータを入力する』 ▼数値、文字列、日付および時刻を入力する ''日付'' 日付を入力するときは、スラッシュ(/)やハイフン(-)を使って区切ります。 たとえば、「2002/9/5」または「5-Sep-2002」と入力します。 現在の日付を入力するには、Ctrlキーを押しながら;(セミコロン)を押します。 (sin) ---- (HANAさん) ツール>アドイン>分析ツールにチェックは入っていました。 (sinさん) 日付の入力をしなおし 現在H列には「'yy.mm.01」という形で入力されています。 その後、=DATEDIF(H5,L2,"m") をやったところ #VALUE! と表示されています。 エラーメッセージ(検証)をみると =DATEDIF("03.09.1".38899".m") となっていました。 またご指摘のとおり 日付入力をyyyy/mm/ddで統一していこうと思うのですが その際、H列をどのように訂正したらよいですか? (aya) ---- 衝突しましたが、そのままの内容を貼り付けます。※追加された内容は見てます。 日付の入力と表示に関して、下記を参考にして下さい。良い説明とは言えないかも知れませんが。。。 計算に使用する日付は、日付形式で表示されている数値(シリアル値)です。 この件は、最初に書いてますが、ヘルプで【日付と日付システムについて】を再読ください。 また、下記の内容をご自分でも行い、確認して下さい。 A B   C D 1 2006/7/19  1  2006/7/19    1 2 '06/07/19 2  2006/7/19    1 3 06.07.19 2   #VALUE!   16 4 '06.07.19 2   #VALUE!   16 5 06.07.01 1  2006/7/19    1 ↑ ↑  ↑ ↑ 実際の入力 =TYPE(A1) =A1*1  =TYPE(C1) A列は、実際に入力した内容です。 ※但し、A5セルは、表示形式を【yy.mm."01"】として、『2006/7/19』と入力しています。 B・D列は、TYPE関数でA・C列の値のデータタイプを調べた戻り値です。 TYPE関数の戻り値:1=数値、2=文字列、・・・・16=エラー値 【TYPE関数のヘルプを参照ください。】 これにより、普通に計算される数値にするためには、入力時にyyyy/m/dの様に頭に『'』を付けずに 『/』で区切ったものだけです。(1・5行目) ※頭に『'』を付けると、文字列の入力となります。『1』と『'1』は、同じ数字の1でも、数値と文字列の違いがあります。 C列は、A列の値に1を掛ける事により、文字列の数字を数値の数字に置き換えています。(2行目) ※数値と見なせる文字列の数字は、Excel君が計算時に数値と見なしてくれます。例外はありますが・・・ エラー値『#VALUE!』は、1を掛けてもどう見ても文字なので計算できません。という事をエラーとして教えてくれています。 yy.mm.ddと思って入力しても、Excel君は、思うのは勝手だけど僕は文字としか見ませんよ!という事です。 また、C5は、A5の入力内容が2006/7/19なので、1を掛けても同じ2006/7/19となっています。 つまり、A5の06.07.01は、あくまでも表示内容であって、実際の値は2006/7/19という事です。 日付けとして認識できる正しい入力データになっていれば、y(年)とm(月)とd(日)を認識した表示ができます。 ここからが、本題・・・ >現在H列には「'yy.mm.01」という形で入力されています。 これは、文字列ですから、yyyy/mm/dd の形で再入力してみて下さい。 >その際、H列をどのように訂正したらよいですか? 既に入力済みのデータの事ですよね? 上でHANAさんや私の書き込んでいる方法(区切り位置)で、日付として認識できるデータに変換して下さい。 HANAさんの説明の方が、親切だったと思います。 (sin) とりあえず、ここまで。 不備があると思いますが、再チャレンジしてみて。 チョット追記、 . や , や " が、ごっちゃになってるので勝手に修正して書きますが、 =DATEDIF("03.09.1",38899,"m") で #VALUE! が表示されているという事ですよね? =DATEDIF("03/09/1",38899,"m")  とすれば(なれば) 34 が、求められます。 日付と見なせる文字列 03/09/1 から シリアル値38899(日付 2006/7/1)の月数です。  ---- H列を日付(シリアル値)に変えるのがいいと思いますが ('yy.mm.01 と言う形ではいっているのなら 作業列5行目=--("20"&REPLACE(REPLACE(H5,3,1,"/"),6,1,"/")) としても日付(シリアル値)に変更できますね) >=DATEDIF("03/09/1",38899,"m")  とすれば(なれば) 34 が、求められます。 と言うことなら、現在 >現在H列には「'yy.mm.01」という形で入力されています。 との事なので .→/ に置換でもできそうですね。 (これだとH列は文字のままですが) (HANA) ---- みなさま、本当にわかりやすく教えていただいてありがとうございました。 無事、処理できました。 欲をだせばなんですけど、、、 34を2.10(2年10ヶ月)と表示させることはできますか? (aya) ---- 上で、貼っているリンクの応用になりますね。 【全文検索】の検索結果を貼っておきます。 http://www.excel.studio-kazu.jp/cgi-bin/estindex/estseek2.cgi?phrase=%E4%BD%95%E5%B9%B4%E4%BD%95%E3%83%B6%E6%9C%88&perpage=10&attr=&order=&clip=-1 (sin) ---- すみません! ありがとうございました。 (aya)