こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【Excel】数式をボタン登録できますか?

Excel2003を使用しています。

ある数式をボタンに登録して、必要なときにだけボタンを押すことで登録した数式を呼び出して、セルに入力することはできるでしょうか?
現在はH列とI列に下記の数式を入力しているのですが、H列、I列に直接数値を上書きすることも少なくないので、必要なときにだけボタンを押して下記の数式を入力できたら、このシート自体もスッキリするのではないかと思い、質問させていただきました。

 H列→[=IF($E8="累 計",SUMIF($E$8:$E8,"月 計",H$8:H8),"")]
 I列→[=IF($E8="累 計",SUMIF($E$8:$E8,"月 計",I$8:I8),"")]

マクロを使用することで可能であれば、参考までにコードを記載していただけると助かります。
よろしくお願いします。

投稿日時 - 2006-11-14 14:46:24

QNo.2538725

困ってます

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

こんばんは。Wendy02です。

数式で、意味が分かりました。ActiveCellということで、意味が理解できませんでした。

[=IF($E8="累 計",SUMIF($E$8:$E8,"月 計",H$8:H8),"")]

>「E8以下のE列に『累 計』と入力されたら、
> E8以下のE列に『月 計』と入力されている行の
> H列の数値を合計する」

これは、H8 か、I8 以降に対して、この式が成立するのですね。それも、これは、H8 か、I8 を基点としたもので、それが変化するわけです。A1 方式ですと、ものすごく分かりにくいです。確かに、『累 計』と入力されたら、累計を出すのですが、基本的には、データの末尾に出てくるものですね。これは、やったことがないと、意外に難しいです。

そうすると、ActiveCellとは言っても、限定されますから、これは、コマンドボタンではなくて、ダブルクリック・イベントでも良いような気がします。(ActiveCell は、Target になります)

それで、たぶん、私の書いたマクロは理解しがたいかもしれませんが、まず、一度、試してみて、ワークシートの、数式の変化を確認してみてください。セルによって変化します。
以前、似たようなものは作ったことがあります。

If 構文の中身は、余計なおせっかいかもしれませんので、邪魔なものは取り去ってください。

With ActiveCell
 If (.Column = 8 Or .Column = 9) And .Row >= 8 And IsEmpty(.Value) Then
  .FormulaR1C1 = "=IF(RC5=""累 計"",SUMIF(R8C5:RC5,""月 計"",R8C:RC),"""")"
 Else
  MsgBox "入力位置は、H列か、I列の8行目以降の空のセルです", vbInformation
 End If
End With

投稿日時 - 2006-11-15 00:42:16

お礼

こんにちは。

数式をR1C1方式にすることによって、同じ内容の数式でもA1方式と比べるとずいぶん分かりやすくなりますね。この方法で他の数式でも同様のマクロを作ってみたところ、うまくいきました。

>コマンドボタンではなくて、ダブルクリック・イベントでも良いような気がします。(ActiveCell は、Target になります)

とアドバイスをいただきましたので、練習がてら試してみたところ、これもうまくいきました。

おかげさまで、シート自体も必要な箇所にだけ数式が入力されていて、スッキリしました。シート数が多いブックで、同様のブックが10個ほどありますので、容量も若干スッキリしたようです。

今回も最後までお付き合いくださり、ありがとうございました<(_ _)>

投稿日時 - 2006-11-15 14:10:36

ANo.4

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

こんにちは。

>アクティブセルに応じて計算した結果を表示させることはできるのでしょうか?
>説明不足だったようで申し訳ありませんが、よろしくお願いします。

もともと、行や列の一部が相対参照式になっているのですから、今のご質問だけでは、アクティブセルにマクロで数式を貼り付けられるはずがないと思います。

この数式は、どこのセルに対して、このような数式になったのか分からないと、対応できません。
H列→[=IF($E8="累 計",SUMIF($E$8:$E8,"月 計",H$8:H8),"")]

投稿日時 - 2006-11-14 17:23:30

補足

こんばんは。

>この数式は、どこのセルに対して、このような数式になったのか分からないと、対応できません。
H列→[=IF($E8="累 計",SUMIF($E$8:$E8,"月 計",H$8:H8),"")]

H列には、「E8以下のE列に『累 計』と入力されたら、E8以下のE列に『月 計』と入力されている行のH列の数値を合計する」という数式を入力しました。別の列に数式をコピペしてもエラーが出ないように行や列の一部を相対参照や絶対参照にしています。
(別件で質問させていただいた際、このようなアドバイスを受けましたので…)

投稿日時 - 2006-11-14 23:01:27

ANo.2

式を入れるだけなら下記にようになります。
ActiveCell.Formula = "=IF($E8=""累 計"",SUMIF($E$8:$E8,""月 計"",I$8:I8),"""")"

投稿日時 - 2006-11-14 15:13:57

補足

回答ありがとうございます。
アクティブセルに応じて計算した結果を表示させることはできるのでしょうか?
説明不足だったようで申し訳ありませんが、よろしくお願いします。

投稿日時 - 2006-11-14 15:38:33

ANo.1

H列の式を入力するマクロは次の通りです。

ActiveCell.Formula = "=IF($E8=""累 計"",SUMIF($E$8:$E8,""月 計"",H$8:H8),"""")"

投稿日時 - 2006-11-14 15:12:04

補足

回答ありがとうございます。
アクティブセルに応じて計算した結果を表示させることはできるのでしょうか?
説明不足だったようで申し訳ありませんが、よろしくお願いします。

投稿日時 - 2006-11-14 15:33:19

あなたにオススメの質問