• 締切済み

プルダウンリストで選ぶと、複数の項目(部品)が別シートに表示する方法を教えてください。

業務で使うシートを作りたいのですが、下記の内容についてご教示ください。 ある機械の整備項目(5年目整備、10年目整備、その他)をプルダウンリストにして、どれか選択すると、別シートに記載した選択した整備項目に必要な複数の部品が表示できるようにしたいのですが、 具体的には A2をプルダウンリストにし、 別表を下記のように作成し、 B7~B11=5年目整備    C7~C11=(軸受などの各部品) B12~B17=10年目整備   C12~C17=(モータなどの部品) B18~B19=その他     C18~C19=(その他部品) 適当な各セルに必要な部品が表示できるようにしたいので、 A3~A10=VLOOKUP(A2,B7:C19,2)としたのですが、うまくいきません。 (1)どこがおかしいか、 (2)別の良い方法はないか教示願います。

みんなの回答

noname#52504
noname#52504
回答No.5

#3です。 #4のお礼の状況を再現し、お礼にある式をそのまま入れてみたのですが、 私の環境ではきちんと動きました。 うまく行かないにしても、対象の数をカウントしてから検索しているので 対象がないはずがない⇒#N/Aが返るはずはないのですが…。 -2というのは、 MATCHが1始まりでカウントするのに対し、 OFFSETは0始まりで指定する必要があるので、 その兼ね合いで返すデータの位置を微調整しているだけです。 仮になくても位置がずれるだけで大勢に影響はありません。 データと数式を再度確認してみてください。 数式については、数式の一部分を選択してF9キーを押すことで、 その部分がどのような値を返すかがわかります。 F21が5年目整備のとき、F22の数式の各部分について、 (ROW()-ROW($F$21)) :1 COUNTIF($R$22:$R$85,$F$21) :19 MATCH($F$21,$R$22:$R$85,0) :1 が返っているかどうかをチェックしてみてください。

jun_katu
質問者

お礼

私の入力ミスでした。 無事に完成しました。今は上司に見てもらいさらに、追加の機能 をつけるか指示待ち中です。 何度も同じ質問してすみませんでした。

noname#52504
noname#52504
回答No.4

#3です。 1.挿入>名前>定義で、別表の部品群それぞれについて名前をつける。  _5年目整備:=Sheet2!$C$7:$C$11  _10年目整備:=Sheet2!$C$12:$C$17  _その他:=Sheet2!$C$18:$C$19  ※"名前"の先頭は数字にできないので、アンダーバーをつけます。 2.主シートのA3~A10を同時に選択して、下記のように入力し   配列数式としてまとめて確定(Ctrl+Shift+Enter)する。  =INDIRECT("_"&$A$2) 3.主シートのA3~A10を同時に選択して、書式>条件付書式 で下記のように設定する。  数式が/=ISERROR(A3)/書式:フォント白 (Excel2003で動作確認済) ****************************************************************************** 2では、配列数式を使う代わりに  =INDEX(INDIRECT("_"&$A$2),ROW()-ROW($A$2)) とする方法もあります。 また、その場合は、条件付書式を使って空白欄を処理する代わりに、  =IF(ISERROR(INDEX(INDIRECT("_"&$B$2),ROW()-ROW($B$2))),"",INDEX(INDIRECT("_"&$B$2),ROW()-ROW($B$2))) とすることもできます。  ****************************************************************************** この方法だと、数式自体は比較的シンプルになりますが、  >>別表を変更したときはその都度名前の範囲も変更しなければならない<< という欠点があり、別表が頻繁に動く場合には不向きです。 実際の運用に応じてご検討ください。

jun_katu
質問者

お礼

