• ベストアンサー

エクセルの自動入力

エクセルでデータを管理している者です。 今回は、ある列である文字列を入力すると、違う列の値も自動的に変わるように変更したいと考えています。 具体的には以下のような例です。 A1が"NO"の場合はA2は"必要"、A3は"入力"に自動的に変更する。 *ただし、A2、A3には既に値が入力されており、関数のIFは使えないと考えています。 文章が下手ですいません。何か疑問があれば質問してください。 よろしくお願いします。

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

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.1

マクロを使った一例です。 マクロはやり直しができないので、データバックアップの上で 試してみてください。 おそらく質問は単純化した例だと思いますので、 必要に応じて改良してください。 その際、うまくいかなければ補足してください。 Private Sub Worksheet_Change(ByVal Target As Range)  On Error GoTo line  If Selection.Count > 1 Then Exit Sub  Application.ScreenUpdating = False  If Target.Address = "$A$1" And Target.Value = "NO" Then   Range("A2").Value = "必要"   Range("A3").Value = "入力"  End If  Application.ScreenUpdating = True  Exit Sub line:  Application.ScreenUpdating = True  Resume Next End Sub <使い方> 1)下のシート名のタブの上で右クリック 2)「コードの表示」をクリック 3)左側のプロジェクトエクスプローラーで、   VBAProjectの中に複数のシートがあると思いますが、   今、自動入力したいシートをダブルクリック  (プロジェクトエクスプローラーが表示されていなければ、   上部の「表示」メニューから選択表示できます。) 4)右側にコードを貼り付けます。   実行は、A1セルにNOを入力確定すれば自動的に行われます。

hiro0163
質問者

お礼

お礼までの時間がかかってしまいすいませんでした。 教えていただいたコードを参考に、自分のやりたい作業はできるようになりました。 ワークシートが変わることを監視する関数は他にも使えそうなので、今後も参考にしたいと思います。 ありがとうございました。

その他の回答 (2)

noname#79209
noname#79209
回答No.3

エクセルのワークシート関数群には、他のセルの値をどうにかするという機能はありません。 他のセルをどうにかするのはマクロでしょうが、 > *ただし、A2、A3には既に値が入力されており、 > 関数のIFは使えないと考えています。 といっておられるなら、マクロでも同じでしょう。 IF関数が使えないということは、A2、A3をいじりたくないのでしょう? それと「列」と言っておられるのに、実際は「行」のようだし、 もう少し、表の構成の具体例をお書きいいただけないでしょうか。

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

良い仕掛けは無いように思います。 (1)セルの値の上に、別の値を表示するのは、難しい (2)セルのコメントに設定する方法 (3)IF文を加える (4)VBAのイベント(コードを書き)利用 (5)コントロールを貼り付ける (6)セルの書式利用 VBAなら下記の(6)がお勧め。 ーー (3)状況がわからないが、 A2に=IF(A1="NO","必要",現在の本来の式) はどうですか。ダメな気もするが。 A3も同じ=IF(A1="NO","入力",現在の本来の式) (4)(5) Sheet1にテキストボックスを貼り付ける。 Sheet1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" And Target = "NO" Then Worksheets("Sheet1").TextBox1.Top = Worksheets("Sheet1").Range("A2").Top Worksheets("Sheet1").TextBox1.Left = Worksheets("Sheet1").Range("A2").Left Worksheets("Sheet1").TextBox1.Width = Worksheets("Sheet1").Range("A2").Width Worksheets("Sheet1").TextBox1.Visible = True Worksheets("Sheet1").TextBox1.Text = "必要" Else Worksheets("Sheet1").TextBox1.Visible = False End If End Sub を貼り付ける。 A1に「NO」と入れると A2にテキストで「必要」と出て、「NO」以外だとテキストボックスを見えなくする。 (6)は Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" And Target = "NO" Then Worksheets("Sheet1").Range("A2").NumberFormat = "必要" Else Worksheets("Sheet1").Range("A2").NumberFormat = "#,###" End If End Sub (2)コメントの場合も上記コードオ似たものになるでしょう。 表示位置はA2の真上ができたかどうか。略。

