• ベストアンサー

エクセルで住所録を分類する方法は

いつもお世話になっています。(エクセルは2002です)   A     B       C   D   E 1 郵便番号  住所      氏名  地区  備考 2 100   A県B市C町  C氏  E   G 3 100   A県B市D町  C氏  E   G 4 200   B県      D氏  F   H 上記のような表(シート1)があります。 シート2にA県、シート3にA県以外を郵便番号・住所・氏名・地区・備考を分けて、シート2の表をシート4にB市、シート5にB市以外に郵便番号・住所・氏名・地区・備考を分けて、シート4の表をシート6にC町、シート7にC町以外に郵便番号・住所・氏名・地区・備考を分ける方法を教えてください。 うまく説明できませんがよろしくお願いします

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

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

参考にコードを書いてみました。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。 出てきたコードウインドウに下記マクロをコピーして貼り付けます。 最初の3行のs県名、s市名、s町名の右辺に実際の県・市・町をセットします。 シートは最低7枚作成しておいて下さい。コードが長くなるので、シート数のチェック等はしていません。 ご参考に。 ここから ↓ Sub JyusyoFuriwake()   Const s県名 = "A県"    '*** 実際の県名をセットする ***   Const s市名 = "B市"    '*** 実際の市名をセットする ***   Const s町名 = "C町"    '*** 実際の町名をセットする ***   Dim 県名 As String, 市名 As String, 町名 As String   '各シートに分離する条件の住所を定義する   県名 = s県名 'Sheet2   市名 = 県名 & s市名 'Sheet4   町名 = 市名 & s町名 'Sheet6   Const wsNum = 7 'ワークシートの数   Const Koumoku = 5 '転記する項目数(E列=5)   Dim ws(7) As Worksheet 'ワークシート   Dim rw() As Long 'シート毎の書き込み可否   Dim rwT(7) As Long 'シート毎の書き込む行カウンタ   Dim w As Integer 'ワークシートカウンタ   Dim r As Long, c As Integer '行カウンタ、列カウンタ   For w = 1 To wsNum     Set ws(w) = Worksheets("Sheet" & w) 'ワークシートを定義する     If w >= 2 Then 'Sheet2~Sheet7の処理       ws(w).Cells.ClearContents '一応クリア       For c = 1 To Koumoku         ws(w).Cells(1, c) = ws(1).Cells(1, c) '表題をセットする       Next     End If   Next   ws(1).Activate   Dim 住所 As String '読み込んだ住所   Dim wsNo As Integer '書き込むシート番号   For r = 2 To Range("A65536").End(xlUp).Row     住所 = ws(1).Cells(r, 2)     ReDim rw(7) As Long 'シート毎の行カウンタ     If Left(住所, Len(県名)) = 県名 Then       rw(2) = r: rwT(2) = rwT(2) + 1 'シート2       If Left(住所, Len(市名)) = 市名 Then         rw(4) = r: rwT(4) = rwT(4) + 1 'シート4         If Left(住所, Len(町名)) = 町名 Then           rw(6) = r: rwT(6) = rwT(6) + 1 'シート6         Else           rw(7) = r: rwT(7) = rwT(7) + 1 'シート7         End If       Else         rw(5) = r: rwT(5) = rwT(5) + 1 'シート5       End If     Else       rw(3) = r: rwT(3) = rwT(3) + 1 'シート3     End If     'シートに書き込む     For w = 2 To wsNum       If rw(w) > 0 Then         For c = 1 To Koumoku           ws(w).Cells(rwT(w) + 1, c) = ws(1).Cells(r, c)         Next       End If     Next   Next   MsgBox "処理が終わりました。" End Sub

m-happy-t
質問者

お礼

思っていたように出来ました。 いつも、ありがとうございます。 これからもよろしくお願いします

その他の回答 (1)

  • comv
  • ベストアンサー率52% (322/612)
回答No.1

こんばんは! ご希望の処理方法が 数式でなのかVBAでか直接操作でなのか不明ですが 直接作業での方法を1例 ・シート2に以下のように記載    A  1 住所  2 A県*  3  4  ・シート2 A4を選択 ・データ フィルタ フィルタオプションの設定  抽出先   指定した範囲 をチェック  リスト範囲 シート1の項目を含む全体範囲を選択  検索条件  A1:A2を選択  抽出範囲  A4を選択  OK 以下同様の作業 シート3 A2 の条件記載 <>A県* シート4 A2 の条件記載 *B市* シート5 A2 の条件記載 <>*B市* シート6 A2 の条件記載 *C町* シート7 A2 の条件記載 <>*C町* シート4以降もシート1を対象として抽出する場合 シート4    A   B  1 住所  住所  2 A県* *B市*  3  4  検索条件範囲 A1:B2 とすればOKです 同様に  シート5では A県*  <>*B市*  シート6では条件が3つになり    A    B    C  1 住所   住所   住所  2 A県*  *B市*  *C町*  シート7では A県*  *B市*  <>*C町* となります。