何度も質問すみません。 A3~A10: =IF((ROW()-ROW($A$2))>COUNTIF(Sheet2!$B$7:$B$19,$A$2),"",OFFSET(Sheet2!$C$7,MATCH($A$2,Sheet2!$B$7:$B$19,0)-2+(ROW()-ROW($A$2)),0)) (Excel2003で動作確認済) 略解 ・ROW()-ROW($A$2):自セルの行番号-A2セルの行番号 ⇒ N番目の部品 ・COUNTIF(Sheet2!$B$7:$B$19,$A$2):部品の数よりもNが多ければ空白を返す。 ・MATCH($A$2,Sheet2!$B$7:$B$19,0):その整備項目の最初の部品は別表の何番目か ⇒ M番目 ・別表の先頭セルからN+Mずらしたセルの値を返す(要微調整) という解答をいただいたのですが、諸事情で (1)整備項目が増えた(3パターン→4パターン) (2)各整備内容の部品点数が増えた。 (3)部品表の位置がずれた。 R22~R40=5年目整備    S22~S40=各部品 R41~R60=10年目整備    S41~R60=各部品 R61~R75=オーバーホール  S61~S75=各部品 R75~R85=その他      S75~S85=その他 (4)プルダウンはF21に作った。 前回同様、適当な各セルに必要な部品が表示できるようにしたいので、 解答を参考に F22~F42=IF((ROW()-ROW($F$21))>COUNTIF($R$22:$R$85,$F$21),"",OFFSET($S$22,MATCH($F$21,$R$22:$R$85,0)-2+(ROW()-ROW($F$21)),0)) としたのですが、F22~F42全てに#N/Aと表示されます。 おそらくは、関数にでてくる -2 が効いているのだと思います。 どうすれば、うまく表示できるのか再度教示願います。 前回、 A3~A10: =IF((ROW()-ROW($A$2))>COUNTIF(Sheet2!$B$7:$B$19,$A$2),"",OFFSET(Sheet2!$C$7,MATCH($A$2,Sheet2!$B$7:$B$19,0)-2+(ROW()-ROW($A$2)),0)) としたときの -2 の意味も教示願います。

noname#52504
noname#52504
回答No.3

(1)どこがおかしいのか VLOOKUPは、最初にHITした行についてただ一つの値を返します。 例えば、A5の式について言えば、 「同じ式が続いてて自分は3番目だから3回目にHITした行について返そう」 などとは考えてくれません。 ご要望の処理をVLOOKUPでやるのは無理があると思われます。 (2)別の良い方法はないか 色々考えては見ましたが、いずれにしろ一筋縄ではいきませんね。 素朴にやるとしてもこんな感じでしょうか。 以下、別表がSheet2にあるとして、 A3~A10: =IF((ROW()-ROW($A$2))>COUNTIF(Sheet2!$B$7:$B$19,$A$2),"",OFFSET(Sheet2!$C$7,MATCH($A$2,Sheet2!$B$7:$B$19,0)-2+(ROW()-ROW($A$2)),0)) (Excel2003で動作確認済) 略解 ・ROW()-ROW($A$2):自セルの行番号-A2セルの行番号 ⇒ N番目の部品 ・COUNTIF(Sheet2!$B$7:$B$19,$A$2):部品の数よりもNが多ければ空白を返す。 ・MATCH($A$2,Sheet2!$B$7:$B$19,0):その整備項目の最初の部品は別表の何番目か ⇒ M番目 ・別表の先頭セルからN+Mずらしたセルの値を返す(要微調整) 他にも ・部品群毎に名前をつけてINDIRECTで参照 ・別表の配置を複数列にしてOFFSETで参照 ・配列数式で処理 その他いろいろアプローチがあるでしょうが、取り合えずご参考まで。

jun_katu
質問者

お礼

