• ベストアンサー

エクセル2000で教えて下さい。

セルに式を入れると、式の対象データが発生した時自動的に式が入っているセルに 値が入りますが、マクロ(モジュール)では、上記の方法(ボタン等を使用しない)はできないのでしょうか? セルの式では下記の条件式がわかりませんがマクロの記述ならわかるので・・・ もしセルの式で下記できれば、こちらも教えて下さい。 1、例)A1~A30の間に10という値があった場合のみ対象のB例の値を加算する。 2、例)C1~C7の間にD1~D7の中に値がある場合のみ、C1から順番にD列の値を 移す。 2番の例は、よくわからないのですが、セルの式ではできないと思いますので できれば、ボタン操作をつかわないでどこかに設定をすると自動的に行う方法 はありませんか? お願いします。 もし、セルでは自動できないがテキストボックス等で、できるのでしたら・・・ どんな方法でもいいのでお願いします。

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

  • ベストアンサー
回答No.3

セルに式を入れると自動的に値を入れる方法については 下記の手順でお願します。 エクセルを開く VBEを開く プロジェクトから任意のシートをダブルクリック コードウィンドウの上にある2つのリストボックスの 左側でWorksheetを選択 右側でChangeを選択 すると下のものが作られるので Private Sub Worksheet_Change(ByVal Target As Excel.Range) End Sub これに以下のものを入れてください。 If Target.Address <> "$A$1" Then Exit Sub Range("B1") = Range("B1") + Val(Range("A1").Value) Range("A1").Activate A1セルが変更された時のみ対象にしています。 B1にA1を足します。 「イベント」というものです。他には下のものがあります。 1.値が変更された時 2.シートがアクティブになった時 3.ダブルクリック 4.右クリック 5.再計算時 6.非アクティブになった時 7.選択範囲を変えた時 詳しくは、解説書などの「イベント」の欄で。 他の質問についてはボタンを使わないことが 重要だとするとこの応用で A1のみを対象とせず、シート全体が対象であれば 何か変える、移動するだけでマクロが動くので ボタンを必要とせず、数式ではなくマクロの記述が 使えるのではないでしょうか。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

質問の意味がつかみづらいですね。 『ボタンを使用しないで』の意味と (1)対象のB列の値を加算する。  この『対象のB列』はどのセルで、『加算する』のは何に加算するのでしょうか。   解釈:A列の値が10なら右のB列の値をA列に加算する。      とすれば、循環を起こしますのでシートで関数等使ってはできないですね。      対象のB列の値を加算するの意味がはっきりすれば対応できるでしょう。      多分、Worksheet_SelectionChange か Worksheet_Change でセル番地を調べて      処理を書くことになるでしょう。しかし、処理内容によっては非常に困難だっ      たり、誤処理を引き起こしかねません。例えば、計算した後、B列の値を修正      したり削除した時にどうするかも決めておくことが必要です。 (2)値を移す。   解釈:これがカット&ペーストの意味なら、これもシートで関数等使ってはできない      ですね。D列を消すのが困難でしょう。      分からないのは、『移す』タイミングです。マクロを動かすには『きっかけ』      が必要ですが、質問からは、どの時点でマクロを動かすか読み取れないようです。      こちらは何かのきっかけで、D列をC列にコピーしてD列を消去するくらいでし      ょうか。 質問1:A列に入力した時点で判断して10だったらB列の値を加算する。 質問2:セルF2をクリックしたらD列をC列に移す。 と私なりに解釈して作った例です。シートのコードウインドウに貼り付けます。 Private Sub Worksheet_Change(ByVal Target As Excel.Range)   '/// (質問1)A1からA30ならB列を加算 ///   Dim rw As Long '行カウンタ   On Error GoTo ErrorHandler   '単一セルを操作   If Target.Count = 1 Then     If Not Union(Target, Range("A1:A30")) Is Nothing Then       '値が10だったら       If Target.Value = 10 Then         Application.EnableEvents = False 'イベントが発生しないようにする         Target.Value = Target.Value + Range("B" & Target.Row)         Application.EnableEvents = True       End If     End If   End If   Exit Sub ErrorHandler:   Application.EnableEvents = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)   '/// (質問2)F2をクリックすればD列をC列に移す ///   Dim rw As Long '行カウンタ   On Error GoTo ErrorHandler   '単一セルを操作   If Target.Count = 1 Then     If Target.Address = "$F$2" Then       '数値が入力されていたら       If WorksheetFunction.Count(Range("D1:D7")) > 0 Then         Application.EnableEvents = False         'D列の値をC列に書く         For rw = 1 To 7           Cells(rw, 3) = Cells(rw, 4)         Next         'D列をクリア         Range("D1:D7").ClearContents         Application.EnableEvents = True       End If     End If   End If   Exit Sub ErrorHandler:   Application.EnableEvents = True End Sub

  • hiromuy
  • ベストアンサー率27% (103/370)
回答No.1

1.SUMIF関数でできます。   質問の場合、=SUMIF(A1:A10,10,B1:B10) 2.IF関数で出来るのでは?   C1セルに、=IF(D1="","",D1)   C2セルに、=IF(D2="","",D2)        ・        ・        ・ 質問の意図をくみ取れていると良いのですが・・・

