- 締切済み
エクセルの関数VLOOKUPについて教えて下さい。
エクセルの関数VLOOKUPについて教えて下さい。 範囲にあたるデーター部分が3つのかたまりに分かれている時どのような数式で表すことができますか? 具体的には、HIJ KLM OPQの列位置にある3つの表の中から検索したいのです。 作った数式は1つの表から検索するもので =IF(C9="","",IF(ISNA(VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE)),"未登録",VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE))) です。(C9,材料一覧!$H$5:$J$54,2,FALSE)の後に&(同じ数式で列文字を入れ替えて)で繋げてみました。列範囲KLMの表は上手くいったのですが、3つ目のOPQの表は上手くいきませんでした。 原因と正しい数式を教えて下さい。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
#3です Chooseはいらなかったですねm(_ _)m =IF(C9="","", IF(ISNUMBER(MATCH(C9,材料一覧!H5:H54,0)),VLOOKUP(C9,材料一覧!H5:J54,2,FALSE), IF(ISNUMBER(MATCH(C9,材料一覧!K5:K54,0)),VLOOKUP(C9,材料一覧!K5:M54,2,FALSE), IF(ISNUMBER(MATCH(C9,材料一覧!O5:O54,0)),VLOOKUP(C9,材料一覧!O5:Q54,2,FALSE), "未登録"))))
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
できるだけ冗長な部分を取り除いてみました 3つの表で見つからなければ「未登録」となります =IF(C9="","", CHOOSE(IF(ISNUMBER(MATCH(C9,H5:H54,0)),1, IF(ISNUMBER(MATCH(C9,K5:K54,0)),2, IF(ISNUMBER(MATCH(C9,O5:O54,0)),3,4))), VLOOKUP(C9,H5:J54,2,FALSE), VLOOKUP(C9,K5:M54,2,FALSE), VLOOKUP(C9,O5:Q54,2,FALSE),"未登録"))
- KURUMITO
- ベストアンサー率42% (1835/4283)
実際に試験をしていませんが次のような式になるでしょう。 初めにCOUNTIF関数を使ってH,K,O列にC9の値が無い場合、すなわちその値の合計が0であるならば未登録と表示させ、その後にH列にC9があれば、K列にC9があれば、O列にC9があればといようにIF関数をつないでいます。 =IF(C9="","",IF((COUNTIF(材料一覧!$H$5:$H$54,C9)+COUNTIF(材料一覧!$K$5:$K$54,C9)+COUNTIF(材料一覧!$O$5:$O$54,C9))=0,"未登録",IF(COUNTIF(材料一覧!$H$5:$H$54,C9)>0,VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE),IF(COUNTIF(材料一覧!$K$5:$K$54,C9)>0,VLOOKUP(C9,材料一覧!$K$5:$M$54,2,FALSE),IF(COUNTIF(材料一覧!$O$5:$O$54,C9)>0,VLOOKUP(C9,材料一覧!$O$5:$Q$54,2,FALSE),"")))))
- kagakusuki
- ベストアンサー率51% (2610/5101)
=IF(C9="","",IF(COUNTIF(材料一覧!$H$5:$H$54,C9)=0,"未登録",VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE))&IF(COUNTIF(材料一覧!$K$5:$K$54,C9)=0,"未登録",VLOOKUP(C9,材料一覧!$K$5:$M$54,2,FALSE))&IF(COUNTIF(材料一覧!$O$5:$O$54,C9)=0,"未登録",VLOOKUP(C9,材料一覧!$O$5:$Q$54,2,FALSE))) で良いと思います。 勿論、 ISNA(VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE)) を使っても同様に判定する事が出来ますが、COUNTIF関数の方が数式を短くする事が出来ます。 御質問文には使用された関数の全文が掲載されていないため、原因を調べる事は出来ませんが、おそらく、KLM用やOPQ用のIF関数の部分を作成された際に、HIJ用のIF関数をコピー&ペーストしたものを基にして、列番号を入れ換えられたのではないでしょうか。 その際に、「 ) 」の数を御間違えになられたか、或いは列番号の変更を御間違えになられたのではないでしょうか。 兎に角、質問者様の関数の作り方は間違ってはおられないと思いますから、些細なミスが無いか、再度、確認される事を御勧め致します。