例えば、6/2から、23ヵ月後の日付を自動算出
する方法を教えて下さい。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

元データ6/2がどのような形式かに左右されますが・・・



例1)
A B C
1 2001 6 2 ←基準 年・月・日(数値)
2 1 2 29 ←経過 年・月・日(数値)
3 =DATE(A1+A2,B1+B2,C1+C2) ←数式(A3:C3を結合すると見易いです)
------------------------
例2)
A
1 2001/6/2 ←基準 年月日(日付型)
2 23 ←経過 月(数値)
3 ==DATE(YEAR(A1),MONTH(A1)+A2,DAY(A1)) ←数式
------------------------
    • good
    • 0
この回答へのお礼

アプリはエクセルでした。

即効解決!
ありがとうございましたー。

お礼日時:2001/06/02 21:28

補足・・・・#1の記載は


お使いのソフトや言語が記載無いまま
EXCELと思いこんで書いてしまいました。
EXCELではなければ、意味無しの回答です。

ついでに訂正
#1 例2)の数式の始めに「=」が余分に入って
しまいました!
=は1つでです。
    • good
    • 0

VBAだったら、DATEADD関数がありますよね。


dateadd("m",23,#2001/6/2#)
みたいな感じで使用します。
    • good
    • 0
この回答へのお礼

VBAもとっても参考になりました。
ありがとうございました。

お礼日時:2001/06/02 21:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q日付の編集(例えば2006/50を2006/2/19としたい)

例えば2006/50と表記されているデータを2006/2/19と表記したい場合、
どのような方法があるのでしょうか?

明日までに解決したいのですが、ご存知の方いらっしゃいましたら
どうかご教示くださいm(__)m

Aベストアンサー

こんにちは。
すみません、遅くなってしまいました。

(A1は06/50)

=DATE(2000*(LEFT(A1,2)-27<0)+LEFT(A1,2),1,MID(A1,FIND("/",A1)+1,6))

たぶん、こんな感じですね。
27というのは、昭和まで扱うという意味です。

最後の6 というのは、06/364 ←で、6文字が最高になるからです。
変わった式だという印象を受けると思います。

念のために、等号式は、文字列を演算をする限りは、数値になって比較できますが、
LEFT(A1,2)<27 は、比較できません。というか、文字列との比較になるので、必ず、LEFT関数のほうが大きくなってしまいます。

+LEFT(A1,2) も演算して数値になるとという原理が働いています。

Excelって不思議ですね。プログラムなどの常識の範囲とはちょっと違う計算のようです。

QAccess 日付の/を自動で入れる

お世話になります
日付DBが20090101になっているので一括で2009/01/01にそろえたいのですが、方法がわかりません
更新クエリだと思うのですが。。。
よろしくお願いします

Aベストアンサー

表示や印刷の形式だけを変更するなら、書式を@@@@/@@/@@にすればいいと思います。

実際にテーブル1の日付を変更する場合です。
ただし、20090101を2009/01/01に変更する関係上、元データは8文字で、データ型はフィールドサイズが10文字以上の文字列型だとします。
UPDATE テーブル1 SET 日付 = Format([日付],"@@@@/@@/@@")
8文字以外は変更しない場合は、
UPDATE テーブル1 SET 日付 = Format([日付],"@@@@/@@/@@") WHERE Len([日付])=8;

というのでどうでしょうか?

p.s.
@@@@/@@/@@は、@@@@\/@@\/@@とする必要があるかもしれません。

Q1週間後の日付を自動的に入力するには


1 発行年月日2008年12月1日
2 お支払い期限 1週間後
にしています。
A1に発行年月日を入力するとA2に自動的に1週間後の年月日を入力できる方法はないでしょうか?
よろしくお願いします。

Aベストアンサー

A2に【=A1+7】と式を入れれば良いと思います。

QACCESSで日付ごとに自動連番(日付+連番)する方法

ACCESSで日付ごとに自動連番(日付+連番)する方法

ACCESSとvba、共に初心者です。

ACCESS2003を使用しています。日付ごとに自動連番する方法が知りたくいろいろ調べていたところ過去ログ(http://oshiete.goo.ne.jp/qa/726921.html)のベストアンサーさんの回答にたどりつきました。
とりあえず勉強と思い紹介されている通りにテーブル作成からフォームのレコード移動時へのコード貼り付けまで一通り行ってみましたが、自動連番とならず同じ番号のままとなってしまいます。(日付はパソコンの日付更新時にちゃんと反映されています。)
自動連番されないのは何が原因なのでしょうか。どなたかご教授の程よろしくお願いします。


例)DATEが5月5日の場合のIDへの記載値
 0505001
 0505001←ここが001のまま0505002にしたい。
 0506001←日付が変われば0506(5月6日)に変わる。

以上、よろしくお願いいたします。

Aベストアンサー

No4 です。

すみません。もう1カ所、テキスト型の書き方に変えなければいけないところがありました。

> If IsNull(MaxID) Then
>   Me.ID.DefaultValue = AutoID & "001"
> Else
>   Me.ID.DefaultValue = AutoID & Format(Right(MaxID, 3) + 1, "000")
> End If

If IsNull(MaxID) Then
  Me.ID.DefaultValue = "'" & AutoID & "001" & "'"
Else
  Me.ID.DefaultValue = "'" & AutoID & Format(Right(MaxID, 3) + 1, "000") & "'"
End If

既定値に数値型で書き込んでいますから
結局、頭のゼロが失われています。

なお、No2 さんへの補足で

> 6.[自動採番月日TBLF]の[ID]プロパティの書式に0000000を記入(一桁月の場合、頭の0が消えて6桁表示となるため。)

とありますが、
書式は、見せる形だけで、実際の値は変わりません。
書式は削除してください。
問題を分かりにくくするだけです。

No4 です。

すみません。もう1カ所、テキスト型の書き方に変えなければいけないところがありました。

> If IsNull(MaxID) Then
>   Me.ID.DefaultValue = AutoID & "001"
> Else
>   Me.ID.DefaultValue = AutoID & Format(Right(MaxID, 3) + 1, "000")
> End If

If IsNull(MaxID) Then
  Me.ID.DefaultValue = "'" & AutoID & "001" & "'"
Else
  Me.ID.DefaultValue = "'" & AutoID & Format(Right(MaxID, 3) + 1, "000") & "'"
End If

既定値に数値型で書き込んでいますから
結局、頭のゼロ...続きを読む

Qyyyy/mm/ddの日付に一括変換するマクロ

[セルの書式設定] の [表示形式]が標準(日付ではない)で単なる文字列となっている「mm-dd-yyyy」や「mm/dd/yyyy」のデータをマクロで「yyyy/mm/dd」の日付データに一括変換するマクロを教えてください。

たとえば、日付データが列Aにある場合にはDATE関数で、
=DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2))
でも変換可能ですが、対象ファイルが多数、各ファイルにも対象の列が多数、そしてファイルの更新頻度も多いため、DATE関数を使用することは現実的ではない事情があります。
このためマクロを使用して処理させたいです。

添付のサンプルの例で一括変更するマクロを教えてください。
なお、Excelは2007を使用しています。

Aベストアンサー

マクロといっても日付のデータであることをいちいち判断することも容易ではありません。
むしろ日付に変化したいセルの範囲を選んでから「区切り位置」の機能を使って変換してはどうでしょう。
例えばA1セルからA100セルにデータがあるとしたらそれらの範囲を選択したのちに「ホーム」タブの「データ」から「区切り位置」をクリックします。
表示の画面でウィザードの1/3画面、2/3の画面で「次へ」をクリックして最後の画面では列のデータ形式の項で「日付」にチェックを付けたのちに右の窓では MDY を選択してから「完了」ボタンをクリックします。


このカテゴリの人気Q&Aランキング

おすすめ情報