ID登録せずに、無料で質問できる♪ 教えて!gooアプリ>>

エクセル関数にて、1年後の年月日の出し方を
教えてください。

例えば。。。 

セルA1        セルB1
平成15年10月15日 → 平成16年10月15日
           (関数設定したいセル)

宜しくお願いしますm(__)m

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

A 回答 (7件)

間違っていました。



y は 西暦で 和暦は e でした。


"gge年mm月dd日" や "ggee年mm月dd日" で やってみてください。
    • good
    • 0

Function After1Year(pStr) As String


After1Year = Format(DateAdd("yyyy", 1, pStr), "gggyy年mm月dd日")
End Function

もしくは、

Function After1Year(pStr) As String
After1Year = Format(DateAdd("yyyy", 1, pStr), "gggyyyy年m月d日")
End Function

で、どうでしょうか?


"ggg yyy mm dd" の桁数で調整してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございました>^_^<
さっそく試してみます。

お礼日時:2003/10/17 09:26

' 単に、こういう関数を作って、



Function After1Year(pStr) As String
After1Year = DateAdd("yyyy", 1, pStr)
End Function

' B1 に =After1Year(A1) としてはどうでしょうか?

' [ツール]-[マクロ]-[Visual Basic Editor]
' [挿入]-[標準モジュール] で追加してください。

この回答への補足

回答ありがとうございました>^_^<
申し訳ないんですが...
2002/10/15 → 平成15年10月15日への
表示の仕方を教えてください。
単純にセルの書式ではダメでした。

補足日時:2003/10/15 16:05
    • good
    • 0

ちょっと間違えました。



「平成12年2月29日」→「平成13年2月28日」
のパターンの数式は、

=DATE(YEAR(A1)+1,MONTH(A1),DAY(A1))-(TEXT(A1,"mmdd")="0229")

です。
回答No.3の数式、

=DATE(YEAR(A1+1)+1,MONTH(A1+1),DAY(A1+1))-1

だと、
「平成11年2月28日」→「平成12年2月29日」になってしまいますので。
    • good
    • 0

こんにちは。

maruru01です。

分析ツールが使用出来れば、

=EDATE(A1,12)

です。
分析ツールが使用出来なければ、

=DATE(YEAR(A1)+1,MONTH(A1),DAY(A1))

です。
ただし、A1が「平成12年2月29日」の場合は、「平成13年3月1日」を表示します。
もし、「平成13年2月28日」と表示したいなら、

=DATE(YEAR(A1+1)+1,MONTH(A1+1),DAY(A1+1))-1

にして下さい。
なお、閏年の2/29以外は、両数式とも同じになります。
ちなみに、最初のEDATE関数は、「平成13年2月28日」になります。

この回答への補足

回答ありがとございました>^_^<
やっぱり、うるう年まで計算させるのは
難しいのでしょうか??(>_<)

補足日時:2003/10/15 14:32
    • good
    • 0

=DATE(YEAR(A1)+1,MONTH(A1),DAY(A1))


で1年後が計算できます
    • good
    • 0

B1に =A1+366


ではだめですか?

この回答への補足

回答ありがとございました。
私も単純にそう思ったのですが、
これだと、うるう年なんかの場合
ずれてこないかと思ったのですが、
どうでしょ~か??(・・)

補足日時:2003/10/15 14:23
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

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

Qファイルメーカー 一ヵ月後の日付をだすには?

入力日、タイプ:日付に2005/8/5と手動でいれたら、
有効期限(タイプ:日付)に自動で2005/9/5というように、入力日から一ヵ月後の日付を出すにはどのような計算式をいれたらよいのでしょうか?

