• 締切済み

事業所郵便番号をダウンロードしたら一部の地番が日付化して表示される

 事業所郵便番号をデータベース化するため、郵政公社のゆうびんホームページから事業所の個別郵便番号をDL、フォルダを解凍したところ、Excel形式のCSVファイルが表示されました。  このファイルを開いて見たところ、何と地番の一部が、「3月16日」や「Oct-42」のように日付表示となっているのです。  早速公社の郵便サービスセンターに質問したところ、多分上記の例の場合は「3-16」「10-42」が何らかの理由で日付表示になったのだろうとのことで、(応答者自身も)おかしいと思うから本社に聞いてみるとのことでした。(本社からは未回答です。)  何ともお粗末な話ですが、調べてみたところ、元の地番が「数字-数字」となっていて、左側の数字が1~12のものが日付表示に変わっているようでした。  それにすべてが○月○日となっているのならまだしも、例示のように欧文表示のものも多数混在し、しかも右側の数字が31以下の場合でも例えば「5月13日」でなく「May-13」となっているものもあって全く不統一なのです。  そこで質問ですが、この誤って表示された地番をすべて元どおり「数字-数字」に修正する最も簡単な方法(手順)又は計算式をお教えください。  注:全事業所数は2万件を超えています。  なお、参考までに付記しますと、郵便番号にも誤表示があり、ゼロから始まる北海道や東北の一部でゼロの部分が欠け、6桁の郵便番号となっていました。(この修正は簡単でしたが…。)

みんなの回答

回答No.4

> 直接テキスト文書として開く以外は正しい結果が出ない 直接テキスト文書とて開くことで正しく見える時点で郵政公社さんの責ではありません。利用者側の問題です。 http://www.post.japanpost.jp/zipcode/dl/readme.html の(4)に注意書きが書いてあります。 シートに何か書式設定があるかもしれないので、取り込むブックは「新規ブック」で実行して見て下さい。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1605375 のNo4氏の答を使用して見ては? ただし、ループの最深部の行 AC.Offset(i).Resize(, UBound(myArray) + 1).Value = myArray を AC.Offset(i).Resize(, UBound(myArray) + 1).Value = "'" & myArray として、強制的に「文字型」にする必要があるかも。 結果をぜひ教えてください。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1605375
doubt34
質問者

