• 締切済み

EXCEL入力規則選択 → 文字表示 or 入力可

EXCEL2003で表を作成しています。 B列に入力規則を使い、「イ」または「ロ」が選べるようにリストを作ってあります。 B列(B3)のセルで 「イ」 を選ぶと、D列(D3)には「A」、E列(E3)には「0000」、F列「-」を表示させるようにし、B列(B3)のセルに 「ロ」 を選ぶと、D列(D3)、E列(E3)、F列(F3)に任意の文字を入力できるようにしたいのです。 以下、B4、B5、、、、と続いていっても、D4、E4、F4. D5、E5、F5・・・と対応していくような表にしたいのです。 関数でも、マクロでも何でもかまいません。できるだけ、簡単な方法を教えていただければと思います。よろしくお願いします。

みんなの回答

回答No.2

条件付きのドロップダウンリストを設定し、その中の候補を選んで入力してもらうという手もあります。B列が「イ」のときはリスト中に入力データの候補が現れ、それ以外のときは候補が現れないようにします。 質問者さんは既にB列にリストを作ってあるとのことですが、D、E、F列にもそれぞれリストを設定します。H1セルに「A」が入力され、H2は未入力であるとき、カーソルをD3セルに置いた状態で、リストの「元の値」に次の式を入力します。 =if(b3="イ",$H$1,$H$2) 注意点は、ここに書いてあるとおりの式を使うことです。条件付き「書式」ではかなりいろいろな数式を設定できますが、残念ながら、条件付きの「リスト」では、式の内容について制約が大きいです。ちょっと書き方を変えると「「元の値」の設定時」にすぐエラーになりますので、注意してください。また、エラーが出る場合でも、B3セルに「イ」が入力されていれば出なかったりすることもあったり…簡単ですが難しいのです。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

マクロの場合、シートの見出しで右クリック→コード表示で以下を貼り付け Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B3:B100")) Is Nothing Then Select Case Target.Resize(1, 1).Value Case "イ" Target.Offset(, 1).Value = "A" Target.Offset(, 2).NumberFormatLocal = "0000" Target.Offset(, 2).Value = "0000" Target.Offset(, 3).Value = "-" Case "ロ" Target.Offset(, 1).Resize(, 3).ClearContents End Select End If End Sub 関数が消えてもいいなら、以下の様にすればいいです。 以下の様にし、「ロ」の時は、数式を無視してセルに入力すればいいです。 C3 =IF($B3="イ","A","") D3 =IF($B3="イ","0000","") E3 =IF($B3="イ","-","")

ettamok
質問者

補足

ありがとうございます。 book1で作成してばっちり動きました!! すばらしくて感動しました。完璧な答えをありがとうございます! 実は、頼まれた次の日に、どんどん要望が出てしまいました++ お礼や補足が1度しか出来ないので、時間をおくしかありませんでした。すみません。 (1) 行の使い方が2行で1セットになり、一部分のセル以外は、セルの結合をしています。そのため、Resizeのところで、つまづくようになってしまいました。Resizeはどういう理由で使う必要があるのでしょうか? (2) ClearContentsも2行のためか、どうしても上手くいかなかったので、さまざま試した結果、Target.Offset(, 1).Value = ""を使いました。これの問題点はありますか? (3) Target.Offset(, 1).Value = "A"とかですが、できれば、他の入力はできないようにしたいそうなんですが、そこまで強制的なことはできますか? (4) 行の挿入と削除だけは許したいということなのですが、シートの保護をかけた時に、挿入・削除を許すように、チェックをしても、実際に挿入しようとすると、マクロがデバック表示をしてきます。どうやって、設定したらいいでしょうか? 本当にいろいろ聞いてしまってすみません。よろしくお願いします。