参考書に載っていた
Date(Month(入力日)+ 1 ; Day(入力日); Year(入力日)という式を使うと
2005/08/01 と打ち込むと、2005/9/9 とでてしまいます。
2005/12/30の場合は、2006/1/1と出ます。
どうしたら、よいか教えてください。

Aベストアンサー

---------------------------------------------------
If ( Month ( Date ( Month ( 入力日 ) + 1 ; Day ( 入力日 ) ; Year ( 入力日 ) ) ) > Month ( Date ( Month ( 入力日 ) + 1 ; 1 ; Year ( 入力日 ) ) )
;
Date ( Month ( 入力日 ) + 1 + 1 ; 0 ; Year ( 入力日 ) )
;
If(Day ( Date ( Month ( 入力日 ) ; Day ( 入力日 ) + 1 ; Year ( 入力日 ) ) ) = 1
;
Date ( Month ( 入力日 )+1+1 ; 0 ; Year ( 入力日 ) )
;
Date ( Month ( 入力日 ) + 1 ; Day ( 入力日 ) ; Year ( 入力日 ) ))
)
------------------------------------------------------
フィールドタイプは「計算」で結果は「日付」です。

私が過去に他の方の回答に使用した式です。コピペで使えます。
検証は適当ですのでご自分でどうぞ。

---------------------------------------------------
If ( Month ( Date ( Month ( 入力日 ) + 1 ; Day ( 入力日 ) ; Year ( 入力日 ) ) ) > Month ( Date ( Month ( 入力日 ) + 1 ; 1 ; Year ( 入力日 ) ) )
;
Date ( Month ( 入力日 ) + 1 + 1 ; 0 ; Year ( 入力日 ) )
;
If(Day ( Date ( Month ( 入力日 ) ; Day ( 入力日 ) + 1 ; Year ( 入力日 ) ) ) = 1
;
Date ( Month ( 入力日 )+1+1 ; 0 ; Year ( 入力日 ) )
;
Date ( Month ( 入力日 ) + 1 ; Day ( 入力日 ) ; Year ( 入力日 ) ))
)
------...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qエクセルで複数の条件を抽出し自動的に別シートに反映する方法を教えてください。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 井上 派遣 企画 29  未調整

◇シート2◇ ※部署が人事で移動時期が未調整の人のみ抽出
 A      B     C     D    F
1 氏名 役職 部署 年齢 移動時期 
2 高橋 役員 人事 50  未調整


補足
・元データ(シート1)はこれからもデータを追加するので
 その度、シート2、シート3もそれぞれ自動で反映されるようにした いです。

・マクロ、VBAは知識がないので
 関数で作成したいです。

・できるだけエラー(#N/Aなど)表示されないようにしたいです。

説明が不十分で伝わりにくいかと思いますが
よろしくお願いします。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 ...続きを読む

Aベストアンサー

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるため)
.Range("A1:E1").AutoFilter 'A1:E1にオートフィルタ設定
.Range("A1:E1").AutoFilter Field:=3, Criteria1:="=人事", Operator:=xlOr, Criteria2:="=企画" '左から3つ目のフィルタを"人事"と"企画"のOR条件で抽出
.Range("A1:E1").AutoFilter Field:=5, Criteria1:="未調整" '左から5つ目のフィルタを"未調整"で抽出
.Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") 'A1から最終セル範囲の可視セルをこのシートのA1以降に貼り付け
.AutoFilterMode = False 'オートフィルタ終了
End With 'Sheet1に対する記述おわり
End Sub

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるた...続きを読む

Q○年○月○日から起算して1年を経過した日

法律等の書きぶりで「○年○月○日から起算して1年を経過した日」と書いてあることありますが、
「平成23年4月1日から起算して1年を経過した日」の場合はいつになるのでしょうか?
平成24年3月31日? or 平成24年4月1日?

また、「~から起算して1年の日」と「~から起算して1年を経過した日」では日が変わってくるのでしょうか??

これらの解釈等が書いてある本等があれば併せて教えて下さい。

Aベストアンサー

> 「平成23年4月1日から起算して1年を経過した日」の場合はいつになるのでしょうか?
法律の条文であれば、平成24年4月1日が原則。
民民間などに見られる契約であれば平成24年4月2日が原則。
○法律の条文
民法140条で考えた場合、質問文の要旨である「○年○月○日」は、その日の午前0時から指定している事となる
 ⇒特に法律の施行に書かれている期限は、この点は暗黙の了解。
 ⇒法律の条文によっては解釈の通達が出ており、その場合には通達に従うので、この限りではない
その為、140条の『但し書き』が適用され、原則である「初日不算入」は適用されない。よって、第1日目は初日となり、1年(365日)に達するのは1年後の同月同日の前日、1年を経過した日は1年後の同月同日。
○一般的な契約書
特に起算日を断っていない場合、民法140条の原則が適用されて「初日不算入」となり、第1日目は契約締結日の翌日となる。
しかし、2月某日に契約を締結したが、契約書には『3月1日より適用』見たいな定めをしているのであれば、3月1日が第1日目となる。
http://www.minnpou-sousoku.com/140.html


尚、第143条は何なのかと言うと、年で考える場合であれば、365日の年もあるし366日の年もあるから、『日数ではなく年・年度で考えますよ~』と言う事です。すると、閏年の2月29日弐契約したらどうなるのか?4年後(400年に1回は閏年ではないけれど)でなければ2月29日が存在し無いので、29日が無い場合には2月28日で考える
http://www.minnpou-sousoku.com/143-1.html
http://www.minnpou-sousoku.com/143-2.html

説明が下手なので、文章中に有るURL先を参考にして下さい。

> 「平成23年4月1日から起算して1年を経過した日」の場合はいつになるのでしょうか?
法律の条文であれば、平成24年4月1日が原則。
民民間などに見られる契約であれば平成24年4月2日が原則。
○法律の条文
民法140条で考えた場合、質問文の要旨である「○年○月○日」は、その日の午前0時から指定している事となる
 ⇒特に法律の施行に書かれている期限は、この点は暗黙の了解。
 ⇒法律の条文によっては解釈の通達が出ており、その場合には通達に従うので、この限りではない
その為、140条の『但...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qプルダウンで選択すると隣のセルに自動で入力される方法

プルダウンで選択すると隣のセルに自動で入力される方法
エクセル2003でシート1に「会社名」と「住所」を一覧を作成。シート2でプルダウンで「会社名」を選択すると隣のセルに自動で「住所」が出るようにしたいのですが、何か良い方法(関数)はありますか。教えてください。宜しくお願いいたします。

Aベストアンサー

プルダウンで確定した値を使ってVLOOKUPで検索したら。

例えば、Sheet1のA1~B10に会社名と住所の一覧があって、
Sheet2のA1でプルダウンで会社名を選択した場合、
B2を
=VLOOKUP(A1,Sheet1!A1:B10,2,FALSE)
とすれば、会社名に対応した住所が表示されます。


人気Q&Aランキング