>VLOOKUPは、最初にHITした行についてただ一つの値を返します。 例えば、A5の式について言えば、 「同じ式が続いてて自分は3番目だから3回目にHITした行について返そう」 正しく上記のように考えていました。急ぎではないので出来れば、 INDIRECT()関数を使った方法を教えていただけませんか? (INDIRECT()関数は学生自分にちょく*2使ってましたので) ひとつのセルについて関数が深くなりすぎると、後々エラーチェックするのに手間になり、私の力では解決不可能になるかもしれませんので。 ちなみに上に「(1)業務外の時間に作成するように(2)2機種(あと1機種分)作るように」言われていますので、締切りはあってないようなものなのでこれからもアドバイスよろしくお願いします。

noname#79209
noname#79209
回答No.2

基本的な疑問として、 各整備時期の整備項目が最大6項目ぐらいしかないようなので、 何もドロップダウンリストを使わずとも シートを3枚使って各整備時期用のシートを作成し、 それぞれに必要な項目を羅列するだけで良いように思いますが...

jun_katu
質問者

お礼

早急な回答ありがとうございます。 確かに整備内容ごとに各シートを作ることも考えたのですが、 今回の表については、ツールのカメラ機能で最終的に報告書の内容や部品の発注リストなどにも、反映できればと考えているのでできれば、質問で挙げたような内容で出来ないかと考えています。 何か他に方法があればご教示ください。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆下のURLがお役に立つのでは?

参考URL:
http://www.kenzo30.com/ex_kisopoint/onepoint_sonota3.htm#Q4
jun_katu
質問者

お礼

早急な対応ありがとうございます。 私の力不足もあり、まだうまくいきません。 この参考を例に考えてみたのですが、例えば、佐々木を選んだ時に営業区域の1つを表示するのではなく、全て表示する方法はありませんか?