関連するQ&A

  • 《エクセル》入力規則について

    いつもお世話になります。 エクセルの列に、入力規則で打ち込めるデータを限定したいのですが、 セルA1の値が"あ"なら、セルB1には"A"・"B"・"C"のみ入力できる セルA2の値が"い"なら、セルB2には"D"・"E"・"F"のみ入力できる のようなことは可能でしょうか。 また、 A1が"あ"B1が"A"の場合は、C1には"い"・"ろ"・"は"のみが入力できる などということも出来ますでしょうか。 ご存知の方がいらっしゃったらお手数ですが宜しくお願い致します。

  • EXCELの入力規則について教えてください。

    1つのセルに、入力規則と数式が入ったセルがあるのですが、誤って誰かが数式を消してしまわないように、保護をかけたいのです。 しかし、保護をかけると、入力規則が動かなくなってしまうので困っています。 F3からF354が入力規則と数式が入ったセルなのですが、そのセルには下記のような式が入っています。 =IF($D3="","",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$C$354,2,0)<>0,INDEX('リスト(総合)'!$C$4:$C$354,MATCH($D3,'リスト(総合)'!$B$4:$B$354,0)),"")) で、入力規則は、「入力値の種類」が「リスト」で、「元の値」は、下記のような式が入っています。 =INDIRECT($I3) I3からI354には、下記のような式が入っています。 =IF(D3="","",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$N$354,2,0)='リスト(総合)'!$P$4,"リスト(総合)!S4",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$N$354,2,0)='リスト(総合)'!$P$5,"リスト(総合)!S5",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$N$354,2,0)='リスト(総合)'!$P$6,"リスト(総合)!S6",IF(VLOOKUP($D3,'リスト(総合)'!$B$4:$N$354,2,0)='リスト(総合)'!$P$7,"リスト(総合)!S7","名前"))))) 何かいい方法はないでしょうか? 使っているのは、Microsoft Office 2010 です。 どうぞよろしくお願いいたします。

  • エクセルの入力規則

    エクセルの入力規則で、D1のセルにりんごと入れるとD列に色をつけるようにしました。後、追加の機能で○を入れるとその行の見出し(A列)セルにも色をつけたいのですが・・(下の表なら、A3.A4セルに色をつけたい) 何か方法はありますか?    A   B    C    D 1      いちご みかん りんご 2  あ   ○        3  い        ○    ○ 4  う             ○           

  • エクセルの入力規則で数式のみ入力可能にするには

    エクセル2000を使用しています。   A B C D E          F 1  2 3 4 5 6    ROUND((A1+B1)*C1*D1*E1,1))  2  2 3 4 5 6    ROUND((A2+B2)*C2*D2*E2,1))  という表を作成しています。 F列には、数式以外入力できないようにしたいのですが、 どうすればよいのでしょうか? どうかお知恵を貸して下さい。 よろしくお願いします。

  • エクセルでの 「入力規則」→「リスト」に関する質問

    (1)セルA列に氏名を、B列に氏名に付随する固有の番号を一覧表的に入力しておき、 (2)セルD1に、入力規則→リスト でA列のデータを選べるように設定したときに(A列を「元の値」にするときに) (3)セルD1に選んだA列のデータを表示したとき、その次行のセルD2に、A列の氏名に付随するB列のデータ(Aに付随する固有の番号)を自動的に表示する方法がありますか。

  • 一つの列に2つの入力規則を使いたい。

    B列にはプルダウンで選択するために入力規則で、リストで名前定義を使っているのですが、 また 「そのB列に隣接するA列のセルに何か入力されてないと、 B列に入力できない」 「=入力規則のユーザー設定、COUNTA(A1)=1」 とういう2つのことをしたいです。 でも、入力規則は1つしか出来ないですよね? こうゆう場合はどうすればいいのでしょうか? マクロでしょうか? よろしくお願い致します。

  • エクセルVBAで入力規則の列数を取得

    エクセル2013です。 ワークシートのB列、C列、E列に入力規則が設定してあります。 ところが以下のマクロを動かすと Cells.Count は正しく3を返しますが、Columns.Countは2返ります。 B、C、D列に入力規則を設定したときは、Columns.Countはちゃんと3が返ります。 B、D、E列に入力規則を設定したときは、Columns.Countはなんと1が返りました。 なぜでしょうか? Sub TEST01()   With Rows(3).SpecialCells(xlCellTypeAllValidation)     MsgBox .Cells.Count     MsgBox .Columns.Count   End With End Sub

  • エクセルで複数列のデータに対して検索後、対象行を表示できますか?

    よろしくお願いします。 エクセル2002を使っています。 例として 1        E F G 2 データA  イ ロ ハ  3 データB  ロ ハ 4 データC  ニ  5 データD  ニ ロ E,F,G列に行方向にイ~ニのデータがランダムに入っています。 オートフィルを使う様に3列中にイを含む行、又はイ又はロを含む行、イ、ロ、ハを含む行を表示させたいのですが、何か方法があるでしょうか? どなたかご存知の方ご教授お願いします。

  • 入力規則に関するエクセル表の質問です

    エクセルの表においてB列の各セルが入力規則で4項目をプルダウンで選択表示できるようになっています。それを例えばA,B,C,Dとします。その各項目には小項目として10個づつあります。 この小項目を隣のC列へ入力規則のプルダウンにより選択表示する場合、40個のなかから選ぶこととなり検索に手間がかかります。そこで、例えばB5セルでAと選択した場合、C5セルではAに該当する10項目のみをプルダウン表示することができないかと考え、入力規則の「元の値」の窓にVLOOKUP関数を入れて試したのですが反応がありませんでした。よい方法がありましたらご教授下さい。

  • Excelの入力規則に2列のリスト

    添付画像のようなA列に都道府県コード、B列に都道府県名が入力されていて、D2セルに入力規則でプルダウンリストを使用したいです。 プルダウンリストにはAとB列を結合(添付はスペース区切りにしていますがなんでもいいです)させたものを表示し、選択後はB列の名称のみを反映させたいのですが、このような制御は可能でしょうか? できればマクロやVBAは使用しない方が望ましいです。 よろしくお願いします。

専門家に質問してみよう