- ベストアンサー
関数を使わないで日付の計算をしたいのですが。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
★最初に >関数を一切使わず計算式と場合分けのみで計算する方法ありますか? ↑ あります。というか関数で記述することを記述すればよいだけ。 汎用性も考えれば専用の関数か、日付操作ライブラリを自作して使いまわした方が 良いと思いますよ。 >今考えている方法は、地道に、ある基準1970年1月1日をシリアル値で0としそこから、 >今日までの日数を1月は31、2月は28にちなどを考えてを足していき、シリアル値を算出。 >そのシリアル値に+10した値を再び年月日曜日の形に戻す方法しか無いのかと考えています。 ↑ 私もこの方法しか思い浮かびません。 このときの注意点として『閏年』の判定、扱いをきちんと考えないと正確になりません。 表計算で有名な Excel について興味深い記事を見つけましたので読んで見て下さい。 http://pc.nikkeibp.co.jp/article/NPC/20070530/272938/→『DATEDIF関数の“受難” (第1回)』 ↑ 3ページ目です。 >10日ではなくて10000日だったらどんな感じになりますか? ↑ 加減算する日付を西暦1年1月1日を1としたシリアル値に変換して加算、減算とするしかないかな。 ・開始日を Y1/M1/D1 とすると days = ((Y1 * 365) + (Y1 / 4) - (Y1 / 400 * 3)) + FuncGetDays(Y1,M1,D1); days += 10000; ←加算 days -= 10000; ←減算 この days のシリアル値を年、月、日に変換します。 ※FuncGetDays() 関数は年月日から1月1日の日数を計算する関数です。 ※この関数の詳しい内容は下の『参考URL』をどうぞ。回答者No.2です。 ※そのたも参考になります。 ・以上。
その他の回答 (2)
- Hayashi_Trek
- ベストアンサー率44% (366/818)
10000日でも処理方法は変わりません。 1)単純に「日」に 10000を足す 2)その「日」の結果は、「月」に対して妥当か? 妥当ならそれが答 3)「日」から、その月の日数を引く 「月」をひとつ増やす 4)その「月」は妥当か? 妥当ならそれが答 5)月を1にして、年をひとつ増やす 7)2に戻る 8)終わり。
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
曜日が入力されるのであれば、曜日の処理は簡単ですね。 (そもそも、入力値は7種類しかない) 日付は 1)単純に「日」に 10を足す 2)その「日」の結果は、「月」に対して妥当か? (ここで、「その月は何日あるか」がわかっている*はず*であることに注意) 妥当ならそれが答 3)「日」から、その月の日数を引く 「月」をひとつ増やす 4)その「月」は妥当か? 妥当ならそれが答 5)月を1にして、年をひとつ増やす 6)終わり。
補足
ありがとうございます。曜日は簡単ですね。 2月25日の場合、年によってうるう年かどうか判定すればよいってことですね。 10日ではなくて10000日だったらどんな感じになりますか?
関連するQ&A
- エクセルで作業期間の日数を計算したい
エクセルについて質問です。 セルA1に開始日(例:2012/2/20) セルC1に終了日(例:2012/5/12)を入力し、この期間の日数(○○日間)を 計算する方法を教えて下さい。 更にこの期間で、「土日祝日を除いた日数(平日のみの日数)」と 「日曜祝日を除いた日数(平日+祝日でない土曜日の日数)」を算出する方法も教えて下さい。 ちなみに作業日数を計算するのに、DAYS360関数を使ってみましたが、 1年を360日として計算するので、正確な日数になりません。 また、曜日や休日が絡むとどんな関数を使えば良いのか全くわかりません。 よろしくお願いいたします。
- 締切済み
- その他MS Office製品
- エクセルの日付関数について
エクセルの日付関数についてです 基準日から計算して、日付を求めていますが、その求めた「月」だけを使用し別なシートで VLOOKUPを使うときの検索値にしたいのです。 その月を数値化する方法はありませんでしょうか うまく説明できませんがよろしくお願いします 今日の日付 →条件による該当日付 →該当日付の「月」を利用し検索する 2010.11.12 2011.2.11 2月を数字の2と置き換える方法 がありませんか?
- ベストアンサー
- オフィス系ソフト
- 日付の抽出
表計算ソフト(CalcとかExcel)を使って セルに、〇何年/△月/曜日 を入力すると 該当する日付を抽出したいのです。 (月と、曜日は複数) 1/1から12/31まで、日付を並べて、weekday関数を使うと 見えるのですが、必要な日だけ、画面内に収めたく 抽出する方法がわかると、助かります。
- ベストアンサー
- Excel(エクセル)
- 日付と日数を利用した計算式を教えて下さい
入力された日付から30日後の残日数を月初を基準として求める計算式を教えて下さい。 (30日後の日付は求められます。) 30日-先月登録日数
- 締切済み
- オフィス系ソフト
- エクセル 目的の日付の算出
目的の日付を算出したいのですが・・・ WORKDAY関数では土曜日が休日とされますよね?! 日曜だけを休日としたいのですが。 何か良い方法を教えて下さい。 例えば、 2008年4月1日の4営業日後= WORKDAY関数では 4/7 となりますが 4/5 となるような設定
- 締切済み
- その他(インターネット・Webサービス)
- 日付と曜日から、1週間前(7日前)の日付を算出するプログラム
ツェラーの公式を用いて、日付(年月日)から曜日を算出する方法があります。 例えばY年M月D日の曜日は、下式で求められます。 (Y + Y/4 - Y/100 + Y/400 + (13*M + 8)/5 + D) % 7 *但し、1月・2月は、前年の13月・14月とする。 *答えは0=日曜~6=土曜 これを応用して(別に応用しなくても良いんですが・・・)日付と曜日から、1週間前の同一曜日の日付を求めるプログラムを考えております。 例) 入力:2005年9月21日、水曜日 出力(解):2005年9月14日 この例は非常に簡単に求められますが、完全汎用型のプログラムを考えております。 しかし、なかなか良い知恵が出ません!! どなたかご教示頂けると助かります。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- EXCEL2003 日付関数で曜日を入れたい
宜しくお願いします。EXCEL2003です。 シート1 平成20年4月 シート2 平成20年5月 シート3 平成20年6月 … … 平成21年3月までのシート1~シート12まであります。 日付関数を使って曜日を入れたい。そして、土曜日・日曜日・休日のところのA列(日)B列(曜日)C列(摘要)の3列を塗りつぶしたいのですが出来ますか。宜しくお願いします。 シート1の A1に4月と入っています。 A2~A32まで1~30まで日にちが入っています。 B2~B32のところに平成20年4月の曜日を入れたい どのようにしたらよいのでしょうか。 シート2以降はシート1の複写です。ですから同じ位置に曜日が入るようになっています。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- 2つの日付の中間の日付 エクセル 関数
日付Aと日付Bの中間の日付を算出する関数を教えてください。 例:2013/01/01、2013/12/31の中間=2013/07/02 一度にたくさん計算できるようにエクセルに関数を組んでやりたいです。 よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- 3ヵ月後の日付を自動計算しようと思っているのですが、上手くいかなかった
3ヵ月後の日付を自動計算しようと思っているのですが、上手くいかなかったのでご質問させていただきます。 3ヵ月後の日付をエクセルで自動的に計算させようと思って、いろいろ試行錯誤しているのですが、上手くいかなかったので、ここに質問させていただきました。よろしくお願いいたします。 で、単純に3ヵ月後を計算させようと思い、ExcelのWorkday関数等を利用して、以下のような式を考えました。 =WORKDAY(DATE(YEAR(A1),MONTH(A1)+3,DAY(A1)-1),1,B1:B38) ここで、セルA1には基準日を入力し、セルB1からB38には国民の祝日を入力しています。 で、これでほとんどの場合で上手くいったんですが、例えば明日8月31日を基準日とした場合、3ヵ月後を、基準日が月末なので3ヵ月後も月末で揃える格好で日付を指定したいと考えており、エクセル関数の組み合わせでとまってしまいました。 つまり8月31日を基準日としたような場合は、求める日付として11月30日(11月30日が土日や祝日の場合は、更にさかのぼって11月29日だったり、11月28日が求める日付)となるようにしたいと考えております。 どなたか、お知恵を拝借できればと思っております。よろしくお願いいたします。
- ベストアンサー
- 財務・会計・経理
- 日付計算(滞留)のついてのご質問(EXCEL)
いつもお世話になっております。 今回お伺いしたいのは 日付計算の方法についてです。 例)2010/06 この年月と設定年月 例)2013/07 この二つがあったとします。 この場合、3年と1ヶ月経過しておりますので、 3.01という結果が返されます。 3は年数 小数点以下は月(11が最大値) DBにある沢山の年月からこの結果を表示させるには どのような関数を用いればよろしいでしょうか。 お知恵のある方どうぞよろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
お礼
いや~、参考になりました。ありがとうございました。