補足

 ご回答ありがとうございます。  実はこの問題は昨夜自分自身でいろいろ知恵を絞った結果、解決しております。  その方法は後述しますが、まずご回答の中で >シートに何か書式設定があるかもしれないので、取り込むブックは「新規ブック」で実行して見て下さい。  これは#3氏への補足に記入のとおり、そのままではどうしても一部が月日表示になります。  データ→外部データの取込み→テキストファイルのインポートも、ファイル→開くでテキストファイルを選択したのと同じで、これではダメなんです。拡張子の変更もムダでした。  そのほかテキストファイルの編集→置換え→すべて置換え(例えば「-」を「~」に)も最初試して見たのですが、Excelファイルに取り込んだあと、表示形式を文字列にしても、編集→置換え→すべて置換えで「~」を「-」に戻すと、そこで再び自動キャスト機能が働くのか、元の月日表示に戻ってしまいます。当初の質問はその段階で投稿したものです。  さて、問題解決の方法ですが、テキストファイルの編集→置換え→すべて置換えで「-」を「~」に変換するまでは前のとおりですが、そのファイルをExcelファイルに取り込んだ後、番地列(A列としておきます)のセルの文字列にすべてテキスト化する「‘」をつけました。  そしてA列の表示形式を文字列に変更し、その状態で編集→置換え→すべて置換えで「~」を「-」に戻しました。この段階で置換え対象となったセルはなぜか「‘」が消えてしまいますが、地番はすべて正しく表示されました。  次にB列を作業列とし、B1に =MID(A1,IF(LEFT(A1,1)="’",2,1),30)  と入力し、最下行までコピーしたところ、すべて正しく表示されました。  老化現象のせいか、テキスト化の「‘」を思い出すのが遅かったという私のお粗末の一席です。  なお、参考までに、C列にASC関数で全角英数を半角英数に変えて見ましたが、この結果もOKでした。  それからお示しの参考URLにあったWendy2さんのマクロは試しておりません。その理由は2か月ほど前、マクロ組立中に突然画面で「その機能はありません」としてCD-ROMの挿入を要求され、ドライブにROMを挿入したところ途中でハングアップ、以来マクロの登録が出来なくなったからです。(他にもシステムの不安定が原因と思えるエラーが頻発しております。)  ハングアップの原因をPCメーカーに数回問い合せ、同時にこのサイトでも質問したんですが、あらゆる方法を試しても解消せず、結局リカバリするしかないという結論になっておりまして、諸般の事情でまだそれが出来ていないのです。  最後に冒頭ご指摘の >直接テキスト文書とて開くことで正しく見える時点で郵政公社さんの責ではありません。利用者側の問題です。  については確かに仰るとおりかも知れません。郵政公社サイトの(4)の注意書を読んでなかったのも私のミスでしょう。  しかし#3氏への補足にも書いているとおり、私は担当者(最初はPCにうとい方が電話に出られたので、詳しい方に代わってもらいました。なお、サービス案内センターは北海道に一元化されております。)に公社の配慮不足ではないかと質問し、相手もそれを認め、本社に伝えると言ったのであのような表現をした訳です。  そのときのやりとりの中で、郵便番号データサイズの話も出ましたが、地域分も都道府県別だし、事業所も2万ちょっとだから、Excel形式のCSVファイルにするぐらいなら、直接Excelファイルにして地番が正しく表示されるように出来るはずだといったことに対しても、先方はそうですね、と同意を示しております。  私の思いこみだけであのような表現をしたわけでは決してないことをご理解ください。  末尾ですが、字数制限の関係でお礼欄でなく、制限数2倍の補足内容欄に記入したことをお許し下さい。ご回答心からお礼申し上げます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

●郵便番号ファイルではないが、本質問と類似した、CSVファイル読み込み時の意図どおりならないという質問は月に数回出ています。珍しい問題ではないですよ。 >何と地番の一部が、「3月16日・・・ 1セルのデータが12-5と入力すると、日付12月5日(それも今年の)になるのは、エクセルの 仕様で、エクセルを使い始めるとすぐ出くわす問題で、有名なものです。 >元の地番が「数字-数字」となっていて、左側の数字が1~12のものが日付表示に変わっているようでした。 はエクセルの仕様です。-のあと(日付部分が)この条件の時に限り、日付となる。 前後逆転も起こるようです。31-12->2005/12/31 月を表す前部が1-12月の12の範囲を超えると、32-1の例では、19XX年YY月(1日)になり、Jan-32のように1932年1月(1日)になります。 >例示のように欧文表示のものも多数混在 はこのケースです。 13-1の場合は逆転して(今年の)1月13日になります。 >、「3月16日」や「Oct-42」 「Oct-42」になるのは、上記のケースです。 >何ともお粗末な話ですが、調・・ 郵政公社の問題ではないでしょう。 >修正する最も簡単な方法 日付になったということは、値が1-2から38354 に変わってしまったということです。 38354は日付シリアル値ですが、この言葉を聴いたことがありますか。なければ早速勉強して ください。エクセルでは大事です。 それはありません。やり直しをすることです。 >郵便番号にも誤表示があり、ゼロから始まる北海道や東北の一部でゼロの部分が欠け、6桁の郵便番号となっていました これはエクセルとCSVファイル読み込みの際の仕様に関するもので、この関連の質問が時々出ます 郵政公社のミスではありません。 --- 拡張子をTXTに変えて、エクセルで読み込むと、テキストファイルウイザードが起動し、 項目ごとに書式を指定できますから、(そこで各列に当たる項目ごとに)書式を文字列に指定してください。 ---- 本質問を知らない人が読むと郵政公社が間違っているように取れるが、間違いでなく、エクセルの知識不足にある面があります。本件はエクセルの特殊な部分なので、無理もないかと思いますが、質問の表現のトーンには注意すべきと思います。

