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

-広告-

解決済みの質問

エクセル2007のセルの書式設定について

エクセル2007のセルの書式設定について

標準で、2015/11/12と表示、数値でも、日付でも、文字列でも同じように2015/11/12と表示されるセルがあります。
これをきちんと日付として2015/11/12と表示させ、数値としても本来の42320と表示させたいです。

ご存知のかた教えてください。


標準で、2015/11/12と表示
数値でも、日付でも、文字列でも同じように2015/11/12と表示されるセルがあります。
これをきちんと日付として2015/11/12と表示させ、数値としても本来の42320と表示させたいです。

ご存知のかた教えてください。

投稿日時 - 2016-01-28 10:55:14

QNo.9118318

すぐに回答ほしいです

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

>標準で、2015/11/12と表示、数値でも、日付でも、文字列でも同じように2015/11/12と表示されるセルがあります。
そのセルの値は文字列になっています。
キーボードから入力するときにセルの表示形式が文字列になっていたり、先頭にシングルクォーティションを付けると入力された値は日付のシリアル値になりません。
後でそのセルの表示形式を変更しても文字列のままですから表示は変化しません。

>これをきちんと日付として2015/11/12と表示させ、数値としても本来の42320と表示させたいです。
対象のセルを選択して表示形式を標準に戻し、数式バーに表示されている内容をチェックしてください。
2015/11/12の先頭に'(シングルクォーティション)が付いているときは'を削除してEnterキーで確定すれば良いでしょう。
'が無いときは数式バーでマウスをクリックし、Enterキーで確定すれば日付のシリアル値に変ります。

投稿日時 - 2016-01-28 11:48:14

ANo.3

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

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

-広告-
-広告-

回答(5)

ANo.5

こんなことは、ふつう質問にならない事項と思う。気づいて訂正するから。
ーー
どういうことが起こってしまったのか、それを書いてないのは質問として不完全だと思う。
一旦、何かの拍子に、そのセルが(または同列他行セルのどれかが)文字列に設定されると
日付書式で入力したつもりでも、思うようにならない経験をしているのかもしれない。
他に12-23と入力すると、表示が12月23日となったりする。こういうことか?
エクセル標準では日付は 2016/12/3のような入力なのだが、これを守らない人が入るということか。
>日付として2015/11/12と表示させ、数値としても本来の42320と表示させたいです
この言い方がおかしい。正しく入力された日付のセルの値(区切りがスラッシュで、かつ暦として存在できる年、月、日の数字)は、日付シリアル値という正整数(1900年以来の経過日数。順序数)
がシステムでセットされ、それをユーザーが日付書式で設定して、日付に見せたり、数値に
見せたり(あまりないが、)できるということ。またエクセル関数の引数として使える。
2016/11/31 などは、暦として存在しないが,エラーとならずに文字列化するようだ。
その上から正しく2016/11/30と入れると、日付シリアル値になるようだ。
ーー
結局VBAででも使って、事後(ブックを開いた最初など)チェックするよりほかないのではないか。
セルの値が変わるイベントを捉えて、このチェックを行うことはできるが、わずらわしかも。
文字列化されたときは左詰めなどにされるので、気がつくといえばそうだが、見逃したものは、別途プログラムでも使って、訂正するほかないだろう。
ーー
完全化といわれると、自信はないが、例としてA1:A10を対象に事後チェックをやってみた
Sub test01()
For Each cl In Range("a1:A20")
If cl <> "" Then
cl.HorizontalAlignment = xlRight
If VarType(cl) <> 7 Then '日付タイプ '2016/12/4のようなもの(文字列)を予想
'--'2016/12/4のようなもの(ここでは、内科何かの拍子に、アポストロフィ付きの日付数字になってしまった的な文字列)を予想
MsgBox cl.Row & "not date"
clm = cl.Value '再入力
cl.Clear
cl.Value = clm
End If
'--日付ではありえない内容の年月日数字'2016/12/32のような例
If IsDate(cl) = False Then
MsgBox cl.Row & "not Date"
cl.ClearFormats
dt = InputBox("正しい日付入力")
cl.Value = dt
cl.NumberFormat = "yyyy/mm/dd"
cl.HorizontalAlignment = xlRight
End If
End If
Next
End Sub

投稿日時 - 2016-01-28 16:37:53

-広告-

ANo.4

 その様な現象が起きる原因の候補には幾つか御座いますので、下記のどれが該当する原因であるのかを御確認の上、対処された方が良いと思います。

 考えられる原因の1つ目としては、
2015/11/12
と入力した際に、セルの書式設定の表示形式が[文字列]となっていた事が原因で、入力された値が
42320
というシリアル値ではなく、
2015/11/12
という文字列データとなっている場合です。
 この場合、元々の値、即ち本来の値が
42320
ではなく、
2015/11/12
という文字列なのですから、後になってからセルの書式設定の表示形式を変更しても、本来の値である
2015/11/12
が表示されてしまうだけとなります。
 この場合の解決方法としては、セルの書式設定の表示形式を[標準]か又は[日付]に設定してから、そのセルをダブルクリックしてからキーボードの[Enter]キーを押す等といった方法で、
2015/11/12
という日付を再入力してやりますと、Excelに日付データとして認識されて、入力された値が
42320
というシリアル値に自動的に変換された上で、セルの表示形式に合わせて
2015/11/12
という日付が表示される様になります。
 或いは別の方法として、セルの書式設定の表示形式を[標準]か又は[日付]に設定してから、そのセルを含むセル範囲を選択した上で、Excelの置換機能を使用して