関連するQ&A

  • エクセルVBAについて

    以下の処理をマクロで実行しようと思っていますが、わからない部分があるので教えてください。 (例):  A B C D E F G 1 1 2  3  4 5  6  7 2 10 30 50 70 90 130 150 3 4 (1)1行目のどこかの連続したセル(例えばセルA1から セルD1)をドラッグする。 (2)マクロを実行する。 (3)セルA4に、「D2-A2」を計算した値が自動的に入力 される。この例では「70-10=60」  これは、(1)で例えばセルB1からF1をドラッグした場 合には、「F2-B2」を計算した値を入力したいので す。   要は、連続したセルを選択してその始点と終点のセルの行と列を取得できればこの処理はできると思うのですが、方法が分かりませんので教えてください。 よろしくお願いします。

  • エクセルの値のコピー(自動で)について

    例えば、 セル(A1)に1      セル(B1)に3      セル(C1)に=SUM(A1:B1) と入力します。      セル(C1)は、見た目には4ですが、      実際は「=SUM(A1:B1)」です。  ここで、 セル(D1)には、セル(C1)のコピーを「値」の形式で貼り付けると    セル(D1)は4となります。 このセルDの貼り付けを自動で行いたいのですが可能でしょうか。 私はマクロとか分かりません。 関数での方法を教えて下さい。

  • エクセルのVBAで教えてください

    エクセルのVBAで教えてください、セルA1の値をマクロボタンを押すたびに、セルC1から順番にC2・C3・C4・・・・と下に自動的に入力するVBAを教えてください。

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。

  • エクセルで(A1:C1)のセルにD1をかけるには

    例えばA1,B1,C1のセルが以下のようになっていて、  [ 20 ][ 30 ][ 40 ] D1のセルに式を書く事で、A1,B1,C1の表示を10倍にしたり20倍にしたりしたいのですが、  [ 200 ][ 300 ][ 400 ][ 式 ] (10倍の例) そのような事は可能ですか。 A1,B1,C1セルには値だけが書かれていて、これらのセルは変更したくありません。 D1の式を弄るだけで、A1,B1,C1の値が指定した倍率になって表示されるようにしたいです。 D1の式を削除すれば、元通り[ 20 ][ 30 ][ 40 ]が表示されてほしいです。 D1にかける数を入れておいて、各セルに[ =20*D1 ][ =30*D1 ][ =40*D1 ] とするのは避けたいです。 (このような列がたくさんあるので) よろしくおねがいいたします。

  • エクセルで質問です。

      A  B   C   D      1 ○ ○  ○○  1    左記のようにAとBのセルに、○や△や×をを入力し、CとDの行に  2 ○ △  ○△  2    値を返す方法を教えて下さい。  3 △ ○  ○△  2    例 A1△、B1△、入力、 C1には△△とD1には3の値を返す。 4 △ △  △△  3    例 A1× B1△、入力、 C1には△×とD1には4の値を返す。 5 △ ×  △×  3 6 × △  △×  4 7 × ×  ××  5 8 × ○  ○×  3  9 ○ ×  ○×  3

  • エクセル2000で、・・・・・可能でしょうか?

    エクセル2000(Win98)で、 マクロ以外で、下記方法は、可能でしょうか? 可能であれば、どんな方法があるでしょうか? 最悪マクロでもいいのですが、あまり詳しくないので・・。 マクロでないと無理でしょうか? 例) A B  C      D  必要長さ 本数      元の長さ    製品名 -------------------------------------------------------------------- 1 996   6       6000      XYZ     2 416  10 3 1206   8 4 1586   8 5 1996   4 ======================= 上記のように記入後、下記のように6000の長さの品物を、効率よく使う為に、 自動で、出したいのですが(計算させたい)。 6000が何本必要になるか。 6000で、どの長さを(A1:A5)何本(B1B5)使えばよいか。 セルのの配置は、どこでもいいのですが、計算の仕方、方法を、ご教授願えませんか?                   ^^^^^^^^^^^ 尚A1:A5までの、数値は、別シートからリンクします。 ---以降補足欄に続きます。800文字こえてるみたいなので。---                       

  •  エクセル関数式により、ある値が二つの値の間にある条件の時に抜き出す方

     エクセル関数式により、ある値が二つの値の間にある条件の時に抜き出す方法。  初めまして。よろしくお願いします。  例) A B C D E F 1赤 2 5 1 2青 9 2 3 青 3黄 1 9 4 黄 4緑 3 4 2 5黒 8 4 9 6紺 2 5 4 紺 7橙 5 1 6 8 9  D列にある値がB列にある値とC列にある値の間に有る場合、A列に有る値をE列に抜き出す(例では2行目、3行目、6行目のDの値がBCの値の間に有るためにEのセルにAの値を表示される)関数式を教えていただきたく、よろしくお願いします。

  • エクセルでの書式の参照

    エクセルで複数のシート70枚(A,B,C,D.....)ほどを使っています。B以降のセルはAのセルを参照しているのですが、値は参照されますがパターンが参照されません。Aのセルの色を変えたら自動的にB以降のセルにも反映されるようにしたいのですが、そういうことはできるのでしょうか? 仕事で使っていますが、今は1枚ずつ手動で色を変えていて、かなり手間がかかってしまいます。 マクロとかは初心者ですが、どなたか教えていただけないでしょうか? 例) A1の数値と色を変更したとき、B1,C1,D1・・・の数値と色も同じにしたい

  • エクセル関数

    こんにちは、エクセルでこんなこと出来ますか?教えてください。  例 acbadcbba 935841621 セルにa~dの文字を入力し、それに対する値を入力していきます。  順次入力していきますが、常にa~dの値を別なセルに表示させたいのですが、可能でしょうか?  上記の例では、aは1 bは2 cは1 dは4 です。 可能でしたら、方法を教えてください。よろしくお願いします。

専門家に質問してみよう