• ベストアンサー
※ 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

  • Excelの関数に詳しい方、お願いします。

    わかりづらい説明かもしれませんが、よろしくお願いします。 例として、 AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF ・ ・ ・ といった文字列がエクセルの先頭列A1~A100までずらりと並んでいるとします。 各アルファベットには任意の数字(日付など)が入るとして、この並んだ百件のデータからCCCの部分の最大値を表示するための適切な関数があれば教えていただけないでしょうか? 現在少々急いでいるため言葉足らずで申し訳ありませんが、よろしくお願いいたします.

  • Excelシートの統合するマクロなどがありましたらお教えください。

    各支店(約200)からExcelシートで送信されてくる報告内容を別のシートに一気にまとめるマクロ等はないでしょうか?ご存知の方よろしくお願いします。 (例) A支店  項目  aaa    bbb    ccc    ddd    eee        10    20     30    0     0         8    8      0     0      0               以下約300件 B支店  項目  aaa    bbb    ccc    ddd    eee        11    22     33    0     0         9    9      0     0      0               以下約300件      別シートに 項目  aaa    bbb    ccc    ddd    eee        10    20     30    0     0         8    8      0     0      0        11    22     33    0     0         9    9      0     0      0                   以下省略           よろしくお願いします       

  • Excelで同一のデータを抽出して横並びに

    A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  ccc     4 bbb      12  ddd     6 ccc     10  aaa     22 ddd     6   eee     10 eee     5   bbb     7 fff       8 kkk 9 kkk 7 lll 4 上記のようなデータを 以下のように同じ商品コードを横並びに表示させたいのですが どういったcountifとかで試したのですが上手くいかず、どのような関数を使えば可能でしょうか? A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  aaa     22 bbb      12  bbb     7 ccc     10  ccc     4 ddd     6   ddd     6 eee     5   eee     10 fff       8 kkk 7 kkk 9 lll 4 宜しくお願い致します。

  • 正規表現で一つ目の区切り文字で区切りたいのですが・・・

    aaa/bbb/ccc/ddd aaa/bbb/ccc/ddd/eee aaa/ccc/ddd $a=~/(.*)\/(.*)/; $1はそれぞれ aaa/bbb/ccc aaa/bbb/ccc/ddd aaa/ccc と成ってしまいます。 このように 「最後の/」で分けられてしまいます。 一つ目の/で分けるにはどうしたらよいでしょうか。

    • ベストアンサー
    • Perl
  • EXCELのVBAで空白列を削除して左づめにできますか?

    いつも参考にしています。まだ、マクロの記録にチョット手を加えて自動化?している程度の腕前ですが? 仕事の都合で下記の問題を解決しなくてはならなくなり、皆様のお知恵をお借りしたいと思い質問させて頂きます。 エクセルのワークシートに空白のセルがランダムに入っているデータがあります。これを、ある列まで(例ではD列までの左の空白セルをなくして左づめのデータとしたいのです。 (例)  | A | B | C | D | E | 1|AAA|BBB|CCC|DDD|EEE| 2|   |BBB|CCC|DDD|EEE| 3|AAA|   |CCC|DDD|EEE| 4|AAA|   |CCC|   |EEE| 5|   |   |   |DDD|EEE|     ↓  | A | B | C | D | E | 1|AAA|BBB|CCC|DDD|EEE| 2|BBB|CCC|DDD|   |EEE| 3|AAA|CCC|DDD|   |EEE| 4|AAA|CCC|   |   |EEE| 5|DDD|   |   |   |EEE| ここで、E列以降は詰めないでほしいのです。 できれば、VBAで実現したいのですが、どのような考えで、どのようなコード?を書けばよいのか教えてください。 質問の仕方も用途を得ないで、失礼な質問になっていると思いますが、よろしくお願いします。

  • エクセルのリスト表からマトリクス表に丸いを付けたい

    初めて質問させていただきます。 Excel2016を使用しています。 リスト表(A列は重複なし、B列は重複あり) | A | B | 1 | AAA | 111 | 2 | BBB | 222 | 3 | BBB | 444 | 4 | CCC | 222 | 5 | CCC | 333 | 6 | DDD | 333 | 7 | EEE | 333 | 8 | EEE | 444 | マトリクス表(1行目とA列の値は、既に埋め込まれているものです) | A | B | C | D | E | 1 | | 111 | 222 | 333 | 444 | 2 | AAA | ○ | | | | 3 | BBB | | ○ | | ○ | 4 | CCC | | ○ | ○ | | 5 | DDD | | | ○ | | 6 | EEE | | | ○ | ○ | VLOOKUP、INDEX、MATCHなどの関数で考えてみましたが、 正解が見えてきませんでした。 何かよい方法はありますでしょうか。 ぜひよろしくお願いします。

  • エクセルで集計したいのですが・・・

    関数は少しわかりますが、マクロは分かりません。 今回は集計シートの集計数字を元シートに入力して、更に元シートにない項目を元シートの項目行に項目名を入れて集計数字を入れたいのです。 ただ、集計だけであれば「sumif」関数を使えば出来るのですが、元シートにない項目名を探し出して入力する方法がわかりません。教えてください。よろしくお願いします。 元シート  A  B       1 aaa 2 bbb 3 ccc 4 ddd 5 6 7 集計シート 項目 数量 1 bbb 1 2 aaa 2 3 ddd 1 4 eee 1 5 fff 1 6 ccc 2

  • エクセルのマクロについて教えて下さい。

    エクセルのマクロについて教えて下さい。 Sub Ref() Dim ax As String Dim num As Integer, i As Integer Dim arr As Variant Dim tex As String Range("A1").Select ax = ActiveCell.Formula arr = Split(ax, ",") For i = 0 To UBound(arr) num = i + 1 Cells(num, 1).Value = arr(i) Next i For i = 1 To 10 ActiveCell.Offset(, 1).Select tex = ActiveCell.Formula Selection.Resize(num, 1).Select Selection.Formula = tex Selection.Resize(1, 1).Select Next i End Sub このマクロを10行ほどまで対応させたいです。 例として2行の表ですが、           A         B   C  D   E  F 1 C100,C101,C102,C103 aaa bbb ccc ddd eee 2 C104,C105,C106,C107 とうい表を、     A B  C  D   E   F 1 C100 aaa bbb ccc ddd eee 2 C101 aaa bbb ccc ddd eee 3 C102 aaa bbb ccc ddd eee 4 C103 aaa bbb ccc ddd eee 5 C104 aaa bbb ccc ddd eee 6 C105 aaa bbb ccc ddd eee 7 C106 aaa bbb ccc ddd eee 8 C107 aaa bbb ccc ddd eee という表にしたいです。 結合してから展開しようと考えたのですが 1列目の文字列の最後にカンマが無い場合、ある場合がありまして、 対応する事が出来ませんでした。 マクロ初心者なので教えてください。 よろしくお願いします。

  • Excel VBAでのテキスト出力について

    excel vbaでの文字列出力について エクセルからテキスト(メモ帳とか)に出力したいのですが 下記のように出力できなくて困っております。 どなたか教えてほしいです。 ●入力エクセル AAA BBB CCC DDD EEE セル(1,1)~(1,5)にそれぞれ文字列が入っている状況です。 これを下記のように出力したいのです。 ●テキスト出力 "AAA","BBB",CCC,"DDD",EEE CCCとEEEをダブルクォーテーションを付けないで出力したいのです。 出力の方法でwriteとprintがありますが writeで Write #1, Cells(1,1),Cells(1,2),Cells(1,3),Cells(1,4),Cells(1,5) やると、自動で全ての文字がダブルクォーテーションで囲まれて、カンマが自動でつき "AAA","BBB","CCC","DDD","EEE" のようになってしまします。CCCとEEEのダブルクォーテーションが不要です。 printで Print #1, CStr(Cells(1,1)), & "," CStr(Cells(1,2)), & "," Cells(1,3), & "," CStr(Cells(1,4)), & "," Cells(1,5) とすると "AAA", "BBB", CCC, "DDD", EEE となり、カンマの後ろに空白が何個か入った状態になります。 (ブラウザでは空白が分かりづらいですが、テキストですと入っております。) Trim関数でTrim(",")とか色々試しましたが上手くいきません。 どうしたら望み通りの出力ができるでしょうか。 ぜひ教えて頂きたいです。 よろしくお願いします。

  • EXCELで複数行の検索

    初心者です。 Aファイルのaaa、bbbなどをキーに Bファイルを検索してできるだけ簡単にマクロ等使わずに 下記のような抽出をする方法があれば教えてください。 よろしくお願いします。 Aファイル aaa bbb ccc Bファイル(例えば「ddd」と「あ」は別セルです) ddd あ eee い aaa う fff え bbb お ggg か ccc き 結果 Aファイル aaa う bbb お ccc き

専門家に質問してみよう