• ベストアンサー

【エクセル2000】郵便番号を入力すると住所を表示するようにしたい(過去質問確認済)

エクセル2000で郵便番号を入力すると住所を表示するようにしたいと考えています。 表示方法と現在の関数は次の通りです。 【入力シート】 A列:郵便番号入力セル B列:住所 全体(=C列&D列&E列) C列:住所 都道府県 (=VLOOKUP(A列,'データシート'!$A:$D,2,FALSE) D列:住所 市町村 (=VLOOKUP(A列,'データシート'!$A:$D,3,FALSE) E列:住所 番地以下 (=VLOOKUP(A列,'データシート'!$A:$D,4,FALSE) 【データシート】 A列:郵便番号 B列:住所 都道府県 C列:住所 市町村 D列:住所 番地以下 表示方法はこののやり方で問題がないのですが、 全国住所データが約12万件以上あるため、エクセルの列に入りきりません。 過去の質問を確認しましたが、希望の回答はありませんでした。 どうにかして検索データの量を12万件以上にすることは出来ませんか? シートを複数に分けるとか、VLOOKUP関数の検索列を複数に分けるなどでも結構です。 宜しくお願いします。

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

  • ベストアンサー
  • heizou
  • ベストアンサー率20% (3/15)
回答No.6

もう解決したでしょうか? 質問の最後の方に書いてあるようにシートを複数にすることで解決できると思います。 入力シートは (A列に郵便番号でとりあえず都道府県だけ) =IF(A1<"100-0000",VLOOKUP(A1,Sheet0!$A:$D,2,FALSE), IF(A1<"200-0000",VLOOKUP(A1,Sheet1!$A:$D,2,FALSE), IF(A1<"300-0000",VLOOKUP(A1,Sheet2!$A:$D,2,FALSE), IF(・・・・ IF(A1<"800-0000",VLOOKUP(A1,Sheet8!$A:$D,2,FALSE), VLOOKUP(A1,Sheet9!$A:$D,2,FALSE)・・・) データシート0は A列:郵便番号(000-0000~099-9999) B列:住所 都道府県 C列:住所 市町村 D列:住所 番地以下 データシート1は A列:郵便番号(100-0000~199-9999) B列:住所 都道府県 C列:住所 市町村 D列:住所 番地以下 (以下のデータシートは省略) これでもオーバーするようならデータシートを増やすことで対応できると思います。

nezumi-kozo
質問者

お礼

分かりやすいご説明をありがとうございます。 この方法でチャレンジしてみたいと思います。 ありがとうございました!

その他の回答 (5)

  • Fuu1962
  • ベストアンサー率29% (426/1425)
回答No.5

郵便番号変換ウィザードを利用しない理由はなんですか? 入力時に住所を表示できないからでしょうか? そうであれば、IMEの変換を利用した方がいいかと思います。 みなさんの回答をみると、いろいろむずかしそうなので。

参考URL:
http://www.microsoft.com/downloads/details.aspx?FamilyID=6f6af8ef-b9dd-4e21-9e63-af4a0ff4e7ce&DisplayLang=ja
nezumi-kozo
質問者

補足

No.4の方にも補足した通り、使用者が私以外の不特定多数であるため、 簡単に使用でき、希望に添ったレイアウトで作成する必要があるのです。 やはり、エクセルでは無理がありますか・・・。

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

こんなのをエクセルのVLOOKUP関数など使うのは無理があると思います。13万弱の行数と町名の入手、エクセルへの取り入れなど。 餅は餅屋に任せて、年賀状ソフトなどで入力し、CSVファイルでエクセルに取りこんだらどうですか。 ほかに私の場合、IMEのツールバーの「般」を「人名・地名」にして 例えば533-0007といれ変換を押すと漢字住所に変換されましたが。 あと住所から県・市その他の部分に分けるのは関数で可能でしょう。 以上は質問者のしたいことを勘違いしてますでしょうか。

nezumi-kozo
質問者

補足

やはり、エクセルでは無理がありますか・・・。 このデータは私が使用するのではなく、 作成を依頼されているだけなのです。 使用者はエクセル初心者、しかも不特定多数の為、 出来るだけ簡単で予算をかけずに出来る方法を検討しなければならないのです。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

12万件をVLookUpするのは結構大変かもしれませんね。 シートに取り込んだ郵便番号を更新していくのも大変でしょう。 いっそ、VBAで外部データファイルを検索したほうが効率的でしょう。 以下、IMEの機能のみを使った住所入力を作ってみました。IMEは定期的に更新されていたと思います。    A    B               C      D    E 1 郵便番号 郵便番号入力          補助住所入力 都道府県 市町村 2 047-0028 北海道小樽市相生町       4-4-4  北海道  小樽市相生町 3 334-0001 埼玉県鳩ヶ谷市桜町       1-2    埼玉県  鳩ヶ谷市桜町 4 229-0035 神奈川県相模原市相生      SSSS   神奈川県 相模原市相生 5 891-1301 鹿児島県鹿児島郡吉田町西佐多浦        鹿児島県 鹿児島郡吉田町西佐多浦    :          : 9 602-0001 京都府京都市上京区竹園町    大マンション 京都府  京都市上京区竹園町 上のように   A列 郵便番号表示(算式)   B列 郵便番号入力   C列 補助住所入力   D列 都道府県表示(算式)   E列 市町村表示 (算式) としてみます。B列に郵便番号を入力、C列には補助住所を入力します。 郵便番号は、IMEをONの状態(日本語入力オン)で全角で『047-0028』のように入力して変換します。 A2には 式 =IF(NOT(ISERROR(PHONETIC(B2))),ASC(PHONETIC(B2)),"") をセット。 D2には 式 =LEFT(B2,MAX(MIN(FIND({"都","道","府","県"},B2&"都道府県")),3)) をセット。 E2には 式 =MID(B2,MAX(MIN(FIND({"都","道","府","県"},B2&"都道府県")),3)+1,1000) をセット。 算式は行方向にコピーします。 質問の『番地以下』については定義が不明なので表示していません。 ご参考に。

nezumi-kozo
質問者

補足

ご丁寧なアドバイスをありがとうございました。 >VBAで外部データファイルを検索したほうが効率的でしょう。 お手数ですが、この方法の詳細も教えて頂けないでしょうか? マクロは全くの初心者です。

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

エクセルのシートに入れば処理できるのですよね。 例えば、郵便番号をエディターで開いて、5万件ずつ、エクセルのシートに貼り付ける。 こんな方法で如何です。

nezumi-kozo
質問者

補足

早速のご回答ありがとうございます。 >郵便番号をエディターで開いて、5万件ずつ、エクセルのシートに貼り付ける。 とは具体的にどのようにすれば良いのでしょうか? 申し訳ありませんが詳細な手順か参照URLを教えていただけると幸いです。

  • mi-si
  • ベストアンサー率35% (200/567)
回答No.1

郵便番号→住所変換データを外部データに置き、 VBAを使って、外部データ(csv形式)から引っ張ってくる方が良いのでは? ODBCドライバ経由でも直接検索プログラムを呼ぶ方法でもどちらでも出来ると思いますが。

nezumi-kozo
質問者

補足

早急なご回答ありがとうございます。 実はVBAに関しては全くの初心者なので、 詳細な入力方法か参照URLをご紹介いただければ幸いです。 (普段は関数で用が済んでしまうので・・・)

関連するQ&A