2枚のワークシートで郵便番号を一致させる。対応するデータを検索し、郵便番号と一緒に記録する

2枚のワークシートで郵便番号を一致させる。対応するデータを検索し、郵便番号と一緒に記録する

Excel 2013 スプレッドシートの 2 つのタブ。1 つのタブの名前は「住宅データ」で、もう 1 つのタブの名前は「評価データ」です。住宅データ タブの列 O には郵便番号のリストがあり、評価データ タブの列 G にも郵便番号のリストが含まれています。評価データ タブの列 L には評価のリストが含まれています。

2 つのタブで一致する郵便番号を識別し、評価データ列 L で対応するエントリを検索し、住宅データ タブに新しい列 AG を作成して、一致する郵便番号と一緒にデータを記録する一致/検索/マクロを作成しようとしています。

住宅データタブ

評価データタブ

答え1

比較的単純な検索が必要なようですが、その場合は次のようになります。

検索はいくつかの方法で行うことができます:

  • VLOOKUP() は習得は簡単だが、用途が限られている

  • INDEX(MATCH()) は習得が難しいが、より柔軟性が高い

どちらを使用するかは好みによります。

より簡単なバージョンは VLOOKUP です。この場合は、次の数式を Homes シートの AG 列に入力します。

=VLOOKUP(

ここまで来るとすぐに、Excel が次に何が必要かを教えてくれます (少しだけ!)。マウスオーバーすると、次のテキストが表示されます。

VLOOKUP(lookup_value , table_array , col_index_num , [range_lookup])

lookup_value は Homes シートの郵便番号です

table_array は検索する場所、つまり Ratings シートの列 G から L です。VLOOKUP の制限は、検索する列 (Ratings シートの郵便番号) が知りたい列 (Ratings シートの評価) の左側にある必要があることです。幸いなことに、これはすでにあります。また、最も左の列である必要があるため、A から L ではなく列 G から L を選択し、列 G (郵便番号) が検索する列の左側にあるようにします。

col_index_num は、返したい列の番号です。つまり、G = 1、H = 2、I = 3、J = 4、K = 5、L = 6 です。つまり、列 L にあるものを取得するので、6 が必要になります。

range_lookup はオプションですが、実際には重要です。FALSE は完全一致を意味しますが、TRUE (奇妙なことにデフォルト設定) は近似一致を意味します。郵便番号が 1245 の場合、1245 が存在しない場合に 1240 が検索されることは望ましくないため、ここでは FALSE が必要です。

したがって、セル AG2 に入力すると次のようになります。

=VLOOKUP(O2 , 'Ratings Data'!G:L , 6 , FALSE)

これにより、郵便番号の評価が Homes タブに戻ります。郵便番号が見つからない場合は NA エラーが発生しますが、これは VLOOKUP の前後に IFNA() または IFERROR() を使用して対処できます。また、後で数式を他の場所にコピーした場合でも、毎回列 G から L を参照するように $ 記号を使用することをお勧めします。

例えば

=IFERROR(VLOOKUP(O2 , 'Ratings Data'!$G:$L , 6 , FALSE),"Not found")

INDEX(MATCH()) も同様に機能し、技術者はそれを好む傾向がありますが、私が一緒に働いている技術者以外のほとんどの人は、それを学ぶには一歩が遠すぎると感じており、通常の作業アプリケーションで 99% の確率でうまく機能する VLOOKUP から始めることを好みます。技術者の 1 人であれば、Google で INDEX MATCH を検索すると、おそらく適切な説明がいくつか見つかります ;-)

関連情報