エクセルのマクロの件で質問です。 =IF(ISERROR(VLOOKUP(B7,ビール!A:P,16,0))=TRUE,0,VLOOKUP(B7,ビール!A:P,16,0))
エクセルのマクロの件で質問です。 =IF(ISERROR(VLOOKUP(B7,ビール!A:P,16,0))=TRUE,0,VLOOKUP(B7,ビール!A:P,16,0)) このマクロは、B7に入力している「ウイスキー」という文字が、ビールという別シートに入力されていた場合、その文字から右16番目に入力されているものを引っ張ってくるというものですが、 右16番目、そこからさらに1こ下のものを引っ張ってくるにはどうしたらいいでしょうか? (例えば通常でしたらAにウイスキーという文字があったらAの16ですが、それをBの16から引っ張りたいのです) お願いします。。
Excel・42閲覧・250
ベストアンサー
まず これは マクロでは ありません ただの関数です マクロは プログラムを VBAというコンピュター言語で書いたものをいいます。 また 関数ですが =IF(ISERROR(VLOOKUP(B7,ビール!A:P,16,0))=TRUE,0,VLOOKUP(B7,ビール!A:P,16,0)) これは IFERROR関数を使えば もっと簡単になります =IFERROR(VLOOKUP(B7,ビール!A:P,16,0),0) これで Vlookup()関数がエラーになれば 0 エラーがでなければ VLOOKUP(B7,ビール!A:P,16,0)の 結果を表示できます。 ただ 問題が あります。 エラーの時0だと VLOOKUP(B7,ビール!A:P,16,0)で その値が 空白の時も 0に なります。 同じでいい あるいは 0の方がいいという場合は このままで 良いですが エラーと区別したいのであれば =IFERROR(VLOOKUP(B7,ビール!A:P,16,0),””) と 0でなく 空白の方が いいかと 本題ですが Vlookup関数では 検索した1行したということは できません そこで INDEX関数と MATCH関数を 使います =INDEX(ビール!P:P,MATCH(B7,ビール!A:A,0)) MATCH(B7,ビール!P:P,0)で B7の値を ビール!A:Aの中で探し、その行Noを 見つけます。 そして INDEX(ビール!P:P で P列の その行の値を 表示します そこで 其の1行下を出したいということなら MATCH(B7,ビール!P:P,0)+1 で 1行下になりますから =INDEX(ビール!P:P,MATCH(B7,ビール!A:A,0)+1) で できます そして エラー処理を 付け加えると =IFERROR(INDEX(ビール!P:P,MATCH(B7,ビール!A:A,0)+1),0) で いいかと
1人がナイス!しています
質問者からのお礼コメント
完璧な回答ありがとうございました。助かりました!
お礼日時:6/30 16:50