関連するQ&A

  • エクセルのセルへの値の自動入力

    こんにちは。 エクセルへのセルへの値の自動入力の仕方が分からなくて困っています。 文章よりも、添付の画像を見て頂いた方が分かりやすいと思うのですが、 A2のセルへ、日付を自動で入力したいのですが、A2の行を右に検索して、 ○が見つかったら、その○が見つかった列の一番上の行にある値をA2のセルに 自動で反映されるようにしたいのです。 A2の行には、○の他に、×が入力されている場合もあるので、”○だったら” という判定が必要です。 始めは、目視で見ながら手入力しようと思っていたのですが、行数が数百ある上、 目視・手入力だと間違いが発生する可能性があるので、エクセルの関数などで 自動で入力したいです。 すみませんが、宜しくお願い致します。

  • エクセルで既出データを自動入力したい

    エクセルで既出データを自動入力したい 具体的には以下の通りです. A列がデータ特有のID番号で,B列はA列に対応したデータです。 B列のデータは重複することがあります。 A列 B列 12345 A 33456 B 12345 A 99999 C 12345 A 32372 A ・ ・ に対して、次にA列に"33456"を入力すると、B列に"B"を返す関数を教えていただきたく存じます。 既出データでない場合は手動でデータを入力します。 lookup系の関数かと思いますが、調べた範囲でよくわかりませんでした。 大体1300行ほどのデータがあります. よい方法があれば教えていただけると大変ありがたいです. EXCELは2003と時々2007を使います。

  • エクセルの自動入力について

    エクセルの自動入力について 例えば、A列に「1120」と入力したら、B列はA列の4桁の一桁目に反応して「1年」と自動的に入力される機能はありますか? A列が2354ならB列は2年。 A列が5603ならB列は5年。 という風に。 私が使っているのはエクセル2000です。 ご存知の方いらっしゃいましたらよろしくお願いいたします。

  • エクセルで数字の自動入力について

    すみません。 現在、仕事でエクセルに自動で番号が振られていくシートを作りたいと思っています。 エクセル 2003 OS WINDOWS VISTA A1のセルから始まる表で例えばG1に"済”か”未"の文字が入力されるとA1のセルに『1』G2に入力されるとA2には『2』という具合に G列に文字が入力されると自動でA列に数字が入力される、という設定にしたいのです。 IFやVLOOKUPで挑戦してみましたが、いまいちうまくいきません。。。 どなたか、お詳しい方がいらしたらご教示お願いいたします。 

  • エクセル 条件によってデータ入力 関数

    エクセルで、関数を利用してデータ集計をしたいと考えています。 A列の数値が  (1)100以下だったら 「1」 (2)101~150だったら 「2」 (3)151以上だったら 「3」 と別列Bに表記する というイメージで関数を組みたいと考えています。 この例の場合だと、A列の値に応じてB列に1/2/3のいずれかの値が入力されるイメージです。 どう関数をつくればいいかわからず困っています。 よろしくお願いします。

  • エクセルの時刻入力(now)関数を自動更新について

    ご質問させてください。 うまく表現できるかわかりませんが、エクセルにお詳しい方、ご教授くださいませ。 NOW関数をセルに入力して、ファイルを次回開くとその時刻となってしまいますが、 自動更新させずに、値としてセルに残す方法はご存じありませんか? ご存じの方いらっしゃいましたら、ご教授くださいませ。         A    B    C    D 1     開始時刻         終了時刻       所要時間       入力品名         ⇓             ⇓               ⇓ 2 『=IF(D2="","",NOW())』  『=IF(A2="","",A2+1/1440)』 『=B2-A2』    3 ・・・・・・以後続く。 という感じで、D2に品物名を入れたら、A列に開始時刻 B列に終了時刻『1分』 C列に所要時間を自動入力し、その開始時刻(A列)を以後反映させないように(次にファイルを開いても数値が変わらない。)ようにするには、どのようにしたらよいでしょうか? エクセルは初心者の域をでませんので、悩んでおります。ぜひ、ご教授くださいませ。 よろしくお願いいたします。 ※ちなみに、エクセル2003です。                                    

  • エクセル Excel 関数or条件付き書式

    あけましておめでとうございます(*^_^*) 新年早々教えてください! セルに指定された値(文字列)を入力すれば 自動で別のシートの別のセルの書式が変更される (あるいは関数により自動で値が入力される) 方法を探しています! エクセルマスターの方お願いします! 【具体的に…】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10の 書式が 自動変更される(例-フォントが赤になる) もしくは 【具体的に…(2)】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10に 指定された値(例-厄年)が 自動入力される そんな方法を教えてください! どちらもできれば最高です!!

  • Excel - 入力規則で自動的に値を入力するには

    チェックボックスが2つあり(A,B)、それぞれA1,B1にリンクしています A1がtrueのときはC1に自動で"AAAAAA"という値を入れ、かつC1に他の値を入力不可 B1がtrueのときはC1に自由に入力可 つまりは、 ・C1に入力規則 "=B1=true" ・C1に 関数"=if(A1=true,"AAAAAA","") を入れたのと同じ効果を、C1および数式バーに関数を表示せず行いたいのですが、C1にどのような設定を入れたら良いでしょうか、お力をお貸し下さい。。。 ※配布資料のため、マクロ使用やツールバーを変更するのはできるだけ避けたいのですが、不可能でしょうか。

  • エクセル 一つのセルで数値入力と数式を有効にできませんか?

    エクセル2002を使っています。   A B 1 b 150 2 b 120 3 a ― 4 c 160 A列に入る文字がa以外であればB列に数値入力でき、aであれば”-”が自動的に表示されるようにしたい。 IF関数を使うと-表示は可能です。=IF(A1="a","-","") しかし数値を入力すると関数が消えてしまいます。 両方を有効にする方法はないのでしょうか? どなたかご存知の方、ご教授お願いします。

  • excelでの自動入力について

    例で、excelで、「A1」が「ABC」の場合、「B1」に「20」と自動で入る関数を教えてください。

専門家に質問してみよう