![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
エクセルの関数、LOOKUPを使って、
患者IDから患者名を引き出したいのですが、
IDが不一致の場合は「該当なし」がわかるような表示にしたい。
現在はIDが一致しない場合、適当な?患者名が表示されてしまう。
シート1のA列に患者ID
シート1のB列に患者名
以上の情報があらかじめ入力されています。
やりたいことは
シート2のA列にIDを入力すると
シート2のB列に患者名を表示。
ID入力しない場合は、空白。
IDが一致しない場合は、不一致などの表示。
現在の計算式
シート2のB列に計算式が入力されています。
=IF(A1="","",LOOKUP(A:A,シート1!A:B,シート1!B:B))
現在できていること。
・患者IDを入れなければ空白
・患者IDを入力し、シート1のIDが一致したら、患者名を返す。
困っていること
・患者IDが一致しないと、適当な?患者名が表示される。
No.3ベストアンサー
- 回答日時:
こんにちは。
LOOKUP関数よりもVLOOKUP関数を使うことをお薦めします。
ただし、範囲は
(1)テーブルは連続した範囲であること。
(2)範囲は検索列となる"範囲の最左列で昇順に並べ替えられている"
こと。
関数:VLOOKUP(検索値,範囲,列番号,検索の型)
>現在の計算式
>シート2のB列に計算式が入力されています。
>=IF(A1="","",LOOKUP(A:A,シート1!A:B,シート1!B:B))
→ シート2のB1に
=IF(A1="","",IF(ISNA(VLOOKUP(A1,シート1!$A:$B,2,0)),
"該当者なし",VLOOKUP(A1,シート1!$A:$B,2,0)))
または、No2さんが書かれた様に
=IF(A1="","",IF(ISERROR(VLOOKUP(A1,シート1!$A:$B,2,0)),
"該当者なし",VLOOKUP(A1,シート1!$A:$B,2,0)))
と入力して、行方向にコピーします。
【解説】
VLOOKUPは検索値をキーとして、範囲の最左列を行方向(Vertical)
に検索していき、一致した行の指定した列(キーの列を含めて何列目)
を参照します。
※参考:列をキーにして検索し、行を参照するものに、
HLOOKUP(Horizon)があります。
まず、1つ目の検索値は検索したい"ユニークな値"ですからA:A
という指定は適切ではありません。 検索値は A1、$A1 などの
ようにします。 ※ユニーク: 唯一の、 独自の、
意味:A1の内容をキーにして・・
2つめの範囲は、連続している必要があり、キー(範囲の最左列)
で昇順に並べ替えられている必要があります。
並べ替えられていない場合、正しい結果が得られない場合があります。
患者ID/患者名をシート1のA列/B列にテーブルを作っているなら、
範囲は、『シート1!A:B』または『シート1!$A:$B』です。
『シート1!$A:$B』の$は絶対参照で、コピーをしてもその参照セル
は変わりません。 今回は、『シート1!A:B』でも大丈夫ですが、
今後、別の表で列方向にコピーしたりして、作業量を軽減することを
考えると、範囲(列)は変わりませんので$をつける癖をつけること
をお薦めします。
3つめは、VLOOKUPの場合、見つかった行の
"検索列を含めて何列目を参照するか" を指定するものです。
テーブルは患者ID/患者名
検索列は患者IDの1列目、目的の患者名は2列目ですから、
"2"を指定します。
最後の検索の型ですが、
0は完全一致、1または指定なしだと、近似値で一致したものを対象
にして参照します。 0を指定すると該当なしの場合に#N/Aを返し
ます。
上記のように、VLOOKUPは検索の結果、一致するものがない場合#N/A
というエラーを返します。 該当なしはこのエラーを利用します。
このエラー結果を確認するための関数として
ISNA()、ISERROR()があります。
ISNA(VLOOKUP(A1,シート1!$A:$B,2,0)
→ ISNA()は#N/Aだった場合に真、そうでない場合に偽を返します。
ISERROR(VLOOKUP(A1,シート1!$A:$B,2,0)
→ ISERROR()は、#N/A,#VALUE,#REF!,#DIV/0,#NUM!,#NAME,#NULL
などのエラー全般に対して、該当する場合に真、そうでない場合に偽
を返します。
上記を組み合わせて、最初に記載した式を作ることで解決できると
思います。 以上、ご参考まで^^
コピペでできました!
ありがとうございます。
エクセルを使った、予約管理表などを、
ほかの部署からも頼まれており、
「コピペでいいか?!」ではなく、
細かなアドバイスを頂き大変ありがとうございます。
No.2
- 回答日時:
=IF(A1="","",IF(ISERROR(VLOOKUP(A1,シート1!A:B,2,0)),"不一致",VLOOKUP(A1,シート1!A:B,2,0)))
ではどうでしょうか。
No.1
- 回答日時:
=IF(A1="","",LOOKUP(A:A,シート1!A:B,シート1!B:B))
を
=IF(A1="","",IF(COUNTIF(シート1!A:A,A1),VLOOKUP(A1,シート1!A:B,2,FALSE),""))
にして、下フィルではいかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- SQL Server SQL 期間内の実施数を合計したい 2 2023/03/03 22:28
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) Googleスプレッドシートを使って、別シートに それぞれの合計を出したい。 1 2022/04/25 14:07
- その他(コンピューター・テクノロジー) VBA初心者です。 仕事の残業を少しでも減らしたく 最近勉強を始めたのですが フィルターを一気にかけ 4 2022/08/15 20:58
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの保護で、列の表示や...
-
文字の色も参照 VLOOKUP
-
VBAで繰り返しコピーしながら下...
-
ExcelのVlookup関数の制限について
-
【条件付き書式】countifsで複...
-
Excel複数シートにあるデータを...
-
Excelでの並べ替えを全シートま...
-
エクセルで、チェックボックス...
-
エクセルの列の限界は255列以上...
-
VLOOKアップ関数の結果の...
-
Excel の複数シートの列幅を同...
-
【VBA】複数のシートの指定した...
-
エクセル マクロ 標準モジュー...
-
エクセル複数シートのデータを...
-
Excelに自動で行の増減をしたい...
-
Excelで全てのシートに一気に列...
-
VBAで検索して、行をコピー&追...
-
【マクロ】あいうえお順のシー...
-
accessでexcelを読み込む時のデ...
-
エクセル 日報売上を月報に展開...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
VBAで繰り返しコピーしながら下...
-
Excel の複数シートの列幅を同...
-
エクセルで横並びの複数データ...
-
エクセルの列の限界は255列以上...
-
【条件付き書式】countifsで複...
-
Excelでの並べ替えを全シートま...
-
SUMPRODUCTにて別シートのデー...
-
エクセル マクロ 標準モジュー...
-
VLOOKアップ関数の結果の...
-
エクセルで、チェックボックス...
-
Excel VBA ピボットテーブルに...
-
オートフィルタ使用時にCOUNTIF...
-
スプレッドシートでindexとIMPO...
-
エクセルVBAで、ある文字を含ん...
-
エクセルのブック分割マクロを...
-
【VBA】複数のシートの指定した...
-
Excel複数シートにあるデータを...
おすすめ情報