アプリ版:「スタンプのみでお礼する」機能のリリースについて

1つ目のセルをプルダウンメニューで選択したら隣のセルのプルダウンメニューの内容が連動して変わる方法だけならわかるのですが、以下の方法を教えていただけないでしょうか?

「購入品」シートで作業します。2枚目以降のシートに各データが入ってます。
A2をプルダウンメニューから選択→B2をプルダウンメニューから選択(内容はA2に連動)→C2をプルダウンメニューから選択(内容はB2に連動)・・・というように、左隣のセルの内容に連動してプルダウンメニューの内容が変わるようにしたいです。(D行目まで)
それが、1列だけではなく2列目以降も同じようにしたいのです。

メニューのリスト内容が変動するので「名前の定義」を使わずにできる方法を教えてください。
よろしくお願いします。

「Excel 複数のプルダウンメニューを連」の質問画像

質問者からの補足コメント

  • 2枚目のシートです。

    「Excel 複数のプルダウンメニューを連」の補足画像1
      補足日時:2020/07/16 12:16
  • 3枚目です。

    「Excel 複数のプルダウンメニューを連」の補足画像2
      補足日時:2020/07/16 12:17
  • 4枚目です。

    「Excel 複数のプルダウンメニューを連」の補足画像3
      補足日時:2020/07/16 12:18

A 回答 (3件)

こんにちは



>1つ目のセルをプルダウンメニューで選択したら隣のセルのプルダウン
>メニューの内容が連動して変わる方法だけならわかるのですが
それがわかっているなら、同じことを繰り返して、順に連動させてゆけば良いだけだと思いますけれど、どこがわからないのでしょうか?

添付の選択肢のリストのシート内容を見る限りでは、A列が左側のセルの値で、B列以降が連動して表示する項目になっている点で、全てで共通になっていると思いますけれど??
まぁ、強いて言うなら項目数が多少のばらつきがあるので、一律に処理すると空白の選択肢が入ってしまったりするのを省くのが一寸だけ面倒なことでしょうか?(これも全て共通ではありますが)

>メニューのリスト内容が変動するので「名前の定義」を使わずにできる方法を教えてください。
普通の考えでゆけば、「変動するから(いちいちアドレスを変えなくて済むように)名前の定義を利用する」のだと思いますけれど、どういう意図なんでしょうね??


いろいろと合点がいかないところが多いですが、ひとまず以下の様な感じでしょうか?
単純に連動させているだけなので、すでにご存知の方法と同じかも知れませんが、同じ要領でC、D列も設定すれば良いだけと思いますので、B列の例のみです。

添付図はB列の例で、場所シートは仮に同じシート内にあるものとしていますが、A10:I15にがこれに該当すると仮定しています。
図のA列には、普通に「入力規則」で「リスト」形式で、元の値として「=$A$11:$A$15」の範囲が設定してあります。
これに対して、B列(B2セルをアクティブな状態)には同じく「入力規則」で、元の値として「=OFFSET($A$10,MATCH($A2,$A$11:$A$15,0),1,1,COUNTA(OFFSET($B$10:$I$10,MATCH($A2,$A$11:$A$15,0),0)))」の式を設定してあります。

リストの項目数(最大数)が不明なので、上記はひとまずB~I列までの8項目を対象にした式になっています。
以下同様に、C列には「B列の値に連動したリスト」、D列には「C列の値に連動したリスト」を設定すればすむことと思いますが・・・??
「Excel 複数のプルダウンメニューを連」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとうございました!
とても参考になりました。
また何かありましたら宜しくお願いします。

お礼日時:2020/07/19 09:42

①名前の定義とindirect関数を使用する方法


②offset関数とmatch関数を使用する方法

名前の定義を使いたくないとの事ですので、②を使用すれば可能です。わかりやすい解説があります。↓
https://excelkamiwaza.com/pulldown_rendo.html
    • good
    • 0
この回答へのお礼

ありがとうございました!
URLを教えていただき、とても参考になりました。
また、何かありましたら宜しくお願いします。

お礼日時:2020/07/19 09:40

こんにちは!



すでに的確な回答が出ていて、二番煎じになりますが・・・

↓の画像のような配置で「購入品」SheetのA~D列にリスト設定するだけですが、
A2以降範囲指定 → データの入力規則の「リスト」で元の値の欄の数式を
=OFFSET(場所!A$1,1,,COUNTA(場所!A:A)-1)

という数式に!
(「場所」SheetのA列データ数が決まっているのであれば、その範囲を直接指定する方が早いかも)

同様にB2セル以降を範囲指定 → リストの元の値の欄に
=OFFSET(場所!A$1,MATCH(A2,場所!A:A,0)-1,1,,COUNTA(OFFSET(場所!$1:$1,MATCH(A2,場所!$A:$A,0)-1,,1))-1)

C2セル以降を範囲指定 → 同様に
=OFFSET(品目!A$1,MATCH(B2,品目!$A:$A,0)-1,1,,COUNTA(OFFSET(品目!$1:$1,MATCH(B2,品目!A:A,0)-1,,1))-1)

D2セル以降を範囲指定 → 同様に
=OFFSET(品名!A$1,MATCH(C2,品名!A:A,0)-1,1,,COUNTA(OFFSET(品名!$1:$1,MATCH(C2,品名!A:A,0)-1,,1))-1)

という数式を入れるとお望みの表示になると思います。

尚、余計なお世話かもしれませんが、A~C列が変更になる場合もあると思います。
その場合、右隣りのデータも変わってくると思いますので、消去する必要があるのではないでしょうか。
↓のコードを「購入品」シートのシートモジュールにしてみてください。

Private Sub Worksheet_Change(ByVal Target As Range) '//この行から//
 If Intersect(Target, Range("A:C")) Is Nothing Or Target.Count > 1 Then Exit Sub
  With Target
   If .Row > 1 Then
    .Offset(, 1).Resize(, 4 - .Column).ClearContents
   End If
  End With
End Sub '//この行まで//

※ 「余計なお世話」の部分が不要なら無視してください。m(_ _)m
「Excel 複数のプルダウンメニューを連」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございました!
思い通りのことができました。ついでに、と踏み込んで考えていただいて本当に助かりました。
また、何かありましたら宜しくお願いします。

お礼日時:2020/07/19 09:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!