[[20061220012020]] 『日付表示がうまくいきません』(ラーメン大好き) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付表示がうまくいきません』(ラーメン大好き)
エクセルの表でデータを取り込むと日付けが09/05/06となるべきところ(2006年9月5日)が、2009/05/06と表示されてしまいます。セルの書式設定を変更しても05/06/09となり、2009年と認識されてしまうのですが、どうすれば正しい表示なりますか。データを見てみると、真ん中(上の例では05)のデータが13以上だと自動的に日にちだと認識されて、09/13/06と正しい表示になります。どのようにすれば、全て正しい表示にすることができるでしょうか。

Excel2003、Windows XP Pro使用です。


 ◆「月/日/年」の表示がご希望なので、表示形式をユーザー定義で、 mm/dd/yy  としてください
 (Maron)

 >エクセルの表でデータを取り込むと日付けが09/05/06となるべきところ
 もしかして、元のデータは 09/05/06 というテキストファィルか何かじゃないですか?
 だとしたら、普通に取り込むだけではエクセルは勝手に2009年5月6日と解釈してしまいます。

 データ==>外部データの取り込み==>データの取り込み から目的のファイルを選択して、
 出できたウイザードで次へ、次へと進んだ3番目の画面で「列の表示形式」で日付を選択、
 表示形式として「M/D/Y」を選んで実行すると2006年9月5日と認識されます。
 (sato) 

 「データを取り込むと」という表現が気になります。
何をどのように取り込んでいるのでしょうか。
[変則的な日付形式文字列を日付(シリアル値)に変換する]
http://miyahorinn.fc2web.com/frame.html
上記はすでにシートに入力された文字列を変換する例ですが、
テキストファイルウィザードでも応用が利くはず。
(みやほりん)(-_∂)b

Maronさん、satoさん、みやほりんさん、回答ありがとうございました。

説明が不十分でまだ未解決です。データベースから抽出したCSVデータを開いたところ、日付データがおかしくなります。セルの書式設定を見たところ、OKの06/12/23は標準設定、NGの2012/09/06(本当は2006/12/09です)はユーザー設定のyyyy/mm/ddと設定されていました。元のデータベースを見る限り、大元のデータは問題なく、私のPCでそのCSVデータを開くと、ddが01-12の場合は後者の表示NGで、dd13-31の場合は前者の表示で正しく表示されるのです。EXCELの設定で自動的に変換されているように思いますが、そのような設定はありますでしょうか。よろしくお願いします。


 チョコっと、検索…(*^_^*)

 VBA マクロを使って、 Excel 2002 での CSV テキスト ファイルを変換すると、日付形式は正しくありません。
http://support.microsoft.com/kb/835718/ja

 Excel 2003 の CSV テキスト ファイルを変換するために、 VBA マクロが使うとき、日付の形式が間違っています。
http://support.microsoft.com/kb/911750/ja

 (Ohagi)

 satoさんの方法は試されましたか?
 或いは、どのように取り込んでいるのですかね?
 CSVを“開く”等で取り込んでいるなら、“外部データの取り込み”
 で、日付列の『列のデータ形式』を日付として取り込んでみて下さい。

 データベースから抽出する際に日付をyy/mm/ddで書き出すのではなく
 yyy/mm/ddで書き出すのが良いと思いますが。

 (hana)

OHAGIさん、hanaさん、どうもありがとうございました。satoさん、hanaさんの言うとおり、外部データ取り込みで表示させて、文字列で表記することはできました。

その後にNETWORKDAYS()の関数を使い、2つの日付から何日間後かを計算させているので、この表記だとVALUE表示になってしまします。もちろん2つの文字列をユーザー設定でMM/DD/YYにしてみたり、日付設定に変更してもVALUE表記のままで計算してくれないのですが、どう変更すればいいでしょうか。何度もすみませんがよろしくお願いします。


 >2つの文字列をユーザー設定でMM/DD/YYにしてみたり
日付の表示形式について根本的に誤解があるようですが、
MM/DD/YY は 2006/12/7 と数式バーに表示されているものを セル表示として 
12/07/06 とするものであって、 12/07/06 (数式バーで20012/7/6)と表示されて
いるものを2006/12/7 と認識させる機能ではありません。
表示形式を変更してもセルの内容までは変換されません。
 
また、satoさんは、“外部データの取り込み”で
>3番目の画面で「列の表示形式」で日付を選択、
>「列の表示形式」で日付を選択、 表示形式として「M/D/Y」を選んで実行
 
とアドバイスされていますので手順を確認してください。
(みやほりん)(-_∂)b


 衝突しちゃいました。
 みやほりんさんと同じ事ですが、そのまま載せておきます。
 以下、衝突前の文章。

 しまった、うっかり小文字の署名で投稿してますね・・・・。
 大文字の私と同一人物です。

 >外部データ取り込みで表示させて、文字列で表記することはできました。
 >2つの文字列をユーザー設定でMM/DD/YYにしてみたり、日付設定に変更しても
 この二つの行動に疑問が生じませんか?
 日付として使いたいなら、日付として取り込みます。
 ウィザードの3番目で設定する書式は、貴方がエクセル君に
 「この列はこの様な書式で日付が書かれています」
 と、教えるための物です。

 元のデータがどの様に書かれているのか確認して、それと同じ書式で取り込めばよいでしょう。
 日付として取り込めた後、セルの書式設定で目的の書式に変更して下さい。
 うまく行きませんか?

 (HANA)

 こんな感じでうまくいくかな?

 1) Alt + F11でVBEを起動
 2) [挿入]-[標準モジュール]でコードを貼り付け
 3) Alt + F11でエクセル画面に戻る

 セルに
 =DateConv(A1)

 Function DateConv(r As Range) As Date
 Dim myYear As Integer
 With CreateObject("VBScript.RegExp")
     .Pattern = "^(\d{1,2})/(\d{1,2})/(\d{2}|\d{4})$"
     myYear = Val(.execute(r.Text)(2))
     If Len(myYear) < 4 Then myYear = myYear + 2000
     DateConv = DateValue(.replace(r.Text,myYear & "/" & $2 & "/" & $1))
 End With
 End Function

みやほりんさん、HANAさん他の方、アドバイスいただきどうもありがとうございました。皆さんのアドバイス通り試しましたが、うまくいきませんでした。友達のPCで読み込んでもらいうまくいったので、また条件等で違うところなど、材料がわかったところで、再度ご質問させていただきます。

 コントロール→地域設定で地域の違いでは

どうもありがとうございました。解決しました。ご指摘いただいたように、地域オプションの設定で直りました。海外からのデータを読み込んでいました。コントロールパネル選択。地域のオプションで、日付のカスタマイズを選択。カレンダー設定を西暦(日本語)→西暦(英語)に変更。短い表示形式をYYYY/MM/DD→MM/DD/YYに変更して解決しました。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.