こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの日付

A2に「2019/10/00」と入力します
B1に「1」と入力します
B2に「2019/10/1」と表示させるには、
B2にどんな式をいれればいいですか?

念のため、エクセルを新規に開いた状態でB2にA2+B1としてもエラーになります。


最終的には、この出来上がったシートをcsvで保存しなおしをします。
B2はちゃんと日付の形式になっていることが条件です。
そうじゃないと別のソフトで読み込みができないので・・・。

どなたか教えてください。


オフィス2010です

投稿日時 - 2019-10-16 14:19:13

QNo.9667771

すぐに回答ほしいです

質問者が選んだベストアンサー

ANo.1です。

> B1に2019/10/00
> A2に1
>
> とはいっています。
>
> すみません。
> 再度、式をおしえてください。

ANo.1の式中のA2とB1を入れ替えてください。
ANo.2とANo.3の式も同様に入れ替えればお望みの値が出るはずです。

投稿日時 - 2019-10-16 18:27:04

補足

できました。ありがとうございます

A2が空白のときは、VALUEと表示されるのですが、
空白の時に、B1の式を表示させることはできますか?

投稿日時 - 2019-10-17 10:18:16

お礼

あ、すみません。
IFで条件付きにしたらできました。

これで解決しました
ありがとうございます。

投稿日時 - 2019-10-17 10:21:33

ANo.7

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(9)

ANo.9

B2: 数式→ =REPLACE(A2,9,2,B2)*1
 ̄ ̄書式→ yyyy/m/d

投稿日時 - 2019-10-16 21:32:53

お礼

回答7で解決しました
ありがとうございます

投稿日時 - 2019-10-17 10:22:33

ANo.8

>A2に「2019/10/00」と入力します
その値は日付になりません。(文字列として入力されます)

>B1に「1」と入力します
数値の1ですよね?

>B2に「2019/10/1」と表示させるには、
>B2にどんな式をいれればいいですか?
A2の文字列は日付のシリアル値(1900/1/1を1とした日数)に変換できませんのでB1を加算することができません。
A2の文字列を実在する日付の文字列に置き換えてシリアル値にしてからB1の値を加算し、B2の表示形式を「日付」に変更します。
=SUBSTITUTE(A2,"/00","/01")-1+B1

>念のため、エクセルを新規に開いた状態でB2にA2+B1としてもエラーになります。
A2とB1が未入力でB2に =A2+B1 と入力すると表示は 0 になるはずです。

>B2はちゃんと日付の形式になっていることが条件です。
数式では表示形式を指定できないので文字列の 2019/10/01 とするのであればTEXT関数で文字列に変換します。
=TEXT(DATEVALUE(SUBSTITUTE(A2,"/00","/01"))-1+B1,"yyyy/mm/dd")

投稿日時 - 2019-10-16 20:27:16

お礼

回答7で解決しました
ありがとうございます

投稿日時 - 2019-10-17 10:22:41

ANo.6

ちょっと待ってください。
ご質問の内容に、根源的な問題(エラー)があります。

>A2に「2019/10/00」と入力します

「2019/10/00」という日付は『現存しません』。
そのため、この入力時点では、セルに"2019/10/00"という「文字列値」が入ってしまっています。

もしこれが
A2「2019/10/1」(日付値、シリアル値で43739)
B1「1」
であったなら、単純にB2=A2+B1 で、シリアル値43740→「2019/10/2」と表示されるのです。※要日付書式設定

そこで、質問者さんのやりたかったことはどういうことなのか?
・文字列から日付要素(年・月)を取り出し、指定日の表示をする。
それとも単純に
・指定日の「何日後」を表示する。
だったのか。

後者であれば、上に書いたように単純に「=A2+B1 」とやればいいのですが。

前者である場合、文字列値から年・月要素の抽出、指定日の合成、存在しない日付だった場合の例外処理…という複雑な処理をしなければならないことになります。

----

さらにご質問には別の問題もあります。

>最終的には、この出来上がったシートをcsvで保存しなおしをします。

CSVで保存した時点で、設定した式はすべてなくなり、最終的な値だけがファイルに保存されます。

それを再度読み込むと、各セルに計算済みの値が入っただけのシートとなり、指定セルに別の値を入れても、一切計算してくれなくなります。