関連するQ&A

  • プルダウンリストをシートにおこす マクロ??

    お世話になります。 セルB4にプルダウンで"氏名"をリスト選択するようにしています。 そのプルダウンのリスト ひとりひとり(Aさん・Bさん・Cさん・・・)を シートA、シートB、シートC・・・とコピーするマクロを組みたいのですがどのようにすればよういでしょうか。 宜しくお願い致します。

  • javascriptのプルダウンで項目外の表示可否

    javascriptのプルダウンで一覧から項目を選択したら、プルダウンに表示する文字を一覧とは違うものに出来るかどうか。 説明文が分かりにくかったら申し訳ございません。 図と文字で説明すると以下のような感じです。 ============================ 前提:リストに表示させる項目は「ああああ」「いいいい」「うううう」 1.まず、プルダウンを開きます。  [    ▽]  ――――― |ああああ| |いいいい|←「いいいい」を選択する |ううううう |  ――――― 2.項目を選択する。  [2番目▽]←「いいいい」を選択したが、「2番目」とプルダウンに表示させる。 3.またプルダウンリストを開く  [2番目▽]  ――――― |ああああ| |いいいい| |ううううう |  ――――― 「2番目」と表示されたまま最初にあった全ての項目が表示される。 プルダウンは複数行あるグリッド(javascriptでもこの部品名か分かりませんが、エクセルみたいに動作する部品です)でA列に同じ種類が置かれます。 ↓こんな感じで  A列 | B列 | C列 |←ヘッダ部 ―――――――――――― [  ▽]|     |    | ←ボディ ―――――――――――― [  ▽]|     |    | ―――――――――――― [  ▽]|     |    | ―――――――――――― ============================ 上記のような動作はjavascriptでは可能でしょうか? javascriptは門外漢で、プログラマーにjavascriptでは出来ない!と言われてしまっているのですが、VB的には出来るのだからjavascriptでも出来るのではないかと思っています。 ただ、動作させる場所がweb上なので自分が思っているものとは制限が違うのではないかもと思い、意見を言えない状態です。 ご存知のいらっしゃいましたら  ・可能か否か 出来れば  ・どのような作り方であれば実現できそうか (プルダウンを開いた時と閉じた時で処理を走らせればいいとか簡単でいいので) などを教えていただければ幸いです。 よろしくお願いいたします。

  • プルダウンリストを別セルの値によって変える。

    あるセルにプルダウンリストを設定したいのですが、表示させるリストを同行の別セルの値によって変更したいのですがいい方法があるでしょうか? 例)参照セル   A列 → 1,2,3のいずれか数値が事前に入力されている。   プルダウン  B列 → A列値が1 or 2であればリストとして停止or残す の2値を選択。               B列値が3であれば削除or残すの2値を選択。  よく2つのプルダウンリストを連動させる方法は検索でヒットしますが、上記の様な方法がわかりません。わかる方ご教示願います。

  • エクセル2007で条件によってプルダウンリストを

    エクセル2007でリストを3項目って可能ですか? リスト用シートとして 得意先 あ い う 3社を"得意先"と名前定義付け 得意先「あ」の商品 a b c "あ商品名"と名前定義付け 得意先「い」の商品 f g h "い商品名" 同上 得意先「う」の商品 アイウ "う商品名" 同上 商品名「a」の数量 50 商品名「b」の数量 1000 商品名「c」の数量 10 ・・・ と数量が決まっている。-----ここまでリスト用シートに作成 で、 データ用シート(別シート)として、A列を得意先「あいう」から選択し、「あ」を選択したらB列は「abc」のプルダウンから選択し、「a」を選択したらC列には50が自動で入るということがしたいのです。 またこの場合、リスト用シートの入力方はどんな形でもよいのでしょうか?数式も含めてお助け下さい。

  • 2段階でプルダウン表示したいのですが・・・

    1つ目の項目を入力規則でプルダウン表示させ、その項目におおじて次の項目が選択されてプルダウン表示にしたいのですが方法がわからないので教えてください。 できればマクロを使わない方法があればお願いします。 例  シート1    種類     価格 A   みかん    200 B   すいか    300 C   柿      200   シート2      種類     価格 A    トマト    200 B    キュウリ   100 C    レタス    150   のような一覧があって果物・野菜のプルダウンから選ぶとその中の一覧にあるものを表示させたいのです。初心者なので伝わりにくいかと思いますがわかる方教えてください。

  • EXcelでプルダウンをつくかって別シートに!

    Excelでプルダウンにして、特定の項目で別シートにリンクさせたい。 セル上にプルダウンの設定をして、項目を数種類入れます。 選択されたある項目で別シートに移ってそこで入力をしたい。 どのようにしたらいいのでしょうか?

  • エクセルでプルダウンリストで入力

    エクセルで 例えば※A1セルにプルダウンリストで入力できるようにします。 そのプルダウンリストが別のワークシートの A列の内容が表示されそのなかから何か1つを選択したとすると、 そのわきのB列のデータが※A1に選択されるようにすることは出来ますか? インターネットで調べてみたのですが、 見つけることができませんでした。 根本的にできないでしょうか? くわしい方いらっしゃいましたら 教えてください。 よろしくお願いします。

  • Excelのプルダウンリスト

    Excelのプルダウンリストを選択しこんな風に表示したいのですが可能でしょうか。 A2セルにプルダウンリストを表示「砂糖、りんご、卵」 砂糖を選択した場合Sugar、リンゴを選択した場合Apple、卵を選択した場合Eggというように、「A2」のセルに表示する。 もしくは、A2セルにプルダウンリストを表示「砂糖、りんご、卵」 B2セルに対応の語句を表示(Indirect関数使用) 印刷時にはプルダウンの選択に関わらず、A2セルは常に「品目」と表示させる。 (B2にデータが表示された時点でA2の表示が「品名」になるのが理想的です) やり方がお分かりの方がいらしたらお手数ですがご教示ください。

  • 【エクセルVBA】2つのプルダウン選択→コマンドボタンクリック→シート移動がしたい

    sheet1に2つのプルダウンリストを作ります。 1つは人名、もう1つは年月を選択できます。 人名をa,b,c 年月を2009年5月、2009年6月、2009年7月 とします。 またa09.5、a09.6、a09.7、b09.5、b09.6、b09.7、c09.5、c09.6、c09.7というシートを用意します。 例えば人名をa、年月を2009年5月と選択し、 ボタンクリックすると a09.5 というシートに移動し、 人名をc、年月を2009年7月と選択し、 ボタンクリックすると c09.7 というシートに移動するようにしたいです。 この時、 Private Sub CommandButton1_Click()と End Sub の間にどう入力すべきか教えていただきたいです。 よろしくお願いします。

  • 一致する文字列がある行だけを、別BOOKのプルダウンリストに表示させる方法

    OFFICE 2003のエクセルで作成した下記のような3つのBOOKがそれぞれあり、BOOK1のシートはマスターで、「案件NO」「案件名」「進捗」「メンバ1」「メンバ2」「メンバ3」の項目がある。 BOOK2とBOOK3のシートには「案件NO」「案件名」「進捗」「概要」「報告」の項目があります。 例えば、BOOK1のセルD2~F2の中のいずれかのセルに表示されているメンバの名前を参照し、「山田」と名前が入っているセルがある場合は、その同じ行の「A列、B列、C列」のセルをBOOK2の「A列、B列、C列」に設定したプルダウンリストの中に表示させる。 (つまり、山田さんの名前が入っている案件情報だけをプルダウンリストに表示する) また同様に、メンバ欄に「森」が入っている行の「A列、B列、C列」のセルをBOOK3の「A列、B列、C列」に設定したプルダウンリストの中に表示させる。 (森さんの名前が入っている案件情報だけをプルダウンリストに表示する) 上記のように、案件マスターを参照し、担当者ごとに作成している別ブックのセルにに設定してあるドロップダウンリストの中に、メンバ欄の中に自分の名前が入っている案件だけをリストアップすることは、可能でしょうか? ※ BOOK1は、自由に編集することができ、数千件のデータが入っている ※ BOOK2とBOOK3の「A,B,C」各列はドロップダウン設定がされている。   BOOK1のデータとリンクしており、自分が担当している案件だけが、ドロップダウンリストの中に表示される。担当以外の情報は表示されない。)   列(D,E)は、自由に編集できるようになっている。 BOOK1のシート(1) 「案件情報マスター」    A      B      C      D      E     F 案件NO   案件名   進捗   メンバ1   メンバ2   メンバ3 1 111111   あああ    A    山田    吉田      森 2 222222    いいい    B     森    吉田     佐藤 3 333333   ううう     C     伊藤     吉田      佐藤 4 444444   えええ     A     佐藤     森      佐藤 5 555555   おおお     B     吉田    山田      佐藤 ---------------------------------------------------------------- BOOK2のシート(1) 「山田さんのブック」    A       B       C      D      E       案件NO    案件名    進捗    概要    報告 1 11111     あああ      A     ****    ○○○  2 555555    おおお    B     ****    △△△ ---------------------------------------------------------------- BOOK3のシート(1) 「森さんのブック」    A       B       C      D      E      案件NO    案件名    進捗    概要    報告 1 11111    あああ     A     ****    ○○○ 2 222222    いいい     B     ****    ××× 3 444444    えええ     A     ****    □□□ ---------------------------------------------------------------- わかりずらい文章ですみません m(_ _;)m メニューの「挿入」→「名前」→「定義」名前の定義をすれば、別シートのリストをプルダウンで表示させることができ、またINDIRECT関数を利用すれば3つのドロップダウンリストを連動させることができると言うことは調べてみてわかったのですが… 他のBOOKを参照し、複数のセル(D列~F列)を参照し、そのいずれかのセルに一致する文字列がある場合のみ、その行の複数セル(A列~C列)を 別BOOKに設定しているドロップダウンリストに表示させることができるようにし、各メンバごとに管理できるBOOKを作成したいと思っております。 よい方法があれば教えていただけると幸いでございます。 宜しくお願い致します。

専門家に質問してみよう