この記事では、セルに入力すると隣のセルが自動で入力される(一致したら隣のセル)方法について説明します。
やり方としては、関数を2種類使用します。
・INDEX関数
・MATCH関数
の2つです。
実際のサンプルを元に詳細を確認していきましょう。
目次
エクセルにて隣のセルを自動入力(値を返す)方法【一致したら隣のセル】
それでは以下で隣のセルを自動入力(一致したら隣のセルに返す)方法を見ていきます。
図のように、F列の会社名の下に”C社”と入力すると、価格が自動的にE列に反映されるようにしたいと思います。
そのためには、価格を表示したいセル(今回の場合はE3)に、「=INDEX(C3:C7,MATCH(F3,B3:B7,0))」と入力します。
この式について説明していきます。
まず、INDEXという関数を使用していますが、これは行と列の交差するセルの値を出力するための関数です。実際には
=INDEX(配列、行番号、[列番号])
という形で記述します。
今回の場合、「配列」の部分はC列が対象になるので、使用したい値のあるC3からC8を指定するため、「C3:C8」と記述します。
次に「行番号」を求めるのですが、行番号はF3に書かれた社名とB列の一覧から一致する行を見つけたいので、MATCH関数を使います。実際には
MATCH(検査値, 検査範囲, [照合の型])
と記載します。
今回は「検査値」はF3の会社名を使うため「F3」を、検査範囲は元データのあるB列を使いますので、B3からB7の値である「B3:B7」を指定します。
試しに空いているセルにMATCH関数の値だけを出してみましょう。空いているセルに「MATCH(F3,B3:B7,0)」と入力すると、値が「3」として表示されると思います。
これは、F3の社名がB列の3行目にある、ということがわかります。
INDEX関数の中に戻すことでC列と、交差する行を3行目(指定したデータの範囲内)と指定したので、実際にはC5の値が表示される、ということになります。
エクセルにて隣のセルを自動入力(値を返す)方法【一致したら隣のセル:複数の場合】
ここまで説明したやり方では、会社の名前から金額を出すなど、答えが一つしかない状況でつかえました。
では逆に金額から候補が何社あるか、といった場合はどうすればいいか?を作成してみます。
以下のように作ってみます。
まず、準備として元データの表にその金額が何回出てきたかを確認するための列を追加します。そして、作成した列の一番上(今回の場合はC3)に「=B3&COUNTIF($B$3:B3,B3)」と入力します。
入力した式について説明します。
今回、回数をカウントするのですが、「どの金額が何回目なのか」を見えるようにしておく必要があるので、価格のセルの情報も必要です。
そのため、式の一番初めに左のセルを参照するため「B3」が入ります。続けてこの金額が上から何回目かを確認したいので、COUNTIF関数を使いましょう。
COUNTIFは
「COUNTIF(確認範囲、比較対象)」
と使用します。
上からの行数をそれぞれ確認したいので、3行目~7行目で確認範囲は徐々に範囲を広げていきます。
この場合、開始は固定し、終了は増えていってほしいので、開始の部分はExcelでセルを固定できる「$(F4キー)」を付けて表現します(「$B$3」の部分です)。
終了の部分は下に行くにつれて変わっていってほしいので「B3」のまま、また比較対象も「B3」になります。
なお、今回の表はテーブルで作成しているので、一番上のセルに式を入力すると、その下の行は自動的に補完されます。非常に便利ですので、表を作成するときはテーブルを使いましょう。
テーブルは、表を作りたい範囲を選択し、上部メニューの「挿入」から「テーブル」を選択すれば作成可能です。
入力後はこのようになります。
続いて、社名を表示したいセル(今回の場合はF3)に「=IFERROR(INDEX($A$3:$A$7,MATCH($E$3&”1”,$C$3:$C$7,0)),””)」と入力します。
この式は複数の関数を使っています。
・IFERROR関数
・INDEX関数
・MATCH関数
です。
このうち、INDEX関数とMATCH関数は先ほども使ったものと同じです。加えて、会社が複数無かった時にエラー表示にならないようにするためにIFERROR関数を使っています。
IFERROR関数については使わない場合、一致するデータがないとセルに「#N/A」と表示されてしまうのを防ぐために使っています。
もし社内だけで使うなど、エラーが出ても問題ない、というのであればつけなくても大丈夫です。
それでは式の説明に移ります。
まず、INDEX関数とMATCH関数は先ほどと使い方は変わっていません。ただし、1番目にヒットするもの、2番目にヒットするもの、3番目にヒットするものといった形で少しずつずらしていかなくてはいけないので、その1~3を付け加える必要があります。
先ほどと同じく、MATCH関数を使用していますが、
・検査値をE列の価格
・検査範囲は回数が必要なのでC列
を使用します。
そうなると、値が一致しなくなってしまうので、検査値である価格の後ろに1~3をつけなければいけません。そのため、検査値は「$E$3&”1”」としています。
あとは先ほどと変わりません。これでF列に一つ目の値が表示されました。次にこの式をG列、H列にコピーすればいいのですが、そのままだと後ろが1のままです。
そのため、図のように先ほどの検査値の部分を「$E$3&”2″」と書き換えます。
同様に、H列にコピーしたら「$E$3&”3”」に書き換えれば、3つの会社名が表示されるようになります。
最後はIFERROR関数の説明です。
これは、先ほども書いた通り会社名に一致するものがなかった場合に本来は「#N/A」と表示されてしまうのを防ぐために使用しています。
式としては、
=IFERROR(値、エラーだったときの値)
となります。
値の部分はそのまま指揮を入れておけば問題ありません。エラーだったときは何も表示したくないので、「””」と入力しています。
フィルタを使ったデータの抽出
最後に、一番簡単な方法です。先ほど、表をテーブルで作成しました。
こうしておくと、例えば「価格が\500,000の会社」や「価格が\450,000以下の会社」を抽出したいだけであればすぐに表示することができます。
「価格が\500,000の会社」の場合は、「価格」の右下にある▼の部分をクリックし、数字のうち\500,000だけにチェックが入るようにしてOKを押します。
これで、\500,000の会社だけが表示されるようになります。
同様に、「価格が\450,000以下の会社」を抽出したいときは、同じく「価格」の右下にある▼の部分をクリックし、数値フィルターから「指定の値より小さい」をクリックします。
するとオートフィルターオプションというウィンドウが表示されますので、価格の部分に「450001」と入力し、OKを押します。
すると、価格が\450,000以下の3社のみが表示されるようになります。
まとめ 【Excel】エクセルにて一致したら隣のセルに自動入力する方法(複数も)
今回は、エクセルにて入力すると隣のセルが自動で入力される方法を解説しました。
複数の関数を使用して複雑な式を作成していますが、覚えるといろいろと応用が利くようになりますので、ぜひ活用してください。