また、ExcelでCSVを読み込む場合、非常にいい加減な変換をします。
数値っぽいものは数値として読み込み、日付っぽいものは日付として変換されます。
ただし、先ほどもあったように、現存しない日付においては変換されず、文字列値として読み込まれます。

結果として、CSV保存して、再度読み込んだものは、元のExcelファイルとは大きく異なったものになってしまいます。

CSVはあくまでも、他アプリケーションに読み込ませるときの一時的な形式であり、Excelの表はExcelファイル形式で保存しなければ、セルに設定した計算式・書式・罫線等は保存されません。

----

もう一度、実現したいものの要件をよく考え直してみてください。

投稿日時 - 2019-10-16 18:20:32

お礼

回答7で解決しました
ありがとうございます

投稿日時 - 2019-10-17 10:22:53

ANo.5

A2に2019/9/30と入れることにすれば仕舞いでしょ。
なぜA2に、>「2019/10/00」と入力、に拘わらないといけないの?
2019年10月1日
2019年10月
2019/10/1
ーー
2019年9月30日
2019年9月
2019/9/30
ーー
ただし、数字は半角。このまま見た目の通り入力する。
上記の入力はみなすべて、2019年10月1日(または2019年9月30日)の日付シリアル値になる。
エクセル的に言えば、本来は文字列のデータとみなすべき入力が、日付に存在する内容だと、日付化されるようだ。それほど日付化の力は優先する。他に数字文字列にもその例がある。
それを対象にしてVATEVALUE関数の対象にするとエラーになる。
ーー
A2を2019年10月1日にしておいて=A2+B1-1とする手もある。
==
質問者はエクセルの「日付シリアル値」のことを知らないのかもしれない。
もしそうなら、Googleで「エクセル 日付シリアル値とは」で照会して
出てくる記事の数個を読んでみること。
これに沿った形で、エクセルの日付データを考えないと、エクセルを使う以上は、勝手なことはできない。
ーー
>シートをcsvで保存しなおしをします
この点はもともと難しい点を抱えているところと思う。たとえば、ゼロの問題とか、この日付の問題とか。初心者の質問も多い、ややこしいところ。
まずやってみて、失敗して、それからOKVAVEにでも改めてその点に絞って、質問することを勧める。その時には、、エクセルデータと表示形式、それに加えて完成してほしい形(CSVデータ)の例示を十分すること。

投稿日時 - 2019-10-16 18:13:10

お礼

回答7で解決しました
ありがとうございます

投稿日時 - 2019-10-17 10:23:00

ANo.4

ANo.1です。

> #VALUE!
> と、でました。
> 他のセルは標準でいいんですよね?

式か、参照セルが間違えているように思えます。
セルA2に文字列の 2019/10/00
セルB1に数値の 1
が入っているんですよね?
式はコピペしていますか?

投稿日時 - 2019-10-16 16:35:23

補足

ちがってました。

B1に2019/10/00
A2に1

とはいっています。

すみません。
再度、式をおしえてください。

投稿日時 - 2019-10-16 17:02:10

お礼

ありがとうございます

投稿日時 - 2019-10-17 10:23:18

ANo.3

=IFERROR(DATEVALUE(LEFT(A2,FIND("/",A2,FIND("/",A2,1)+1))& B1),LEFT(A2,FIND("/",A2,FIND("/",A2,1)+1))& B1 & " は日付ではありません")

としてみてください。

投稿日時 - 2019-10-16 16:09:10

補足

同じエラーがでます

投稿日時 - 2019-10-16 16:47:46

お礼

回答7で解決しました
ありがとうございます

投稿日時 - 2019-10-17 10:23:25

ANo.2

=DATE(LEFT(A2,4),MID(A2,6,2),B1)

投稿日時 - 2019-10-16 15:00:15

補足

回答1と同じエラーになります

投稿日時 - 2019-10-16 15:25:36

お礼

回答7で解決しました
ありがとうございます

投稿日時 - 2019-10-17 10:23:32

ANo.1

セルB2の書式を日付にして
=DATEVALUE(LEFT(A2,8)&B1)

投稿日時 - 2019-10-16 14:46:47

補足

#VALUE!

と、でました。

他のセルは標準でいいんですよね?

投稿日時 - 2019-10-16 15:02:42

お礼

ありがとうございます

投稿日時 - 2019-10-17 10:23:45

あなたにオススメの質問