• ベストアンサー

エクセルのセルに固定データを自動入力する方法

エクセルであるアンケート調査の集約するのに、回答該当セルに「1」を入力してデータベースの構築をしたいと思っています。 予めクリップボードに「1」を「コピー」して調査シート毎の、回答該当セルを「CTLE +クリック」で複数選択して「1」を「貼り付け」て入力する方法を考えていますが、もっと簡単に、該当セルをマウスでクリックするだけで自動的に「1」が入力できる方法あれば少しは入力作業が楽になるのではと考えていますが、その方法がわかりません。 良い方法があれば教えてください。宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 #1の回答の補足に対するお返事です。 >この設定でデータを入力出来る範囲は、 >行でB3~n3、列でB3~Bnの範囲になります。 以下のように、B3:N3,B3:B20 とすればよいです。 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Intersect(Target, Union(Range("B3:N3"), Range("B3:B20"))) Is Nothing Then Exit Sub Application.EnableEvents = False   'セルが1個で、そこには何も入っていない場合は、1を入れる If Target.Count = 1 And IsEmpty(Target) Then   Target.Value = 1 End If Application.EnableEvents = True End Sub ただ、配布が条件としたら、#5の方法のほうが上です。

fukuchan7
質問者

補足

早速のお返事本当にありがとうございます。 このスタイルは、まさに求めていたものです。 ただ私の質問の表示範囲(Range)の表現が間違っていたようです。 このVBAを実行すると、B列とB行のみがアクチブになりC,D,E,F,・・・・L,N行には表示されません。すなわちB3とN20を対角線とするすべてのセルに表示させるには、VBAのRangeをどのように設定すればよいか、何度も恐縮ですが御指導いただければ幸いです。 なお、ラジオボタンを使用する方法は、各設問ごとにボタンの設定が必要になり煩雑になりそうですので参考にさせていただきます。 以上宜しくお願いいたします。

その他の回答 (7)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