m-happy-t
質問者

お礼

ありがとうございました。

m-happy-t
質問者

補足

住所録の件数が増えていくので、もし出来るのであれば、自動処理でお願いします。 間違っていたらごめんなさい、自動処理でしたらVBAですよね。関数でも出来るのかな? VBAは、始めたばかりなので、VBAの記述もお願いします。

関連するQ&A

  • エクセル住所録の組み換え方

    『エクセル』の住所録に関する質問2件です。よろしくお願いいたします。 <質問1> 住所が市区町村から入力されている都道府県別の複数のシートにあります。市区町村のセルに都道府県を加えて、「○○県△△市××」というセルにし、複数のシートをひとつの表にまとめたいのですが、効率が良いやり方を教えてください。 <質問2> エクセル2行で1項目をあらわしている表があります。たとえば、A1=会員番号、A2=氏名、B1=電話番号、B2=住所、ということです。 これを、1行に置き換えたいのですが、良い方法をおしえてください。 A1=会員番号、B1=氏名、C1=電話番号、D1=住所、ということです。 異常、よろしくお願いします。

  • Excelによる住所録作成について

    どなたか教えてください。いろいろと調べましたが分かりませんでした。 Sheet1(C列は空欄)・Sheet2を用意します。 Sheet1 B列の住所にSheet2の市名が含まれていた場合、C列に東部・西部・南部を返したいと思います。 どのような関数・やり方がありますでしょうか? ご教示願います。 Sheet1 A B     C  社名  住所    エリア 1 ○○(株) A県A市X町 東部 2 □□(株) A県E市Y町 西部 3 (有)△△ A県I市Z町 南部 4 (有)○○ A県B市J町 東部 Sheet2 A B C 1 東部 西部 南部   2 A市 E市 I市 3 B市 F市 J市 4 C市 G市 K市 5 D市 H市 L市

  • エクセルで複数シートから、検索して抽出

    はじめまして、右も左も分からない初心者です。 説明出来ないんですが、よろしくお願いします。 【ご質問内容】 エクセルは、XPを使用しています。 エクセルのVBAで、指定したキーワードを 含むデータを抽出したいと思っています。 【例】 Sheet1 A B C D E 1 番号 氏名  郵便番号  住所  メールアドレス 2 1   ○   △    大阪府   ○○ 3 2   △   ○    茨城県   ○○ Sheet2  A  B    C     D      E 1 氏名 番号 郵便番号  住所  メールアドレス 2 ○  1   △    福岡県   ○○ 3 △  3   ○    茨城県   ○○ と各シートに、列がそれぞれバラバラになっています。 茨城県を検索すると、新しいシートに、 Sheet3  A  B    C     D      E 1 氏名 番号 郵便番号  住所  メールアドレス 2 2   △   ○    茨城県   ○○ 3  A  B    C     D      E 4 氏名 番号 郵便番号  住所  メールアドレス 5 △  3   ○    茨城県   ○○ という風に、抽出したいと思っています。 どうしたらいいでしょうか?? よろしくお願いします。

  • Excelで住所データに基づきを順序に並べ替える

    住所データに基づき、Excelのデータを並べ替えたいです。 住所は、 X市A町1丁目2番3号 という形式保存されています。 全てがX市内の住所です。 並べ替えの規則は、 1、地区別 2、町名 3、番地の番号順(丁目、番、号が若い順) データ内容を単純化するしますと以下のようになります。 「あ地区」には、A町、B町、C町、D町が含まれます。 「い地区」には、E町、F町、G町が含まれます。 「う地区」には、H町、I町、J町が含まれます。 現在は住所の並び順に規則性がないですが、 あ地区、い地区、う地区の順で優先し、各地区内では、A、B、C、、、の順を優先して並べ替えたいです(住民基本台帳の順序)。同一の町内の住所は丁目、番、号の数字の小さい順とします。 例えば、元データが、 1、B町5丁目11番5号 2、A町2丁目7番6号 3、A町2丁目6番8号 という並びの場合、上記規則に基づいて並び替えると、 1、A町2丁目6番8号 2、A町2丁目7番6号 3、B町5丁目11番5号 となります。 ※ 住所には地区名は入っていません。 町名には必ずしも「町」が付いているとは限りません。 全ての地区名と対応する町名、優先順位はこちらで把握しています。 データ1行内には住所以外のデータがありますが、他のデータは順序に影響しません。 どのように操作すれば効率よく並べ替えできるでしょうか。

  • エクセルで作成した一覧表をカード形式にしたい。

    エクセルで作成した一覧表をカード形式にしたいのですが 例えばsheet1の 列1のセルA、B、C、D、E、Fに 山田さんの住所、氏名、年齢、職業、電話、備考 列2にセルA、B、C、D、E、Fに 佐藤さんの住所、氏名、年齢、職業、電話、備考、 列3にセルA、B、C、D、E、Fに 大山さんの… (以降は同様の繰り返し)を入力したとき、 sheet2の 列1のセルA、Bに山田さんの住所、氏名、 列2のセルA、Bに山田さんの年齢、職業、 列3にセルA、Bに山田さんの電話番号、備考、 列4にセルA、Bに佐藤さんの住所、氏名、 列5にセルA、Bに佐藤さんの年齢、職業、 列6にセルA、Bに佐藤さんの電話番号、備考、 列7にセルA、Bに大山さんの住所、氏名、 列8にセルA、Bに大山さんの年齢、職業、 列9にセルA、Bに大山さん電話番号、備考、 列10… と表示されるようにしたいのですが sheet2のA1、B1、A2、B2、A3、B3セルに数式を入力し 列4以降にコピーしても飛び飛びになってうまくいきません。 入力規則かと6列目まで増やしてコピーしても 7列目以降に正しくコピーできません。 何か関数が必要なのでしょうか?過去の質問も検索しましたが よく分かりません。よろしくお願いします。

  • 【エクセル】特定の文字列を含むセルを検索する方法を教えてください

    エクセルで以下のようなことを行いたいのですが、どの様な方法で行ったらよいのかわかりません。 どなたか詳しい方がいらっしゃいましたらお教え下さい。 (1)sheet1のA列に町レベルまでの住所が入っています。 (例)A1 a1県b1市c1町    A2 a2県b2市c2町    A3 a3県b3市c3町   (以下続く) (2)sheet2のA~D列にエリアで分かれた複数の市のリストがあります。 (例)A1 北エリア/B1 東エリア/C1 南エリア/D1 西エリア    A2 n1市  /B2 e1市  /C2 s1市  /D2 w1市    A3 n2市  /B3 e2市  /C3 s2市  /D3 w2市   (以下続く) (3)sheet2の2行目以降にある各市の名称でsheet1の"b市"に検索をかけ、それがsheet2の1行目にある何エリアかを区分し、その結果をsheet1のB列に反映する。 (例)A1 a1県b1市c1町/B1 北エリア  ⇒ b1 = n2 など    A2 a2県b2市c2町/B2 東エリア  ⇒ b2 = e3 など    A3 a3県b3市c3町/B3 西エリア  ⇒ b3 = w256など   (以下続く) 今までは置換機能やフィルタ機能を用いてまずは"b市"をより分けた上で手作業を行ってきたのですが、時間がかかるので関数もしくはマクロで出来るようにしたいと考えています。 拙い説明で恐縮ですがお分かりになる方がいらっしゃいましたら是非ともお教えいただければと思います。よろしくお願いします。

  • 結合されたセルのオートフィルについて質問です。(長文です)

    結合されたセルのオートフィルについて質問です。(長文です) いつもお世話になります。 Excel2000を利用して,住所一覧表を作成しています。 【sheet1】には,データ入力用として手入力していき, 【sheet2】には,sheet1のデータが反映されるように数式を入れ, 一覧表として表示されるように利用します。 例えば,【sheet1】ですが, 1行目には項目を, A1「番号」 B1「氏」 C1「名」 D1「〒」 E1「住所」 F1「ビル名」 という風に入力し, 2行目からはデータとして A2「1」 B2「山田」 C2「太郎」 D2「123-4567」 E2「*市*町」 F2「山田ビル」 A3「2」 B3「山本」 C3「花子」 D3「987-6543」 E3「*群*町」 F3「山本ビル」 A4 下に続く-- という風に,1行ずつ1つのセルごとに入力していきます。 そして【sheet2】には 「氏名」で1つのセルに,また「〒住所ビル名」として1つのセルに表示されるようにします。 【sheet2】例↓ A1「番号」 B1「氏名」 C1「〒住所ビル名」 D1「備考」 A234「1」 B234「山田太郎」 C234「123-4567**市**町山田ビル」 D234「備考」 A567「2」 B567「山本花子」 C567「987-6543**群**町山本ビル」 D567「備考」 となります。 ※【sheet2】の2行目以降は,3行ごとにセルを結合させます! ※表にするとこんな風になります↓(わかりにくいかも知れませんが...)     A |  B    |   C     |  D -----------------------------------------------------  1  番号 |  氏名   |   住所    |  備考 ----------------------------------------------------- 2     |         | 〒123-4567   | 3   1  | 山田太郎  |   **市**町 |  備考       4     |         |    山田ビル | ----------------------------------------------------- と表示されるようにしました。 まず氏名のセルにおいての式としては, =IF(sheet1!B2="","",CONCATENATE(sheet1!B2,CHAR(10),sheet1!C2)) の式を【sheet2】のB2のセルに入れました。 すると,無事に山田太郎君が統合されて出てきてくれました! ただ,この先がわかりません。。 この式を下の行にも反映させようとオートフィル機能を使って, 【sheet2】のB234のセルを下にドラッグしていくと, 式は出てきてくれたのですがセルが結合されている為 【sheet2】のB567には =IF(sheet1!B5="","",CONCATENATE(sheet1!B5,CHAR(10),sheet1!C5)) 【sheet2】のB8910には =IF(sheet1!B8="","",CONCATENATE(sheet1!B8,CHAR(10),sheet1!C8)) と,当然ではあるのですが3行ごとの式としてでてしまいます。 上述した通り, 【sheet1】には1行に1人という入力方法なので, 上の式だと,【sheet2】のBに表示されない人が出てきてしまいます。 山本花子さんが出てきてくれません(泣) 長くなりましたが,ここで質問です。 B2の式の =IF(sheet1!B2="","",CONCATENATE(sheet1!B2,CHAR(10),sheet1!C2))を オートフィルで B5 =IF(sheet1!B3="","",CONCATENATE(sheet1!B3,CHAR(10),sheet1!C3)) B8 =IF(sheet1!B4="","",CONCATENATE(sheet1!B4,CHAR(10),sheet1!C4)) B11 =IF(sheet1!B5="","",CONCATENATE(sheet1!B5,CHAR(10),sheet1!C5)) と1つづつあげていく事はできるでしょうか? 手入力が一番早いのでしょうか? 又,他に何かいい方法はありますでしょうか? 長文になってしまい申し訳ございません;; 又,初心者の為わかり辛い箇所があるかもしれません。 都度補足致しますので, おわかりになる方がいらっしゃいましたら,宜しくお願い致します

  • Excelで1セル内の住所を市郡町街と丁目以下の地番等に分離する方法は?

    Sheet1のA列に例えば群馬県内の住所のリストがあります。(架空の住所です。) 前橋市池端町3-2-21……(セルA1) 桐生市黒保根町水沼7-3-5 高崎市大沢町1-18-204 沼田市佐山町8-6-5-402 勢多郡北橘村下箱田396 多野郡吉井町岩井27-5 以下1,000件程度 Sheet2のA1:B1538に郵政公社からダウンロードした群馬県内の郵便番号一覧表があり、A列に市郡町街大字等、B列に対応する郵便番号があります。(名前定義を仮に「〒」とします) Sheet1の住所の郵便番号を検索する必要がありますが、そのためには住所の丁目地番より左の部分(市郡町街大字等)を分離しなければなりません。 これをマクロを使わずに1個の計算式で表示したいといろいろ工夫しましたが、どうもいい知恵が浮かびません。仕方なく一旦B列(B1)に =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,9,1),8,1),7,1),6,1),5,1),4,1),3,1),2,1) という長たらしいネスト式を使って「2~9」の数値をすべて「1」に置き換え、 C列(C1)に =LEFT(A1,FIND(1,B1)-1) と計算式を入れて市郡町街大字等を抽出し、D列(D1)に VLOOKUP(C1,〒,2,FALSE) と入れてようやく郵便番号を検索しております。 結果としてはこれで正しい答は出るのですが、標準搭載の関数だけで(マクロを使わずに)何かもっと簡単な方法がありはしないかという気がしてなりません。 ご存知の方があればどうか教えてください。(OS等はWinMe→Excel2000Proです。)

  • エクセルの住所録データから郵便番号を引き出す方法はありますか?

    エクセルの住所録データから郵便番号を引き出す方法はありますか? A列に氏名B列に住所C列に電話番号が入力されています。 できればB列に郵便番号を一括変換で入力をしたいのですが・・・ エクセルで不可能であればフリーソフトでそのようなものがあればありがたいのですが・・・ よろしくお願いします。

  • シートを自動にコピーするには

    説明が上手くできないかもしれませんが シート1    A  B   C   D    E     まだ続きますが 項目  氏名 住所 電話 携帯番号 郵便番号 1行  項目を打つと  2行   3行 4行 5行 … 別シートは表になります、転記又は(リンク)で シート1に1行目の  氏名   住所   電話   携帯  郵便番号 2行に文字を入力すると 表がコピーされて各項目が表示されるというようなことがしたいのですが可能でしょうかどうか教えて下さい。(オフィス2003)

専門家に質問してみよう