- ベストアンサー
データの入力規則
エクセルのデータの入力規則について教えていただきたいです。 A1には年齢を入力します。B1にはA1の年齢を判断して、20以上は空白、○、×のプルダウンリストを、19以下は空白のみのプルダウンリストを使えるような定義はできないでしょうか? 名前の定義で20以上、19以下を設定して参照する形でもいいのですが、A1とB1、名前の定義箇所以外には原則作業セル(C1に20以上、19以下となるような関数を使うとか)は使わないものとします。 エクセルは2016Proです。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
B1: データの入力規則、リスト =OFFSET($D$1,0,0,1+(A1>=20)*2) D1: 空白 D2: ○ D3: × でしょう。しかしこれは他のセルを使っています。 他のセルを使っていけないのであれば、VBA しかありません。 VBA は禁止事項に入っていません。 シートモジュールに入れて下さい。 Option Explicit ' Private Sub Worksheet_Change(ByVal Target As Range) ' If Target.Address <> "$A$1" Then End End If ' With Target.Offset(, 1).Validation On Error Resume Next .Delete On Error GoTo 0 ' If Target < 20 Then .Add xlValidateList, Formula1:=" " Else .Add xlValidateList, Formula1:=" ,○,×" End If End With End Sub
その他の回答 (4)
- msMike
- ベストアンサー率20% (364/1804)
》 空白のみのプルダウンリストを使えるような定義は 》 できないでしょうか? 素朴な疑問だけど、「空白のみ」ならリストなんて必要ナカンベ?と考へるのは私だけ?リストってのは複数項目が相場では?
- imogasi
- ベストアンサー率27% (4737/17069)
一晩考えた。 「作業セルは使わない」に、ついて下記はOKと看做せないか? Sheet1のA列に、(年齢)数字が入るものとする。 使わない予定のSheetを1つ決める。(今回Sheet2とする)。 Sheet2のA3に(データはSheet1のA3から始まるとする) =IF(Sheet1!A3="","",IF(Sheet1!A3>20,"成年","未成年")) の式を入れて、下方向に式を複写。 成年、未成年の語句は、何でも文字列であればよいことに注意(小生が勝手に決めた)。 Sheet2のG,H列に(G1:H5に) 未成年 成年 ああ かか いい きき うう くく けけ と作る。リストのアイテムを、列ごとに分けて作る。 数式ー名前の定義ー選択範囲から作成ー上端行 で、「未成年と 成年」を名前定義。 他シートでも、この名前定義は生きるようだ。 ーー Sheet1の、B3:B〇を範囲指定して、 データー入力規則ーリストー=INDIRECT(Sheet2!A3) === 20歳を超える、は勝手に、例にしてますが、比較演算子は、質問者の場合に合わせて修正のこと。 ーー 以上は場合を2つに分けているが、上記を拡張して、 =IF(Sheet1!A3="","",IF(Sheet1!A3>20,"成年","未成年")) のIF関数(2番目の以後)のネストを深くすれば、3,4,5個のケースに分ける場合に拡張できると思う。
- imogasi
- ベストアンサー率27% (4737/17069)
こういう課題は勉強して、習い覚えるほかないのだ。 ただ下記は、少し内容が違うが、参考に。 下記はすでに知っていて、質問したか?それなら後免。 何とか、このパターンに持ち込まないと策がないのでは。 ーー 例データ G1:H4 成年 未成年 あ か い 〇 う × ーーー A列に(すでに入力済か順次入力も可だがA列が先) 年齢 成年 未成年 成年 ・・・ ーーー 操作 B2:B〇を範囲指定 データ データの入力規則 リスト 元の値 =INDIRECT(A2) OK ーーー A列のデータは先に入力されているとする。 B2セルをクリック A列が「成年」の場合ーーあ い う、のリストが出る A列が「未成年」の場合ーーか 〇 ×が出る それらから、1つクリックして選ぶ。 同行のB列に値がセットされる。 === 問題は、条件が文字でなく、数値大小条件で、このままでは使えない。 質問者が、勝手な条件を「作業セルは使わない」と言っているが、解決策は質問者が考えること。 作業列を使えば、新しい列にIF関数を使って、成年や未成年の文字列ををセットできる。 初心者であるのに作業列は使わないでなんて注文を付けるのが多いが、それぐらい辛抱したらどうか。 良い回答が出なければ、やむを得ないだろう。 ーー 解決策は小生は、すぐには思いつかないが、VBAでも使わないと、関数などでは無理かと思うが、世の中優秀な人も居るわね。 Googleで照会するときの検索語の1例は 「条件 入力規則 リストを変える」など。 たくさん記事が出るが、検索して読んだかな。 ・ 数式
- msMike
- ベストアンサー率20% (364/1804)
》 20以上は…、19以下は… さう云ふ表現は厳禁です。 20以上は…、20未滿は… 又は 20より上は…、19以下は… と言はなきゃあ~! ドッチ?