『日付表示がうまくいきません』(ラーメン大好き) エクセルの表でデータを取り込むと日付けが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に変更して解決しました。