• 締切済み

Excelにてプルダウンの情報を参照しデータ挿入

こちらではいつも大変お世話になっております。 よろしければまたご教授いただけると幸いです。 現在便利なシフト表を作成するため、VBAやマクロを勉強しながら作成しています。 実現したい機能としましては、プルダウンから店舗名を作成し、選択した店舗に所属する社員名を セルに表示したいと考えております。 店舗名と社員名との結びつけ?を行い、参照したものを表示するという所でとても悩んでおります。 別シートに店舗情報や、社員情報を記載したものを作成したのですが、ここからどのように進めていけばよいかわからずつまずいております。 そもそも別シートに情報を起き、参照させるというような方法でこの機能は実現できるのでしょうか? ご教授の程よろしくお願いいたします。 添付の画像は、実現したい機能のイメージになります

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 失礼ながら、御質問欄に添付されている画像の例では、毎日同じ店員の名前が表示されていて、シフトは行っておられない様に見えるのですが、それでも宜しいのでしょうか?  もし、シフトを行うのだとしますと、日によって(列によって)表示する店員の名前を変えなくてはなりませんが、その方法を回答するためには、どの様なルールで各日付ごとに表示させる店員を決めるのか、という情報が必要になります。  ですから、シフト表とするのでしたら、その日に担当する店員を、どの様な決め方で選ぶのかを御教え願います。  尚、もし、日が変わっても、表示する店員の名前を変えなくとも良いのでしたら、以下の様な2通りの方法が御座います。 【方法その1】VLOOKUP関数を使う方法  今仮に、Sheet1のA1セルに、店舗名をドロップダウンリストで入力するものとします。  又、下の添付画像の上の表の様に、Sheet2のA2~A7に店舗名を入力しておき、Sheet2のB列~G列に各店舗ごとの店員の名前を入力した表を作成しておくものとします。  その場合、まず、Sheet1のA1セルに、ドロップダウンリストを設定する際には、「元の値」欄に =INDIRECT("Sheet2!A2:A7") と入力して下さい。  尚、質問者様が御使いになられているExcelのバージョンがExcel2007以降のものである場合には、「元の値」欄で指定する際に、 =Sheet2!$A$2:$A$7 とする事も出来ます。  次に、1人目の店員名を表示させるセルに次の関数を入力して下さい。 =IF(ISERROR(1/(VLOOKUP($A$1,Sheet2!$A:$G,ROWS($3:3)+1,FALSE)<>"")),"",VLOOKUP($A$1,Sheet2!$A:$G,ROWS($3:3)+1,FALSE))  そして、「1人目の店員名を表示させるセル」をコピーして、2人目以降の店員名を表示させるセル範囲に貼り付けて下さい。 【方法その2】HLOOKUP関数を使う方法  今仮に、Sheet1のA1セルに、店舗名をドロップダウンリストで入力するものとします。  又、下の添付画像の下の表の様に、Sheet2のB1~G1に店舗名を入力しておき、Sheet2の2行目~7行目に各店舗ごとの店員の名前を入力した表を作成しておくものとします。  その場合、まず、Sheet1のA1セルに、ドロップダウンリストを設定する際には、「元の値」欄に =INDIRECT("Sheet2!B1:G1") と入力して下さい。  尚、質問者様が御使いになられているExcelのバージョンがExcel2007以降のものである場合には、「元の値」欄で指定する際に、 =Sheet2!$B$1:$G$1 とする事も出来ます。  次に、1人目の店員名を表示させるセルに次の関数を入力して下さい。 =IF(ISERROR(1/(HLOOKUP($A$1,Sheet2!$1:$7,ROWS($3:3)+1,FALSE)<>"")),"",HLOOKUP($A$1,Sheet2!$1:$7,ROWS($3:3)+1,FALSE))  そして、「1人目の店員名を表示させるセル」をコピーして、2人目以降の店員名を表示させるセル範囲に貼り付けて下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