/
という文字を同じ
/
という文字に置換してやりますと、「/」を含んだ文字列が入力されているセルの値を入力し直したのと同じ事になりますので、セルをダブルクリックしてからキーボードの[Enter]キーを押す方法と同様に、Excelに日付データとして認識されて、入力された値が
42320
というシリアル値に自動的に変換された上で、セルの表示形式に合わせて
2015/11/12
という日付が表示される様になります。



 又、別の原因として考えられる事には、日付を入力した際に
2015/11/12
ではなく、
'2015/11/12
の様に、頭に「'」(シングルクォーテーション)を付けた形で入力してしまったのかも知れません。
 頭に「'」(シングルクォーテーション)を付けた形で入力しますと、Excelは入力されているデータを、先頭の「'」を除いた部分の文字列として扱う様になってしまうため、
42320
ではなく、
2015/11/12
という文字列なのですから、後になってからセルの書式設定の表示形式を変更しても、
2015/11/12
が表示されてしまうだけとなります。
 その場合、そのセルを選択した際に数式バー上に
2015/11/12
ではなく、
'2015/11/12
の様に、頭に「'」(シングルクォーテーション)を付けた形で表示されますので、この事が原因であるのかどうかを確認する事が出来ます。
 この場合の解決方法は、セルの書式設定の表示形式を[標準]か又は[日付]に設定してから、個々のセルごとに日付を入力し直すしか方法は御座いません。(置換機能では頭についている「'」を消す事は出来ません)



 又、別の原因として考えられる事には、日付を入力した際に
2015/11/12
ではなく、
 2015/11/12
の様に、頭に空白スペースを付けた形で入力してしまったのかも知れません。
 この場合、元々の値、即ち本来の値が
42320
ではなく、
 2015/11/12
という文字列なのですから、後になってからセルの書式設定の表示形式を変更しても、本来の値である
 2015/11/12
が表示されてしまうだけとなります。
 この場合の解決方法としては、セルの書式設定の表示形式を[標準]か又は[日付]に設定してから、
2015/11/12
という日付を再入力してやりますと、Excelに日付データとして認識されて、入力された値が
42320
というシリアル値に自動的に変換された上で、セルの表示形式に合わせて
2015/11/12
という日付が表示される様になります。
 或いは別の方法として、セルの書式設定の表示形式を[標準]か又は[日付]に設定してから、そのセルを含むセル範囲を選択した上で、Excelの置換機能を利用し、「検索する文字列」欄に空白スペースを1文字だけ入力し、「置換後の文字列」欄には何も入力されていない状態としてから、置換してやりますと、
2015/11/12
などといったという日付を入力し直したのと同じ事になりますので、Excelに日付データとして認識されて、入力された値が
42320
というシリアル値に自動的に変換された上で、セルの表示形式に合わせて
2015/11/12
という日付が表示される様になります。



 又、別の原因として考えられる事には、日付を入力した際に
2015/11/12
ではなく、
2015/11/12
という文字列の前後か、途中のどこかに、「印刷されない文字列」の類が付いた形で入力してしまったのかも知れません。
 この場合も入力されている値が、
42320
というシリアル値にはなっておらず、文字列データなのですから、後になってからセルの書式設定の表示形式を変更しても、本来の値である「印刷されない文字列」が付いた
2015/11/12
が表示されてしまうだけとなります。
 この場合の解決方法としては、セルの書式設定の表示形式を[標準]か又は[日付]に設定してから、
2015/11/12
という日付を再入力してやりますと、Excelに日付データとして認識されて、入力された値が
42320
というシリアル値に自動的に変換された上で、セルの表示形式に合わせて
2015/11/12
という日付が表示される様になります。
 或いは別の方法として、もし付いている余計な「印刷されない文字列」が何の文字であるのかが判っている場合には、セルの書式設定の表示形式を[標準]か又は[日付]に設定してから、そのセルを含むセル範囲を選択した上で、Excelの置換機能を利用し、「検索する文字列」欄にその「印刷されない文字列」を1文字だけ入力し、「置換後の文字列」欄には何も入力されていない状態としてから、置換してやりますと、
2015/11/12
などといったという日付を入力し直したのと同じ事になりますので、Excelに日付データとして認識されて、入力された値が
42320
というシリアル値に自動的に変換された上で、セルの表示形式に合わせて
2015/11/12
という日付が表示される様になります。



 又、別の原因として考えられる事には、そのセルには関数が入力されていて、返される値が日付データや数値データではなく、文字列データが返される様な関数となっていとなっている場合です。
 この場合、元々の値、即ち本来の値が
42320
ではなく、
2015/11/12
という文字列なのですから、後になってからセルの書式設定の表示形式を変更しても、本来の値である
2015/11/12
が表示されてしまうだけとなります。
 この場合の解決方法としては、そのセルに入力されている関数を文字列ではなくシリアル値を返す様な関数に訂正してやらなければなりません。
 そのセルに入力されている関数が、例えば

=IF(判定式,日付を求める関数,"")

という様な形式となっている場合には、「日付を求める関数」の部分を( )で括ってやった上で0を加算する(或いは1を乗算する)形式の関数である

=IF(判定式,(日付を求める関数)+0,"")

或いは

=IF(判定式,(日付を求める関数)*1,"")

という様な形式の関数に訂正してやれば良い事になります。

投稿日時 - 2016-01-28 14:00:33

ANo.2

セルの書式が標準の場合、日付を入力すると自動で日付表示になります。
シリアル値にしたいのでしたら、ユーザ定義書式で0を選択しておけばシリアル値になります。

投稿日時 - 2016-01-28 11:21:33

ANo.1

標準で、2015/11/12と表示されているセルのデータを’2015/11/12から2015/11/12に変更('を削除)してみてください。

投稿日時 - 2016-01-28 11:12:36

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-