• ベストアンサー

エクセルにてデータを分析して表示させるには

別々からエクセルで情報をもらったのですが、一方のシートには新市町村名(合併がなく以前のままのものも含む)と宛先などの一覧(全国の市区町村すべて)があり、もう一方のシートには今回の新市町村名のみとそれぞれに合併した旧市町村名があります。 つまりシート1のAには、札幌市○○区から那覇市と北から南まですべて新しいものも含めて市町村名が並んでおり、Bには郵便番号Cには住所Dには・・・シート2には、Aには新市町村名Bには各々の合併した旧市町村名という具合です。シート1にAとBの間に列を挿入してシート2の情報と一致した新市町村名の横だけに該当の合併前旧市町村名を表示させることはできますか?

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

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

VLOOKUP関数は、第4引数がTRUE型とFALSE型の2種があり、本件で利用するならはFALSE型であると思うが、「これはVLOOKUP関数は検索するキーが昇順に並んでいる必要があるからです」と言う回答の一部が出ていますが、そういう必要は無いです。ある解説書で「FALSEを指定するときはデータの並びに規制はない」とあることを確認しましたし、私の経験とも反します。(TRUE型は検索区分表を昇順並ておく必要がありますが。) ーーー 私には質問の表現がわかりにくい。推測で Sheet1 A列 全国市区町村名  B列 郵便番号 C列 住所 D列 (以下略) Sheet2 A列 新市区町村 B列 被合併市区町村(旧の複数市区町村は1セルにカンマでも区切って入っているとする) Sheet1のA列とSheet2のA列は、中身の体系は同じ(同じ方針で)でできていると考えてよいですね。 (質問文に、カンマや列という語句を入れること、読みにくい <例>郵便番号Cにはーー>郵便番号、C列には) Sheet1のA列が、Sheet2のA列に一致すれば、Sheet1の挿入後のB列に、Sheet2のB列を持ってくれば良いのでしょうか。 それなら =IF(ISERROE(VLOOKUP(A1,Sheet2!$a$1:$a$1000,2,FALSE)),"",VLOOKUP(A1,Sheet2!$a$1:$a$1000,2,FALSE)) のようになるのでは。実データがなくテストして無いが。 もしそうなら列を入れ替える必要も無い。 質問例を誤解しているかもしれないので、その節はお許しを。

bijoudebijou
質問者

お礼

分かりやすい説明ありがとうございました。と同時に私の説明不足でも丁寧に答えてくださって感謝いたします。できました!! また、ほかのことにも参考にさせてもらいます。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

VLOOKUP関数を使うのが一般的だと思います まずシート2はA,B列を逆に入れ換えます。A列が旧市区町村、B列が新市区町村となるようにします。 次にシート2を旧市区町村で昇順にソート(並べ替え)します。これはVLOOKUP関数は検索するキーが昇順に並んでいる必要があるからです。 シート1ではB列に以下の関数を入力します (ここではA2の市区町村を変換する例です)  =VLOOKUP(A2,シート2!A:B,2,0) もしシート1の市区町村名がシート2の旧市区町村に一致しなければ#N/Aというエラーになります。エラーとなったときはシート1の市区町村を表示するのであれば =IF(ISNA(VLOOKUP(A2,シート2!A:B,2,0)),A2,VLOOKUP(A2,シート2!A:B,2,0)) となります。

bijoudebijou
質問者

補足

早速の回答ありがとうございました。 シート2の旧市町村名が宮崎市、宮崎郡佐土原町、同田野町、東諸県郡高岡町 新市町村名が宮崎市となっていてもOKですか?

関連するQ&A