advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 469 for EDATE (0.000 sec.)
[[20021011104716]]
#score: 9973
@digest: cd6fdf5a151911ec854d93603480f056
@id: 638
@mdate: 2003-04-29T06:44:51Z
@size: 4761
@type: text/plain
#keywords: 棄日 (31738), 存期 (24159), ヶ", (17052), 20021010 (15368), 数二 (12117), クク (9921), 廃棄 (8891), ルb1 (6698), 年", (5095), バン (5089), ア] (5084), ルc1 (4010), ヶ月 (3864), 『= (3160), edate (3083), 数部 (3002), 年10 (2758), 期間 (2638), 二桁 (2628), month (2559), ルa1 (2551), 月15 (2314), シニ (2078), 始日 (2076), 年」 (2018), ニア (1952), 表記 (1937), year (1628), クラ (1599), 月31 (1535), mid (1408), 小数 (1323)
『保存期間から廃棄日付を出す』(バンククラーク)
バンククラークと申します。 どうしても判らないことがあるので教えてください! 保存期間が1ヶ月、3ヶ月・・・・・・1年、3年など、バラバラの書類があり、列1に保存期間を 入力すれば、列2に2002/10/15日から数えて保存期間経過後の破棄日時が表記される、という表を作らねばならないのですが、 引用元の列1のセルには「1年」とか「6ヶ月」とか記入し、列2のセルには「2003/04/15」とか表記しなくてはなりません。 月と年が混在しており、下記のような計算式を作ったところ、列1が年の表記には対応できるのですが、月の場合は上手くいきません。ご指導お願いします。 例 セルA1 1年 セルB1 2003/10/15 セルB1のステータス・・・・・・MID(A1,1,1)*10000+20021015 どうすれば、セルA1に 6ヶ月と入れても1年と入れても、セルB1にきちんと 2002年10月15日からセルA1の期間を足した日付が出るようになるのでしょうか? よろしくお願いします。 ---- どういう計算で年数を10000倍しているのでしょうか? 教えてください。 (kazu) ---- バンククラークです。さっそくのお返事、ありがとうございます! 判り難い表現で申し訳ありませんでした。 セルB1の書式設定の表示設定を、ユーザー定義で「0000"/"00"/"00」としています。 そうすると、セルB1に20021010という数字を入力すれば、2002/10/10と反映します。 セルB1にMID(A1,1,1)*10000とすれば、セルA1「3年」と入力した場合、 頭の3だけ拾って、それを一万倍すると20021010+30000で、セルB1には20051010 という数字が飛んできて、ユーザー定義により2005/10/10と表記されるという 仕組みにしたのですが、これでは「6ヶ月」には対応できません。 その後、すこし変えてみました。 2002年10月15日をシリアル値で表記すると37544となるので、セルA1に入力するのは 「0.5年」とか、「3.0年」とかにして、MID(A1,1,3)*365+37544)をセルB1に飛ばし、 セルB2の書式設定を日付にすると、見事に2002年10月15日を基準に、保存期間を足して 廃棄日を表記することが出来ましたが、これでは割り切れない月数や、小数点が2桁以上に なると機能しません。ほとほと困り果てています。お願いいたします。 ---- セルA1に『1ヶ月』セルB1に『=today()』が入っているとき セルC1に『=YEAR(B1)&"/"&MONTH(B1)+MID(A1,1,1)&"/"&DAY(B1)』 と入力すると一見うまく行くのですが、足し算するので14月とかが出てきて しまいます。そこでセルC1を 『=IF(MONTH(B1)+MID(A1,1,1)>12,YEAR(B1)+1&"/"&MONTH(B1)+MID(A1,1,1)-12&"/"&DAY(B1),YEAR(B1)&"/"&MONTH(B1)+MID(A1,1,1)&"/"&DAY(B1))』 にすると少しうまく行きますが、10ヶ月11ヶ月の計算がおかしいことが見つかります。 そこでセルC1を 『=IF(MID(A1,2,1)="ヶ",IF(MONTH(B1)+MID(A1,1,1)>12,YEAR(B1)+1&"/"&MONTH(B1)+MID(A1,1,1)-12&"/"&DAY(B1),YEAR(B1)&"/"&MONTH(B1)+MID(A1,1,1)&"/"&DAY(B1)),IF(MONTH(B1)+MID(A1,1,2)>12,YEAR(B1)+1&"/"&MONTH(B1)+MID(A1,1,2)-12&"/"&DAY(B1),YEAR(B1)&"/"&MONTH(B1)+MID(A1,1,2)&"/"&DAY(B1)))』 にすれば、うまくゆきますが、これでもまだ、年の対応ができませんし、10月31日の 1ヶ月先が11月31日になってしまうなど問題が発生します。。すでに式が276文字に なってすぐに限界1024文字を迎えます。要するに数式ではかなり無理と言うことです。 私はユーザー関数で作るしかないと思います。 [シニア]さん!ヘルプ。何か良い知恵はありませんか? (kazu) ---- 古い関数のマニュアルを見たら、方法がありました。 EDATE(<開始日>,<月>) 開始日から起算して、指定した月だけ、前または後の日付に対するシリアル値を 計算します。 セルA1に『1ヶ月』セルB1に『=today()』セルC1に 『=IF(MID(A1,2,1)="年",EDATE(B1,MID(A1,1,1)*12),IF(MID(A1,2,1)="ヶ",EDATE(B1,MID(A1,1,1)),EDATE(B1,MID(A1,1,2))))』 でほぼOKだと思います。 (kazu) ---- 失敗失敗。 EDATE はアドインを追加する必要があります。EDATE が#NAME になる方は [ツール]メニュー→[アドイン]で[分析ツール]にチェックを入れてアドインを追加して 下さい。 (kazu) ------ A1セルに整数部が年で、小数二桁が月として入力する方法で設定してみました。 A1セルに3年は3、1ヶ月は0.01、2年3ヵ月は2.03と入力するとします。 A1の書式設定をユーザ定義で[ G/標準"(年/月)" ]とします。 B1に開始日として 2002/10/15 と入力します。 C1に =DATE(YEAR(B1)+INT(A1),MONTH(B1)+MOD(A1,1)*100,DAY(B1)) で廃棄日付が表示されます。 ※A1セル幅が狭いと小数二桁が四捨五入された表示になります。 このような設定で如何でしょうか? A1セルに既に11年、5年、11ヶ月等と入力されていて、開始日から指定期間後の廃棄日付は既に解決済みですが、 C1に =DATE(YEAR(B1)+IF(RIGHT(A1,1)="年",LEFT(A1,FIND("年",A1)-1),0),MONTH(B1)+IF(RIGHT(A1,1)="月",LEFT(A1,FIND("ヶ",A1)-1),0),DAY(B1)) としても、求められます。 (シニア) ---- [シニア]さんいつもいつもありがとうございます。 ひやーっ!。なるほど、年:整数部と月:小数部にわけますか、完全脱帽です。 (kazu) ---------------------------------------------------- kazuさん、シニアさん、どうもありがとうございました!さすがですね! エクセル関数って、定型どおりではないパターンになってくると、後は知識と感性の 両方が必要なんですね。 もっと精進します! (バンククラーク) ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/200210/20021011104716.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97004 documents and 608067 words.

訪問者:カウンタValid HTML 4.01 Transitional