• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelの使い方で相談させて下さい。下記のような仕様で、本・支社を選)

Excelの使い方で本・支社を選ぶことでリストボックスに作業項目と料金を連動させる方法を教えてください

このQ&Aのポイント
  • Excelの使い方で、本・支社を選ぶことでリストボックスに表示される作業項目と料金を連動させる方法を教えてください。
  • A1セルに本・支社の選択ボックスを設け、A2に作業項目、A3に料金が表示されるようなシートで考えると、INDIRECT関数を使うことで連動させることができます。
  • 唐突に質問させて頂いて恐縮ですが、Excelでの連動方法が分からないので、どなたかご教授いただけますでしょうか。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

こちらを参考にしてください ワークシート上でリスト入力 [元の値]を動的に変化させる http://officetanaka.net/excel/function/tips/tips05.htm 東京AAA~東京EEE のところを東京本社という名前にして、リストのい元の値を =INDIRECT($A$1) にするという感じですね。

itogroup
質問者

お礼

この度はどうもありがとうございます。参考サイトも見させて頂きました。 今後のExcel活用の参考にさせて頂きたいと思います。ありがとうございました。

その他の回答 (6)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

参考までに、 提示した名前定義の数式は、Sheet1に一覧データがあり、Sheet1のセルに名前を定義したのですべてのセル参照に「Sheet1!」がついていますが、別シートで設定する場合はそのシートで名前定義を開始して「Sheet1!E2」の部分を「E2」のようにしてください(単純なセル参照で自動的にシート名が取得されます)。 たとえば、別シートのA列に本支社名が入力されていて、B列にリストを表示するなら、B2セルを選択して「A2」と入力することになります。 =OFFSET(Sheet1!$A$1,MATCH(A2,Sheet1!A:A,0)-1,1,MIN(INDEX((OFFSET(Sheet1!$A$1,MATCH(A2,Sheet1!A:A,0),0,100,1)="")*100+ROW(Sheet1!$A$1:$A$100),)),1)

itogroup
質問者

お礼

この度はどうもありがとうございます。 今後のExcel活用の参考にさせて頂きたいと思います。ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

シート1のA,B,C列にお示しの表が入力されているとします。 1行目は項目名で2行目から下方にデータがあるとします。 作業列をD列に作るとしてD2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(COUNTIF(A$2:A2,A2)=1,AND(B1<>"",B2="")),INT(MAX(D$1:D1))+1,IF(AND(A2="",B2<>""),MAX(D$1:D1)+0.01,"")) また、F2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>MAX(D:D)-1,"",INDEX(A:A,MATCH(ROW(A1),D:D,0))) つぎにお求めの表ですがシート2に作るとしてA列には本・支社区分のB列には作業項目、C列には料金を表示させるとします。 初めにA列を例えばA1セルからA100セルを選択して「データの入力規則」から「リスト」を選択し元のデータには次の式を入力します。 =INDIRECT("Sheet1!F1:F100") 同様にB列を例えばB1セルからB100セルを選択して、元のデータには次の式を入力します。 =INDEX(INDIRECT("Sheet1!B:B"),MATCH(A1,INDIRECT("Sheet1!A:A"),0)):INDEX(INDIRECT("Sheet1!B:B"), MATCH(INDEX(INDIRECT("Sheet1!D:D"),MATCH(A1,INDIRECT("Sheet1!A:A"),0))+1,INDIRECT("Sheet1!D:D"),0)-1) C1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B1="","",INDEX(Sheet1!C:C,MATCH(B1,Sheet1!B:B,0))) データの入力規則では他のシートを参照するにはINDIRECT関数を使うことで対応できませね。

itogroup
質問者

お礼

この度はどうもありがとうございます。 今後のExcel活用の参考にさせて頂きたいと思います。ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

間違えたレイアウトの違う添付画像を送付してしましましたので、再度アップします。

itogroup
質問者

お礼

この度は画像まで付けて頂いて、どうもありがとうございます。 今後のExcel活用の参考にさせて頂きたいと思います。ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

提示された、1行目が項目名でA2セルから下に入力されているレイアウトの表をそのまま使う場合(ただし、データの最終行のA列の1つ下のセル、添付画像のデータならA14セルにはデータの終了を示す空白スペースを入力してください)、以下のような名前定義を行えば、たとえばE2セルに入力された本・支社名から自動的にF2セルにその作業項目のリストが表示され、G列に金額が自動的に入力されるシートを作成することができます(添付画像参照)。 入力規則を作成するF2セルを選択して、「挿入」「名前」「定義」で、たとえば「作業項目」と名前を付け、参照範囲に以下の式を入力します。 =OFFSET(Sheet1!$A$1,MATCH(Sheet1!E2,Sheet1!A:A,0)-1,1,MIN(INDEX((OFFSET(Sheet1!$A$1,MATCH(Sheet1!E2,Sheet1!A:A,0),0,100,1)="")*100+ROW(Sheet1!$A$1:$A$100),)),1) 「データ」「入力規則」で「リスト」を選択して「=作業項目」と入力します。 その横のG2セルには以下の式を入力します。 =IF(F2="","",VLOOKUP(F2,B:C,2,0))

itogroup
質問者

お礼

この度はどうもありがとうございます。追加で頂いた画像も見させて頂きました。 今後のExcel活用の参考にさせて頂きたいと思います。ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 今日は画像のアップが上手くできません。 どうも調子が悪いみたいです。 当方のコンピュータが悪いのかどうか判りませんが・・・ 少し時間をあけて、後ほど画像のアップに挑戦してみます。 どうも何度も失礼しました。m(__)m

itogroup
質問者

お礼

この度はどうもありがとうございます。 またの機会に、宜しくお願い致します。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 当方使用のExcel2003の場合ですが、 別Sheetのデータを入力規則のリスト範囲に設定できないと思いますので、 質問にあるように名前定義しておきます。 表の作成方法を上手に行えば名前定義は簡単だと思います。 ただ、今回の場合は料金を表示させなくてはならないので、↓の画像のような表にしてみました。 名前定義の方法は幾通りかありますが、一番簡単な方法で説明します。 Sheet2のA2~A4セルを範囲指定 → 名前ボックスに直接「本・支社」と入力 同様に、C2~C6を範囲指定 → 「東京本社」と名前定義 C8~C12を範囲指定 → 「名古屋支社」と名前定義・・・ といった具合にすべて本・支社部分のA列の名前定義したものと一致するように名前定義します。 そして、Sheet1のA1セルをアクティブにし、メニュー → データ → 入力規則 → リスト を選択し、 元の値の欄に =本・支社 (←これは先ほど名前定義したものを入力) A2セルも同様にリストの「元の値」の欄に =INCIRECT(A1) としてOK! これでA2セルはA1セルで選んだものの中からリスト候補が絞られます。 最後にA3セルに =IF(COUNTBLANK(A1:A2),"",INDEX(Sheet2!D:D,MATCH(A2,Sheet2!C:C,0))) という数式を入れています。 以上、長々と書いてしまいました。 参考になればよいのですが・・・m(__)m

itogroup
質問者

お礼

この度はどうもありがとうございます。 今後のExcel活用の参考にさせて頂きたいと思います。ありがとうございました。

関連するQ&A

専門家に質問してみよう