VLOOKUP関数はとても便利で、趣味や仕事でExcelを使う上で
使用頻度の高い関数だと思います。今回簡単な問題を作ってみました。
げームのような軽い感覚でご回答ください。
MixiExcel(エクセル)活用コミュニ副管理人Y(51)


エ ク セ ル 質問

画像のような商品検索表があります D3 セルに品名コードを入力すると、
品名コードの存在をチェックして「登録済み」又は「未登録」と D4 セルに表示されます。
若し、登録済みならば D5 セルには在庫数が表示され、なければ空白になります。
ある時、ウッカリ、ブルーのセル内の数式(関数)を消してしまいました。



さて問題です、D4とD5セルにはどんな数式を入れたらよいのでしょうか?

品名や値段や在庫数は同じ値のものが複数ある場合があります。
品名コードは店舗ごとに形式が違いますが、全く同じコードはありません。
なお、C8:C10007の範囲には「品名コード」、C8:G10007の範囲には「商品表」と、
それぞれ名前の定義をしていますので、利用していただいて構いません。
行位置や列位置の変更は今後もありません。
皆さんからの回答を待ちします。 回答するのは誰が早いかな〜♪
ここに回答を書いてください。

--------------------------------------------------------------------------


以下はmIXIのベテランサポータ達から寄せられた回答です、
この中に正解があるかどうか、実際に表を作ってあなたの回答を考えてください。



05月02日 01:05 ★A
D4=IF(D3<>"",ISERROR(MATCH(D3,品名コード,0),"未登録","登録済み"),"")
D5=IF(D4<>"",VLOOKUP(D3,商品表,5,FALSE),"")
むう、酔っ払いの戯言なので構文すら違っているかもしれませんが(笑)

05月02日 01:14 ★B
D4=IF(COUNTIF(C8:C10007,D3),"登録済み","未登録")
D5=IF(D4="未登録","",VLOOKUP(D3,C8:G10007,5,))

05月02日 08:16 ★C
Vlookup推しで行ってみますw
D4=iF(D3="","",IF(ISERROR(VLOOKUP(D3,商品表,1,FALSE)),"未登録","登録済"))
D5=IF(or(D4="","未登録"),"",VLOOKUP(D3,商品表,5,FALSE))

orが出てくると、うちの会社のお姉さま方は、途端に混乱します……
入力が無かった場合の対応については特にご提示ありませんでしいたが、
NAとかREFとか出るとお姉さま方が騒ぐので対応してみました(笑

05月02日 15:36 ★A
しまった、やっぱり間違えてる。(笑)
ISERRORはIFみたいに分岐はしてくれないんだってば!(笑)
D4=IF(D3<>"",IF(ISERROR(MATCH(D3,品名コード,0)),"未登録","登録済み"),"")
D5=IF(D4="登録済み",VLOOKUP(D3,商品表,5,FALSE),"")
D5も嫌な間違い方をしていたので書き直しました。
もう他の方の回答を見てしまっているのでアレですが(^^;

05月02日 17:36 ★D
D4=IF(COUNTIF(商品表,D3),"登録済み","未登録")
D5=IF(D4="未登録","",VLOOKUP(D3,商品表,5,))


05月02日 18:06 ★C
あーっ! D5の式に抜けが。・゚・(ノД`)・゚しかも携帯なのでテキストコピーができないっていうΣ
D5の式の「"未登録"」の前に「D4=」を……orz

05月02日 18:13 ★E
では、遅ればせながら、
D4: =If(IsBlank(D3),""If(Not(IsError(Vlookup(D3,商品表,2,0),"登録済み","未登録")
D5: =If(Or(IsBlank(D3),D4="未登録"),"",Vlookup(D3,商品表,5,0))

もう少しロジックを整理できれば、数式もすっきりできる余地を残しているような気もしつつ。

05月02日 19:46 ★F
皆様の解答を見て、そんな関数の使い方があるんだ〜と、
関心しつつ、問題の表を作って、解説を待っているところ・・です。

05月02日 19:46 ★C
思いついたら書かずにいられないので(笑)今更ながらD5の別解を…。
D5=IF(D4="登録済み",INDIRECT("G" & SUMPRODUCT(EXACT(商品コード,D3)*1,ROW(商品コード))),"")
INDIRECTを使うならこっちのほうがシンプルになるかなと。


05月08日 20:54 ★よっちゃん
なるほどー。 名前定義を使って綺麗にできましたね!(ちなみに問題では "品名コード" )
ちなみにシンプルさを求めるなら、それをちょいと変えて
=IF(D4="登録済み",INDIRECT("G" & SUMPRODUCT(EXACT(商品コード,D3)*ROW(商品コード))),"")
とした方が、 *1 の掛け算がなくなるので、なんかいいかなって思いました。

05月09日 10:04 ★C
しまった、品名コードでした(^^;
確かにそうですね、*1がない方がすっきりしますね!

正しい解答は続質問ページにあります。