各店舗のシフト表といっても各店舗の名前の付いたシートについて4月なら4月のシフト表が載っているのですか?そうであればお求めのシートではA1セルにはシート名と同じ店舗名をプルダウンリストから表示させます。 A2セルには次の式を入力してG2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(INDEX(INDIRECT($A$1&"!A:G"),ROW(A1),COLUMN(A1))="","",INDEX(INDIRECT($A$1&"!A:G"),ROW(A1),COLUMN(A1))) これでA1セルで選ばれたシートがそのまま表示されることになります。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

例えば基本的な手順としては。 準備: シート2の1行目に店舗名を列記 2行目以下に各店舗の社員名を列記 シート1のA1セルに入力規則で店舗名を選択できるように準備 手順: シート1のA4セルに =IF($A$1="","",HLOOKUP(Sheet2!$A:$Z,$A$1,ROW(A2),FALSE)&"") と記入し,下向けに(一日分のセル数)コピー その1日分をヒトカタマリにしてコピー,毎日の欄に貼り付けて完成。 それで。 数式じゃ困る生データを記入しておきたい,という事で特に困っているご相談なら,同じ考え方でマクロに生データを記入させます。 準備: シート2の1行目に店舗名を列記 シート2の2行目以下に各店舗の社員名を列記(最大6名) シート1のA1セルに入力規則で店舗名を選択できるように準備 シート1のA4:A9,B4:B9…,A13:A18,B13:B18…に転記したい 手順: シート1のシート名タブを右クリックしてコードの表示を開始 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  dim res as range  if target.address <> "$A$1" then exit sub  range("A4:Z9,A13:Z18").clearcontents  if target = "" then exit sub  set res = worksheets("Sheet2").range("1:1").find(what:=target, lookin:=xlvalues, lookat:=xlwhole)  if res is nothing then exit sub  res.offset(1).resize(6,1).copy range("A4:Z9,A13:Z18") end sub ファイルメニューから終了してエクセルに戻り,A1セルを書き換えると自動でコピーしてきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelにてプルダウンの情報を参照しデータ挿入

    現在便利なシフト表を作成するため、VBAやマクロを勉強しながら作成しています。 実現したい機能としましては、プルダウンから店舗名を作成し、選択した店舗に所属する社員名を セルに表示したいと考えております。 店舗名と社員名との結びつけ?を行い、参照したものを表示するという所でとても悩んでおります。 別シートに店舗情報や、社員情報を記載したものを作成したのですが、ここからどのように進めていけばよいかわからずつまずいております。 そもそも別シートに情報を起き、参照させるというような方法でこの機能は実現できるのでしょうか? ご教授の程よろしくお願いいたします。 添付の画像は、実現したい機能のイメージになります

  • Excelにてプルダウンリストからのデータ挿入

    現在Excel、VBAを勉強しながら便利なシフト表の作成をおこなっております。 プルダウンリストから店舗名を表示し、選択した店舗名を参照し、その月のシフト表に所属する店舗の社員名を埋め込みたいと考えています。 現在はすべての日の社員名セルすべてに埋め込む形で考えています。 また、現在社内で利用しているデーターベースから、社員情報を抜き出したものを別シートに貼り付けているのですが、この情報を参照し、実現できないかと考えております。 シートに置いてある社員情報から、店舗名とどのように結びつけ?を行い社員情報を表示させるかという点でとても悩んでおります。 よろしければご教授お願いいたします。 以下は動作イメージの画像になります。

  • Excelでプルダウンと連動して日付表示を変える方法。

    Excelでプルダウンと連動して日付表示を変える方法。 Excelについてご教授お願いいたします。 現在Excelの勉強中で、勤務表などを作成したいと考えています。 プルダウンから2010年01月など日付を選ぶだけで、その選択したリストに連動して、下の部分にその月ごとの日付や曜日が表示されるようにするにはどのように設定すればよろしいのでしょうか? プルダウンリストの月ごとに29日、30日、31日と表示を変化させるためには、別sheetを参照するプルダウンリストの作成などで作成できるものなのか、それともVBAを新たに勉強する必要がありますでしょうか? 方法を教えていただければ幸いです。

  • Excelにてリストから表示した月の日付を表示する

    よろしければExcelについてご教授下さい。 Excelを利用し便利なシフト表を作成するため現在勉強をしております。。 下記に添付してあるような形で、リストから月を選択し、その選択した月の日付を セルに表示していきたいと考えております。 方法としては別のシートを参照するプルダウンリストの作成で実現はできるのでしょうか? それとも、VBAを勉強する必要があるでしょうか? ご教授頂ければ幸いです。 よろしくお願いいたします。

  • エクセルのプルダウンについて

    プルダウンに数値及び数式、他のシートのセルを入れて、選択するにはどのようにすれば良いのでしょうか? プルダウンで数式を選択し計算を目的としています。 例) ▼1200  =SUM(A1:A2:A3)  =sheet2!A15 です。 数値のみはうまくできますが、数式・他シートのセルの関連付けが上手くできません。 どなたか、ご教授の程宜しくお願いします。

  • Excelのプルダウンで2列分の情報を表示して、セルには片方のデータを入れたい。

    Excelのプルダウンで 国番号・・・あるシートのA1~A8まで 国名・・・国番号と同じシートのB1~B8まで 2種類のリスト名をつけたとして、 別のシートのプルダウンメニューで 選択肢には国番号と国名を両方表示し、 セルに入力されるものを国番号だけにしたいのですが 何か良い方法はありませんでしょうか? 御教授お願い致します。

  • エクセル 生年月日(プルダウン)→年齢表示

    エクセルの操作についてお知恵を貸していただきたく、 よろしくお願いします。 シート1で和暦の生年月日をプルダウン式で選択し、 シート2でシート1で選択した生年月日の表示、同時に横のセルに 年齢を表示させたいと考えています。 試しに、「データの入力規則」より以下のリストを作成しました。 (1)A1に「明治、大正、昭和、平成」の和暦リスト (2)B1に「1~63」の年リスト (3)D1に「1~12」の月リスト (4)F1に「1~31」の日リスト が、シート2に生年月日を表示させることはできても、 年齢計算が出来ません。 (和暦・年・月・日を別々のセルに表示させる形になり、 生年月日として認識されないため) フォームコントロールのコンボボックスなどを使えば 実現できるのでしょうか? 何か良い方法があればご教授いただきたいです。 もしvbaなどで実現可能な場合は、マクロの式など教えて いただけると助かります。

  • セルのデータを参照してシート作成

    VBAなどを使い一括で作業できるようにしたいのですが。 ある列に40個近くデータがあり、 そのデータを参照して、40個シートを作成し セルのデータを元にシートにシート名を付けて 作成することは可能でしょうか? どなたかお願いします。

  • エクセル ワークシートの参照

    別のファイルの特定のシートを見れるように今のブックにシート追加してみれるようにしたいのですが、可能でしょうか。 それはシートをコピー作成するのではなくて、元のデータが変われば、表示するデータも変わるようにしたいのです(手動更新でOK)。 参照するシート名は、表示させるブックのシート名「テスト」セルA1の値です。 宜しくお願いします。

  • Excel2003でのプルダウンリストの設定方法についてお聞きします。

    Excel2003でのプルダウンリストの設定方法についてお聞きします。 『入力規則から作成するプルダウンリスト』でも 『フォームから作成するコンボボックス』でもない、プルダウンリストを作成したいのです。 色々検索したり試行錯誤しましたが、設定方法を見付けられませんでした。 VBAかな?とも思ったのですが分からず。添付ファイルをご参照ください。 作成したいのは赤い矢印のプルダウンリストになります。 WEB上で見かけるアンケート等にある様なプルダウンリストで、セル自体に埋め込まれて?います。 セルがアクティブになっていなくとも常に表示されていて、選択肢は別シートからリンクされています。 右クリックも切り取りも削除も出来ず、セルに数式が入っている形跡もないのです。 どなたかご存知の方がいらしゃいましたら、ご教示ください。 評価・お礼は共にさせて頂きます、どうぞ宜しくお願いいたします。

専門家に質問してみよう