dポイントプレゼントキャンペーン実施中!

エクセルで列の項目をプルダウン選択して行の項目を自動表示するには
どう設定したらよいかわかりません。
・列の項目は20種類くらいあります。(A列項目)
・上記選択の際の行の項目は無しのものから10種類の項目ほどがあります。
・行項目の下の空白内には個別数字や文字を手入力します。
入力規則の設定のところだけで出来るのか、マクロを使わなければいけないのかわかりません。
マクロであればボタンクリックで表示させたいです。

「エクセル 列の項目をプルダウン選択して行」の質問画像

A 回答 (4件)

No.1です。



投稿後気になったのですが・・・
もしかしてA列の項目によってB列以降は自動で表示したい!という質問なのでしょうか?
そうであればA列だけを前回の方法で入力規則のリスト設定にしてください。
(Sheet2の表は前回のまま使用します。)
そしてSheet1のB列以降の入力規則はクリア。
Sheet2の名前定義は「名前の管理」からすべて削除してください。
(「名前の管理をクリック → 一番上の名前定義をクリック → Shiftキーを押しながら一番下の名前定義をクリック → 削除)

そしてSheet1のB1セルに
=IFERROR(HLOOKUP($A1,Sheet2!$1:$5,COLUMN(),0)&"","")

という数式を入れ B1~E2を範囲指定 → E2セルのフィルハンドルで下へ2行ずつコピー!

※ 数式内の「5」はSheet2のデータがある最大行にしてください。
もちろん20とか100などのようにデータより多い行でも構いません。

これでA列が変更するたびにB列以降の項目が表示されるはずです。m(_ _)m
    • good
    • 0

名前定義は項目という名前で


が抜けました。すみません。
    • good
    • 0

この表は2行おきですけど


元になる項目名をSheet2に行を空けずに作ります。
名前定義は
=OFFSET(Sheet2!$A$1,0,0,COUNTA(Sheet2!$A:$A),6)
(最後の6は項目名が最大横F列まであるかもの6)
A列ドロップダウンのリストで範囲は
=OFFSET(項目,0,0,ROWS(項目),1)
B1の式は
=VLOOKUP($A1,項目,COLUMN(),0)
これを横にオートフィル
a1:F2を下方向にオートフィル

0が出てしまうのでオプション→詳細設定の
ゼロ値のセルに0を表示のチェックを外す
でいかがでしょうか?

Sheet2のリスト行が増えても追随します。

ひとつ付け加えると
「列の項目は」「行項目」明らかに言葉おかしいと思いますが、
A列が2行セル結合している説明して
ドロップダウンで選ぶと、それに連動してB-?列の
項目が表示されると僕ならいいますね。
    • good
    • 0

こんばんは!



外していたらごめんなさい。
↓の画像のように別シート(画像ではSheet2)に表を作成してみてはどうでしょうか?
表を作成後、各列を名前定義しておきます。
Sheet2のA1~A2セルを範囲指定 → メニューの「数式」 → 「名前の管理」の「選択範囲から作成」 → 「上端行」にチェックを入れOK
これでA2セルが「ロールセット」と名前定義されました。
同様に
B1~B5を範囲指定 → ・・・中略・・・ → 「上端行」にチェック
この操作を最終列まで行います。
これでSheet1のA列に対応する列がすべて名前定義されましたので
Sheet1のA列を範囲指定 → データ → 入力規則 → リスト → 「元の値」の欄の右側四角をクリックし
Sheet2のA1~E1(実際の列まで)選択 → もう一度「元の値」の右側四角をクリック!
これでA列のリスト設定は完了です。

次にSheet1のB1~E1を範囲指定 → データの入力規則 → 「元の値」の欄に
=INDIRECT($A1)
という数式を入れOK
(A列が空白の場合は何らかのメッセージが表示されると思いますが、無視します)

A1~E1セルが空白の状態でA1~E1セルを選択 → セルの四辺のマウスポインタを移動させると
上下左右の小さな矢印になるところがありますのでCtrlキーを押しながら3行目までドラッグ
同様に5行目 → 7行目・・・とCtrlキーを押しながらドラッグします。

これでA列で選択した項目だけがB列以降のリスト候補になるはずです。

※ 列によって選択する項目は決まっているのかもしれませんが、
そこは手動で選んでください。m(_ _)m
「エクセル 列の項目をプルダウン選択して行」の回答画像1
    • good
    • 0

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