doubt34
質問者

補足

 今日朝から外出で今帰ってご回答を拝見しました。  折角のご回答ですが、字数制限で詳しく書けなかった可能性に思いを至されなかったのでしょうか。何か一方的な極めつけで極めて不愉快です。 >38354は日付シリアル値ですが、この言葉を聴いたことがありますか。なければ早速勉強……。  大変失礼なご指摘ですが、シリアル値も知らないでExcelを扱うほど私は初心者でもバカでもないつもりです。  私がまずやったことをかいつまんで説明しますと、最初は現れたExcel形式のCSVファイルをそのまま開きました。その結果最初の質問どおりです。これではだめだから次にやったのは、仰るとおり拡張子の変換(TXT)ですが、これでも結果は同じでダメ。  次にワードパッドを開き、ファイル→開く、で前記ファイルCSVファイルを指定して開きました。もちろんこれは正しい結果が現れます。  しかしこのままでは当初の目的であるExcelデータとしては使えないので、Excelの新規文書を開き、あらかじめ表示形式をすべて文字列として指定しておき、ファイル→開く→カンマ区切りで(ワードパッドで開き保存した前記)テキストファイルを開いてみましたが、やはり結果は同じです。  ファイルを開いた後も表示形式を再度文字列に指定してみたり、あるいは試みににユーザー定義を「m-d」にしてみたりしてももちろんダメです。  具体例で上げますと例えば代表的なもので次のようになります。 区分  正しい地番  テキストで開く  文字列に変換   表示形式m-d ○○○ 7587-2   Feb-87      2077167      2-1 △△△ 4600      4600       4600      8-4 ××× 14-7     7月14日      38547      7-14 □□□ 1-5      1月5日       38357     1-5 このような処理を重ねても直接テキスト文書として開く以外は正しい結果が出ないので、郵政公社に質問し、そもそもフォルダの中身がExcel形式のCSVファイルなら、地番が月日表示やシリアル値表示にならないよう措置すべきであり、それが駄目なら表示形式をすべて文字列にしたExcel文書ファイルをダウンロードさせるべきではないかと言った訳で、それに対して先方は確かに仰るとおりだと同意したのです。だから私はそのことをお粗末と言ったのです。  要するに私が聞きたいのは、テキスト文書では正しく表示される地番を、Excelファイル上で正しく読み込む方法、又は計算式等により元のデータを判断して正規データに戻す方法はないか、ということであって、それだけについて回答すればよいものを、 >エクセルの知識不足云々とか、……勉強してください。 などと余計な評言や優越的発言を付け加えられる必要がどこにあるのでしょうか。折角回答して下さるならもっと謙虚な姿勢でお願いしたいものです。

  • lone_lynx
  • ベストアンサー率41% (78/188)
回答No.2

セルの表示形式を「郵便番号」にしてみては? 「書式」「セル」「表示形式」「その他」「郵便番号」 です

doubt34
質問者

補足

 折角のご回答ですが、郵便番号のことを聞いているのではなく、地番が月日表示になることへの対処方法を聞いているのです。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 日付表示となっているのです。 よくある話です。 拡張子CSVのファイルをEXCELまかせにして開くからです。 電話番号の頭の0が飛ぶ、なども発生します。 すでに何がしかの加工をしているのでしょうが、あきらめて最初からやり直し。 一番てっとり早いのは、拡張子をCSVからTXTに変更して、ExcelからTEXTファイルとして開き、当該の列を「標準」としてではなく「文字列」で読めば良いでしょう。 過去問の#3さん回答の方法です。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=820240
doubt34
質問者

補足

 ご回答ありがとうございます。  仰ることは最初に実行済で、その結果が質問のとおりだったからお尋ねしたのです。  詳細は#3への補足をご覧いただけないでしょうか。

関連するQ&A