- ベストアンサー
EXCELで検索した値の下のセルの値を表示したい
たとえば列で 1郵便番号 2123-4567 3電話番号 401-1234-5678 5趣味 6かくかく 7特技 8しかじか と表示されているとします。 ここから郵便番号を検索し、郵便番号の下のセルの値を表示させるにはどうすればいいでしょうか? また、範囲指定は同じでも、電話番号であればその下の値が表示される方法です。 VLOOKUPやHLOOKUPではかならず検索される場所が範囲の上端や左端なので悩んでいます。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
lookup系の関数では、検索して見つかった値が返ってきますが、見つ けた場所を返す関数もあります。また、範囲内の特定の場所の値を返 す関数もあります。 =match(検索する値, 探す範囲, 探し方) =index(範囲, x行目, y列目, 領域番号) これで例えば =match("郵便番号", A1:A8, 0) とやると 1 が返ってきますので、もう1行下ってことで+1して index関数に代入する =index(A1:A8, match("郵便番号", A1:A8, 0)+1, 1, 1) と、123-4567が返ってくるわけです。 表の端っこ以外のところで検索しなくちゃ行けない場合に、よく使う 方法ですので、覚えといて損はないですよ。
その他の回答 (3)
- Poer
- ベストアンサー率45% (72/157)
#1です。私は次のような方法を試してみました。 A7を左上端として、ご質問のような表が入っているとします(仮に表の下端をエクセルの14行目とします)。 (1)関数を入力します。以下、「セル番地・・・ 数式」。 A1・・・ =IF(A2="","条件入力",IF(ISERROR(A4),"不明",A4)) B1・・・ =IF(B2="","",IF(ISERROR(B4),"不明",B4)) B2・・・ =IF(AND(A2<>"",ISERROR(C4)),"該当なし",IF(ISERROR(C4),"",C4)) C2・・・ =IF(COUNTIF(5:5,">0")>=2,"※複数の該当データ","") A4・・・ ="条件 : "&HLOOKUP(1,6:14,MAX(5:5),0) B4・・・ ="結果 : "&HLOOKUP(1,6:14,MAX(5:5)+2,0) C4・・・ =HLOOKUP(1,6:14,MAX(5:5)+3,0) A5・・・ =IF(ISERROR(MATCH($A2,A7:A14,0)),0,MATCH($A2,A7:A14,0)) A6・・・ =COUNTIF($A5:A5,">0") (2)A5とA6を表の右端の列まで(オートフィルで)コピーします。 (3)A2に条件を入力し、B2に結果が出るかを確かめます。 (4)うまくいったら、4行目から6行目までの行幅をゼロにして行を隠します。 (補足) A2に、ある項目の結果を入力すると、B2にその一つ下の項目の結果が出ます。 表の行を増やした場合、関数の中の14という数字を表の下端の行数に変更します。 該当データが複数の場合、最も左にあるデータが優先的に表示されます。 お時間があれば試してみてください。
お礼
試してみようと思ったのですが、 ややこしくて理解できませんでした。 今度時間があるときに使ってみます。 ありがとうございました
- mshr1962
- ベストアンサー率39% (7417/18945)
範囲をずらせばいいのでは? 検索するのが郵便番号なら2行目ですよね =HLOOKUP(検索値,$2:$8,3,FALSE) これで2行目を検索して、対応する列の4行目(電話番号)を表示になります。 別の方法 =LOOKUP(検索値,$2:$2,$4:$4) 検索値を2行目から検索して、対応する4行目を表示 ただし、2行目を昇順にする必要があります。 =INDEX($2:$8,2,MATCH(検索値,$2:$2,0)-1) MATCH関数で列位置を検索してINDEX関数で対応するデータを表示
お礼
上記の二つは試していたのですがだめでした。 3つ目はためさせていただきました。解決しました。 ありがとうございました。
- Poer
- ベストアンサー率45% (72/157)
郵便番号の下のセルの値というのは、電話番号の値ということでしょうか?もしそうであるなら、実は先程私なりに作ってみて、うまくいきました。しかし残念ながら出勤時間が迫っており、夜までご説明する時間がありません。今日の夜にでも間に合えばお答えできるんですけどね(>◇<)。
お礼
解決しました!! ありがとうございました。