複数のワークシートに分けているデータリストすべての中から一致したデータを検索し、

複数の条件での値のいずれかを表示するようにしたい。
データリストの表はサイズ、項目が統一されています。現在の式は“IF”と“VLOOK”で構成されており、検索対象が別シート1だけの時は、計算されましたが、シートを追加したら#VALUE!エラーになってしまいます。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/10/04 16:38:14
  • 終了:2011/10/09 11:26:52

ベストアンサー

id:TransFreeBSD No.3

TransFreeBSD回答回数662ベストアンサー獲得回数2642011/10/05 20:39:04

ポイント300pt

複数のシートにまたがって検索するような関数はなかったように思います。

まずは中間結果を持つシートを作ってはどうでしょうか?

=IF(NOT(ISNA(VLOOKUP(Sheet1!K10,Sheet2!$K$10:$BH$174,8,FALSE))),VLOOKUP(Sheet1!K10,Sheet2!$K$10:$BH$174,8,FALSE),IF(NOT(ISNA(VLOOKUP(Sheet1!K10,Sheet3!$K$10:$BH$174,8,FALSE))),VLOOKUP(Sheet1!K10,Sheet3!$K$10:$BH$174,8,FALSE),~

こういった感じで、まずは検索結果の値を求めたシートを作って、それを利用してはどうでしょう。

これも長くなるということなら、各検索対象のシート毎に検索結果を持つシートを作ってもよいでしょう。

あと、こういう場合にやっとくと良い事をいくつか。

  • シートは適切なシート名にする。「検索対象1」「検索対象2」とか、「中間結果」「検索結果1」「最終結果」とか。
  • 何度も使う範囲は名前を付ける。数式タブの名前の管理などで操作できます。

名前で対応関係が出来ていると間違いが分かりやすいです(検索範囲1と言う名前で検索対象1シートの範囲に名前が付いていて、検索結果1シートで検索対象1を使うとか)。

また、範囲に名前を付けるのではなくて、indirect関数を使ってセル中に指定する方法もあります。

BCDEF
2Sheet1K10BH174
3=VLOOKUP(K10,INDIRECT($B$2&"!"&$C$2&$D$2&":"&$E$2&$F$2),8,FALSE)

とか。

id:htndrk

TransFreeBSD様

とても丁寧にご回答いただきまして感激しています。

ご案内の使用例等、大変参考になり、今後応用できればと思います。

簡単に説明しようと、Sheet1に計算結果、Sheet2以降にデータリストとしました。ここに記載の計算式は、1行あたり、43列それぞれの計算結果を求めるうちの、1セルだけを紹介しました。1セル分の計算式がわかれば条件を列ごとに変えるだけですし、せいぜい100行ぐらいですから、列ごと&行ごとにドラッグすればいいと思ったからです。一致するデータはそれらの列と、どこかの行に必ず1つだけあって、どの行かを定めるのにVLOOKを使いました。データリストは今のところ22シートでデータ行も増えるかもしれませんので、かなり余分に範囲指定していますが、計算結果のシートは毎日4シート(3シート+集計表)づつ増える予定ですので、いずれはBOOKも分けなければなりません。その辺から考え直さないとダメかもしれません。

2011/10/05 22:51:51

その他の回答(2件)

id:taknt No.1

きゃづみぃ回答回数13537ベストアンサー獲得回数11982011/10/04 16:58:29

ポイント300pt

http://allabout.co.jp/gm/gc/50028/

引数の指定の仕方が悪いと #VALUE!エラーが出ます。

http://www.excel.studio-kazu.jp/kw/20020625230516.html

ひとつのシートで なかったら 次のシートというやり方しかないですね。

id:htndrk

何度もお手間をおかけしました。へぼいPCですし、ACCESSもありません。

頭の悪い質問の仕方だったようで、目的の回答はえられませんでしたが、今後役立たせていただきます。分けたSheetは入力用。入力後は別Sheetに一括でデータが入るようにしましたので、参照Sheetが複数で無いためVLOOKはそのまま使えます。Sheetは1枚増えましたが、とっても簡単なので、満足しています。いろいろありがとうございました。

2011/10/09 11:08:02
id:Jupiter2100 No.2

じゅぴたー回答回数444ベストアンサー獲得回数742011/10/04 17:28:22

>複数の条件での値のいずれかを表示するようにしたい

これだけですと、どのような処理をすればいいか分かりません。

エラーが出ている関数式を紹介していただければ、何かアドバイスできるかもしれません。

id:htndrk

じゅぴたー様

ありがとうございます。VLOOK以外の方がいいのでしょうか?

検索したいデータは1つです。ただ、一致したセルを見つけても、表示が記号だった場合いの返し方などを“IF”で指示しています。

IF(L10="","",IF(VLOOKUP(K10,Sheet2!$K$10:$BH$174,8,FALSE)="","",IF(VLOOKUP(K10,Sheet2!$K$10:$BH$174,8,FALSE)="Tr"," Tr",IF(VLOOKUP(K10,Sheet2!$K$10:$BH$174,8,FALSE)="-"," -",ROUNDDOWN(

VLOOKUP(K10,Sheet2!$K$10:$BH$174,8,FALSE)/100*L10,2)))))

2011/10/05 14:10:17
id:TransFreeBSD No.3

TransFreeBSD回答回数662ベストアンサー獲得回数2642011/10/05 20:39:04ここでベストアンサー

ポイント300pt

複数のシートにまたがって検索するような関数はなかったように思います。

まずは中間結果を持つシートを作ってはどうでしょうか?

=IF(NOT(ISNA(VLOOKUP(Sheet1!K10,Sheet2!$K$10:$BH$174,8,FALSE))),VLOOKUP(Sheet1!K10,Sheet2!$K$10:$BH$174,8,FALSE),IF(NOT(ISNA(VLOOKUP(Sheet1!K10,Sheet3!$K$10:$BH$174,8,FALSE))),VLOOKUP(Sheet1!K10,Sheet3!$K$10:$BH$174,8,FALSE),~

こういった感じで、まずは検索結果の値を求めたシートを作って、それを利用してはどうでしょう。

これも長くなるということなら、各検索対象のシート毎に検索結果を持つシートを作ってもよいでしょう。

あと、こういう場合にやっとくと良い事をいくつか。

  • シートは適切なシート名にする。「検索対象1」「検索対象2」とか、「中間結果」「検索結果1」「最終結果」とか。
  • 何度も使う範囲は名前を付ける。数式タブの名前の管理などで操作できます。

名前で対応関係が出来ていると間違いが分かりやすいです(検索範囲1と言う名前で検索対象1シートの範囲に名前が付いていて、検索結果1シートで検索対象1を使うとか)。

また、範囲に名前を付けるのではなくて、indirect関数を使ってセル中に指定する方法もあります。

BCDEF
2Sheet1K10BH174
3=VLOOKUP(K10,INDIRECT($B$2&"!"&$C$2&$D$2&":"&$E$2&$F$2),8,FALSE)

とか。

id:htndrk

TransFreeBSD様

とても丁寧にご回答いただきまして感激しています。

ご案内の使用例等、大変参考になり、今後応用できればと思います。

簡単に説明しようと、Sheet1に計算結果、Sheet2以降にデータリストとしました。ここに記載の計算式は、1行あたり、43列それぞれの計算結果を求めるうちの、1セルだけを紹介しました。1セル分の計算式がわかれば条件を列ごとに変えるだけですし、せいぜい100行ぐらいですから、列ごと&行ごとにドラッグすればいいと思ったからです。一致するデータはそれらの列と、どこかの行に必ず1つだけあって、どの行かを定めるのにVLOOKを使いました。データリストは今のところ22シートでデータ行も増えるかもしれませんので、かなり余分に範囲指定していますが、計算結果のシートは毎日4シート(3シート+集計表)づつ増える予定ですので、いずれはBOOKも分けなければなりません。その辺から考え直さないとダメかもしれません。

2011/10/05 22:51:51
  • id:taknt
    じゅぴたーさんは、利用停止処分になりましたので、残念ながら 返信はないですね。

    あと IF文は うまく記述できてるのかな?
  • id:htndrk
    htndrk 様
    今回も回答をいただきありがとうございます。ご案内いただいたURLでは私には解決できませんでした。すみません。
    №2さんへ記述の式はデータリストが1シートだった時のもので、R10:BH174すべてのセルに正しい計算結果がでていましたので、もし“IF”式に間違いがあっても、計算できていたということです。データが増え、入力上不便だったためリストを小分けにし、それぞれのシートに整理しました。検索シートを増やした式(たとえばSheet2:Sheet10!)にすると、エラーになります。表は同じですが重複するデータはありません。初心者なので、マクロなどは使いたくありません。計算式を入れる表はSheet1にあり43x166セルです。いまのままでも長い式ですし、それをシートごとというのは無理ですし、VLOOKUPにこだわっていません。自分で調べたときそれが簡単だと思って使用していただけですので、他にも簡単な式があればお教えいただけるとうれしいです。
  • id:taknt
    >Sheet2:Sheet10!

    こういう使い方は ありません。
  • id:htndrk
    taknt様

    コメントは初回でご案内くださったようにVLOOKUP関数だと、Sheet1の部分をSheet2:Sheet10!に入れ替えてもダメ。という意味でしょうか?

    それとも残念ながら他に思い当たる便利な式が無いという意味なのでしょうか?
  • id:taknt
    >入れ替えてもダメ。という意味でしょうか?

    そうです。

    TransFreeBSDさんの回答のようにひとつひとつシートをチェックしていく
    やり方しかないです。


  • id:taknt
    とりあえず かなりの数のデータが増えるのであるならば、エクセル自体の使用を
    見合わせたほうが 無難かもしれません。

    つまり、ACCESS等のデータベースに移行させたほうが 今後のため、一番
    便利だと思われます。

    ま、何をしたいのかは さっぱりわかりませんので どういった運用にすればいいのかは なんともいえませんが。
  • id:htndrk
    複数のSheetに分けたデータリストは参照用Sheetに一括表示されるようにしましたので、引き続きVLOOKを、使えます。式を見直すと無駄などもみつかり、解決してみるとかなり簡単な方法で、なぜこれに気が付かなかったかとはがゆく思います。
    皆様ありがとうございました。いただいた回答は今後役立たせていただきます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません