• 締切済み

エクセルの関数について

お世話になってます。 関数の入力で壁にぶち当たってしまいました。 A1に月、A2にBMと入力した際にA3に =IF(OR(A1=“月“,A1=“火“),vlookup(検索値、範囲など),““) 上記なような感じで、A1に月や火を入力し、A2にBMと入ったら、vlookupで検索値が出せる、それ以外は空白。というのまではできたのですが… この式の続きにA1に水を入れた場合、同様にA2にBMと入れたら、vlookupでの検索範囲をずらした値で入力 されるような式はできるでしょうか? 例えば、月や火の時のvlookupの検索範囲をA5からF8、水の場合は、A9からF10といったようにしたら… 画像が重たかったので文書になってしまいましたがよろしくお願いいたします。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.9

>IF関数の偽で作ると思ってたのですが…できないですね~… 外側にIF関数をもう1つ追加すると以下のようになります。 A3=IF(COUNTIF(A5:A10,A2),IF(OR(A1="月",A1="火"),VLOOKUP(A2,A5:B7,2,FALSE),IF(A1="水",VLOOKUP(A2,A8:B10,2,FALSE),"")),"") IFERROR関数の場合は次のようになります。(Excel 2007以降のとき) A3=IFERROR(IF(OR(A1="月",A1="火"),VLOOKUP(A2,A5:B7,2,FALSE),IF(A1="水",VLOOKUP(A2,A8:B10,2,FALSE),"")),"")

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.8

>実際に上記のような式を入れたらエラーになってしまいました… 補足の模擬データで検証しましたが列番号を正しく設定すればエラーになりません。 A3=IF(OR(A1="月",A1="火"),VLOOKUP(A2,A5:B7,2,FALSE),IF(A1="水",VLOOKUP(A2,A8:B10,2,FALSE),"")) A2に与える検索値が検索範囲に存在しないとエラーになります。 Excel 2007以降のバージョンではIFERROR関数で簡単に対処できます。

akusakk
質問者

補足

ありがとうございます。何とかできました。 ところで、記号を入れなかった場合エラー表示がでてしまうのですが、いれなかった場合にA3を空白にできるようにできないでしょうか? IF関数の偽で作ると思ってたのですが…できないですね~…

回答No.7

本来は、そのような複雑なことをしないで済む、簡素で合理的な仕組みの表を作れるようになるべきだとは思いますが…。 力ずくで質問文の条件を満たす数式を作ろうと思えば、できなくはないです。次式のように、CHOOSE 関数にセル範囲を選択させるなど。 D1 検索値 D2 =if(a2="BM",vlookup(d1,choose(match(a1,{"月","火","水"},),a5:f8,a5:f8,a9:f10),6,),na()) ※ 6 列目の値を拾いたい場合

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.6

ANo.5です、 ごめんなさい、MATCH関数の「照合の種類」の定義が抜けていました。 以下の式にしてください。 =IFERROR(VLOOKUP(A2,C2:J6,1+MATCH(A1,D1:J1,0),FALSE),"")

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

こんな感じでも良いですね。 添付の図の場合、A3には↓の式が入っています。 =IFERROR(VLOOKUP(A2,C2:J6,1+MATCH(A1,D1:J1),FALSE),"") #質問中の「例」として挙げられた検索範囲は無視しています。悪しからず。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

>この式の続きにA1に水を入れた場合、同様にA2にBMと入れたら、vlookupでの検索範囲をずらした値で入力されるような式はできるでしょうか? A2セルのBMとは文字列ですよね、どのような目的の情報ですか? >例えば、月や火の時のvlookupの検索範囲をA5からF8、水の場合は、A9からF10といったようにしたら… A1セルの文字によって検索範囲を代えることは可能ですが文字と範囲の関連性をどのようにするか決めなければなりません。 A1の文字が曜日のようですが他の木、金、土、日なども考える必要があるのではないでしょうか? 簡単な方法としては下記のようにIF関数の入れ子構造で対応可能です。 =IF(OR(A1="月",A1="火"),VLOOKUP(検索値,A5:F8,列番号,FALSE),IF(A1="水",VLOOKUP(検索値,A9:F10,列番号,FALSE),"")) 更にA1が木や金の場合は別の検索範囲にするのであれば上記の""の部分へIF関数で別の条件範囲の検索を指定します。 具体的な模擬データと結果の状態をカンマ区切りのテキストデータで提示して頂ければ検証します。 尚、Excelのバージョンを提示して頂ければ目的に合う数式を具体的に提示できます。

akusakk
質問者

補足

ありがとうございます。お返事遅くなりすみません。 おっしゃる通り、木~日曜日も考える必要があります。 A1に曜日 A2に記号 A3に数式 A5に○ B5に3 A6に△ B6に4 A7に□ B7に5 A8に○ B8に8 A9に△ B9に9 A10に□ B10に10 とあった場合(実際の中身と数字はもう少し複雑ですが) =IF(OR(A1="月",A1="火"),VLOOKUP(A2,A5:B7,列番号,FALSE),IF(A1="水",VLOOKUP(A2,A8:B10,列番号,FALSE),"")) といったように、月~火の範囲、水の範囲といったように決められたらと思いまして。 実際に上記のような式を入れたらエラーになってしまいました…

  • weboner
  • ベストアンサー率45% (111/244)
回答No.3

検索範囲に名前をつける http://excel.onushi.com/purpose/cell-name.htm >例えば、月や火の時のvlookupの検索範囲をA5からF8、水の場合は、A9からF10といったようにしたら… A5:F8 を選択した状態で【名前ボックス】に 月 と入力⇒Return、同じ状態で再度 火 と入力⇒Return この状態で 月 でも 火 でも選択範囲はA5:F8になる 次に A9:F10 を選択した状態で【名前ボックス】に 水 と入力⇒Return vlookupの範囲選択にはINDIRECT関数を使う http://officetanaka.net/excel/function/function/indirect.htm =VLOOKUP(検索値,INDIRECT(A1),列番号,検索方法)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

たとえば… 条件1:まず、そもそもA2にBMと入ってなかったら計算しない 条件2:そうでないとき、A1に月または火ならA5:F8を対象にする 条件3:そうでないとき、A1が水ならA9:F10を対象にする 条件4:そうでないときは計算しない =IF(A2<>"BM","", IF(OR(A1={"月","火"}),VLOOKUP( ),IF(A1="水",VLOOKUP( ),"")))

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

説明文が全く架空の条件ですので、的確な回答がしにくいのですが(例文ではA2セルの条件が入っていない)、基本的に条件によってVLOOKUP関数の検索範囲をずらしたいなら以下のような数式にします。 -VLOOKUP(検索値,IF(OR(A1="月",A1="火"),範囲1,IF(A1="水",範囲2,それ以外の範囲)),2,0)

関連するQ&A