• ベストアンサー

LOOKUP式について

ヘルプ等参照しましたが分かりませんでしたので、皆様のお力をお貸し下さい。 EXCELの検索式「LOOKUP」について教えてください。 言葉では伝えにくいので、こちらのエクセルファイルを参照していただければと思います。 http://watanabe-mfg.co.jp/hasimoto/LOOKUP.xls 簡単に説明しますと、複数の検索結果がでず同じ値になってしまうので対処方法があるのかどうかです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.7

出勤伝票シートのA4セルに =IF(ISNA(VLOOKUP("1-1",原紙!$A$14:$A$49,4,FALSE)),"",VLOOKUP("1-1",原紙!$A$14:$A$49,4,FALSE)) とありましたが、 =IF(ISNA(VLOOKUP("1-1",原紙!$A$14:$G$49,5,FALSE)),"",VLOOKUP("1-1",原紙!$A$14:$G$49,5,FALSE)) ではないでしょうか? まず、参照する範囲は原紙!$A$14:$A$49の一列ではなく、支出まで拾うなら$A$14:$G$49と広げなくてはいけません。1列しかない範囲の4列目を拾うように式を書いているので参照エラー(#REF!)が出るのです。 その参照する範囲の4列目ではなく5列目でしょう?(結合されたD列もカウントします)

0909neko
質問者

お礼

有難うございます!すっきり解決致しました。 vlookup式の仕組みがやっと理解できました。 結合部もカウントするんですね。 勉強になりました。有難うございました!

その他の回答 (6)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

#2、3、5です。具体的に書くと =IF(ISNA(VLOOKUP("1-3",$B$2:$C$6,2,FALSE)),"",VLOOKUP("1-3",$B$2:$C$6,2,FALSE)) です。 多分、実際には検索値の"1-3"の部分は、セル参照にする場合がほとんどだと思いますが・・・。

0909neko
質問者

補足

具体的に有難うございます。 VLOOKUPを使うとヘルプの >列番号が範囲の列数より大きいときは、エラー値 #REF! が返されます。 になってしまいます。 「列番号が範囲の列数より大きいとき」というものがいまいち理解できません。 http://watanabe-mfg.co.jp/hasimoto/Book2.xls ファイル添付しています。確認お願い致します。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

> しかし1-1、1-2、でグループ分けした場合で、1-3が存在しない場合 > >=IF(ISNA(LOOKUP("1-3",$B$2:$B$6,$C$2:$C$6)),"",LOOKUP("1-3",$B$2:$B$6,$C$2:$C$6)) > の式だと1-1、1-2と同じ値になってしまいます。 > 対処式はありますでしょうか? ただのLOOKUPを使っているからです。 VLOOKUPで =VLOOKUP(検索値,範囲,列番号,検索の型)とすればそういう問題は起きません。 http://www.yoshikawa.co.jp/ybs/skilup/ybs0308.htm

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.4

基本となるリスト(sheet)から、ある条件(グループ名)に合致するデータを抜き出して、新たなリストを作成したいのではないかと思いました。 もしそうであれば、下記 URL に解説されているような<クエリウィザード> の利用が適していると思います。 http://www.x-media.co.jp/tyoufaq/faq27.shtml

参考URL:
http://www.x-media.co.jp/tyoufaq/faq27.shtml
0909neko
質問者

お礼

有難うございます。 こういった参照の方法もあるのですね。 参考にこちらの方法でも製作してみようと思います^^

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

#2です。 > =LOOKUP("4",$B$2:$B$6,$C$2:$C$6) > グループ値が存在しないと#N/Aと表示されるので、 > 空欄にしたい =IF(ISNA(LOOKUP("4",$B$2:$B$6,$C$2:$C$6)),"",LOOKUP("4",$B$2:$B$6,$C$2:$C$6)) にしてみてください。

0909neko
質問者

補足

>書式形式を文字列にしてみてください 有難うございます。解決しました。 しかし1-1、1-2、でグループ分けした場合で、1-3が存在しない場合 >=IF(ISNA(LOOKUP("1-3",$B$2:$B$6,$C$2:$C$6)),"",LOOKUP("1-3",$B$2:$B$6,$C$2:$C$6)) の式だと1-1、1-2と同じ値になってしまいます。 対処式はありますでしょうか?

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> グループを1-1、1-2と、グループ1の中の1~という方法も試しましたが1-1と指定すると日付が表示されてしまい不可能でした。 セルの書式を文字列に変えてから、1-1と入力してください。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

LOOKUP は関数なので、1つの条件(引数)に対して、1つの結果を返します。 しかし、文面を拝見すると、1つの条件に対して、複数の結果を返して欲しいように読み取れますが、このとおりでしょうか。 グループ "1" を設定すると、科目には"福利厚生費"と"旅費交通費"、概要には"書留"と"経理課" を表示させたいとおっしゃっているのでしょうか。 たぶん、関数だけでは実現できないと思います。

0909neko
質問者

お礼

有難うございます。 >グループ "1" を設定すると、科目には"福利厚生費"と"旅費交通費"、概要には"書留"と"経理課" を表示させたいとおっしゃっているのでしょうか。 その通りです。1つの条件に対して~ということはやはり無理なのでしょうか? グループを1-1、1-2と、グループ1の中の1~という方法も試しましたが1-1と指定すると日付が表示されてしまい不可能でした。 LOOKUP以外の式でも可能なものはありますでしょうか。

関連するQ&A

専門家に質問してみよう