こんばんは。 最初にこちらの話。 >ラジオボタンを使用する方法は、各設問ごとにボタンの設定が必要になり煩雑になりそうですので参考にさせていただきます。 フォームツール側は、そんなにむつかしくはありません。とはいえ、そういう私は、そのボタンをアクティブセルに、マクロで貼り付けてしまいますから、あまり、偉そうなことはいえませんね。(^^; >すなわちB3とN20を対角線とするすべてのセルに表示させるには、VBAのRangeをどのように設定すればよいか、 対角線つまり、四角形の範囲ですね。 それなら、もっと簡単です。以下のようにすればいいのですから。 No.6 のマクロの二行目を以下の置き換えてください。 If Intersect(Target, Range("B3:N20")) Is Nothing Then Exit Sub (見ただけで、なんとなく見えてきますでしょう?) Intersect つまり相交わるっていうことだから、マウスポインタで触った場所が、設定した部分と相交わっていないなら、マクロを抜けなさい(Exit Sub) ということなんです。

fukuchan7
質問者

お礼

出来ました。最初レンジの変更して、実行しましたが、またく機能しなかったので、一度コピーをし再度貼り付けましたら機能しました。 集計はエクセルを知らない人が行うので、出来るだけ簡単で入力ミスをなくするようにしたいと考えて皆さんのお力をお借りしました。マクロは初めってですが、勉強になりました。ラジオボタンにも挑戦したいと思っています。 何度もすぐにお返事を頂き本当にありがとうございました。感謝します。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

#1の補足の3について >列でB3~Bnの範囲になります。  この範囲内でクリックすれば「1」が Intersectを使います。 OKWEBの質問QNo.1616871に答えています。 ●質問を拡張していろいろな値をワンクリックでセットするVBA A1セルは1であると、有効モード、空白にすると無効。 引っ張ってきたい、文字列や数字をセルにまとめて1回入力しておく。 この部分のどれかをクリックして、セットしたいセルをクリックでセットしたい文字列等が入ります。 A1はどこでもよい、プログラムは1箇所変わるが。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("a1") = 1 Then Static m As Range If m Is Nothing Then Set m = Target Else Target = m Set m = Nothing End If End If End Sub お遊び的なので、極端な場合での不都合があるかもしれないが、あげつらわないでくださいね。 たとえばE1:E4に 東京 大阪 福岡 愛知 A1を1にして E2をポイントー>A2をポイント E1をポイントー>A3をポイント 以下繰り返す。 A2に大阪 A3に東京 。・・ が入ります。とめたいときはA1をポイントしてDELキー。

fukuchan7
質問者

お礼

御指導ありがとうございました。 色々の方法があるのですね。参考になりました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 #1 のWendy02 です。 yes no の二者択一なら、オプションボタン(ラジオ・ボタン)を使うのがよいです。 フォーム・ツールのオプションボタンで、1か2が出ます。 ただ、そのまま作ると、全部が統一されて、全体がからオプションボタンが1つしか選ばれなくなってしまいますので、以下のようにします。 フォーム・ツールバーのオプションボタンを対象にしています。 +---------------------------+ |  ○     ○     | +---------------------------+ それをレイアウトとか考えて、一組のグループで作ったら、オートシェイプバーを出して、白抜き矢印をクリック そのグループボックスをドラッグして選択し、それをコントロールキーを押しながら、ドラッグすると、コピーが出来ます。後は好きなだけ数を増やします。 次に、白抜き矢印をクリックして戻したら、 グループボックス内の1つのチェックボックスを選択し、右クリックで、  コントロールの書式設定-リンクするセル で出力するところを決めます。 最後の仕上げとしては、グループボックスのラインなどが、邪魔なので、消してしまいます。シートタブを右クリックして、コードの表示で、以下を貼り付けたら、カーソルをこのコードの中に置いて、F5を押します。 Sub GroupBoxLineDel() Dim gb As Object  For Each gb In ActiveSheet.GroupBoxes   gb.Visible = False  Next End Sub そして、Alt + F11 で元の画面に戻ります。マクロを残したくなかったら、貼り付けたものは消してください。 ただし、マクロは使いたくないというのでしたら、おそらくは、手動では、ラインは消せないような気がします。 後は、COUNTIFやSUMIFで、1の数、2の数を集計すればよいです。

  • takkuni
  • ベストアンサー率24% (166/676)
回答No.4

データベスの全体像が良く見えないのですが、入力規則で対応したらどうでしょうか。対象セルを全選択し、データ~入力規則、設定タブのドロップダウンリストからリストを選択、元の値に選択対象となる数字なり記号をコンマで区切って入力します。(0ならノー、1ならイエスなどのように)入力したいセルにカーソルを合わせると設定したものが表示されるのでクリックして選択すると確定されます。

fukuchan7
質問者

補足

 回答者 Q -- 1 Q -- 2    yes no yes no  A-1  1 1  A-2 1 1    A-3 1 1    TOT 2 1 1 1  データベスの全体像は、アンケート用紙の各設問に対しハイ、イイエの2者択一で○が記載されているのを、その○を「1」に置き換えて上記のようにデータベース化して集計をしたいのです。「1」にしたのは、○でも良いのですがCOUNT関数を使わず簡単に集計が出来るからです。 件数が1000件程で設問が20問あります。これを出来るだけ簡単に入力できる方法としてセルをクリックするだけでデータを入力する方法を探っています。 ご回答頂いた入力規制の方法は、選択の過程が増えるように思います。でも、入力規制を使えば、「1」以外の数字は入力できなく出来き、入力間違いが排除できますので使わせていただきます。本当に参考になるアドバイスありがとうございました。

  • komet163
  • ベストアンサー率51% (22/43)
回答No.3

こんにちは。オペレートとして #2さんの方法をわたしも薦めます。しかし、 >アンケート調査の集約 とはアンケート結果の集計&データベース化でしょうか。 だとして、該当セルに1をいれる判断材料はなんでしょう。 もしかして、他のセルにアンケート用紙からコピペした何かかがあり、 それを見て1を入れてる。としたら、 該当セルに IF関数で判断式を入れてオートフィルされてはどうでしょうか。

fukuchan7
質問者

補足

該当セルに1をいれる判断材料は、No4さんの補足に詳しく述べましたように、にアンケート用紙の回答欄に○を記載された項目を該当セルにCOUNT関数を使わず○でなく「1」に置き換えて入力して集計をしたいためです。 IF関数を使えるようにも思ったのですが、該当セルをクリックするだけで「1」が入力できる判断式が解かりません。 具体的に判断式を教えて頂ければ助かるのですが、宜しく御指導をお願いします。

  • sakeman
  • ベストアンサー率43% (67/153)
回答No.2

回答当該セルを選択→「1」を入力→[Ctrl]+[Enter]で選択したすべてのセルに「1」が入力されます。 この方が質問よりは楽になると思います。簡単に応用が効くのも良いのでは。 質問の趣旨と違っていたら、ご容赦ください。

fukuchan7
質問者

補足

この方法は、最初考えたのですが、「1」を入力する必要があり、キーを何かの都合で押し間違えることも考え、絶対的に「1」を入力する方法を模索したのが、クリボードからの貼り付けです。 よく考えれば、貼り付けの操作より「1」を入力するほうが楽かもしれませんね。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 >該当セルをマウスでクリックするだけで自動的に「1」が入力できる方法 Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 左上側にプロジェクトエクスプローラの窓の中に、ThisWorkbook があったら、それをダブルクリックして、開けます。もし、窓が出ていないようでしたら、Ctrl + R を押すと通常左側に出てきます。 そうしたら、以下のコードを貼り付けて、再び、Alt + F11 で、画面を閉じます。 このコードは、目的のシートの1列目( Target.Column <> 1)でなかったら、作動しない。 1列目で、選んだセルが、1つなら、値に1を入れるというコードです。 これは、全てのシートに適用されます。 '<ThisWorkbook モジュール> Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Target.Column <> 1 Then Exit Sub Application.EnableEvents = False If Target.Count = 1 Then   Target.Value = 1 End If Application.EnableEvents = True End Sub

fukuchan7
質問者

補足

VBAを解かりやすく御説明いただきありがとうございました。 「1」の絶対入力として、知りたかった方法すが、2つの難点があります。 1つは、A列しか入力できないことです。N列まで入力する方法がありませんか? 2つ目は、集約のシートは、1行に設問項目と2行に「ハイ」「イイエ」の項目行があります。A列には回答者欄を取っています。この設定でデータを入力出来る範囲は、行でB3~n3、列でB3~Bnの範囲になります。  この範囲内でクリックすれば「1」が入力されようにするにはどうすればよいのですか? 以上です。 2つ目が解決すれば、1つ目の回答は不要です。 ごめんどうですが、宜しく御指導をお願いします。

関連するQ&A