GoGoマクロのブログ

初心者向けマクロ講座「Go!Go!マクロ」の筆者三太郎の公式ブログです。

GoGoマクロ

エクセル仕事の自動化が誰でもできる本

色分け合計マクロ(おまけ編)

2007-11-16 15:20:48 | マクロ作成のコツ
にほんブログ村 IT技術ブログへ

Lesson 85      --- 「リクエスト特集」第3弾 ---
 テーマ:色分けしたセルの各色の合計を出す(おまけ編)


―――――――――――――――――――――――――――――――――――
◆リクエスト紹介
―――――――――――――――――――――――――――――――――――

今回は、高畑さんからいただいた下記のリクエストをご紹介しています。


 >マクロのテキストを本屋にて購入したのですが、よくわからず・・・(泣)
 >教えていただければ幸いです!!
 >色分けしたセルの各色のセル合計をしたい!!
 >例のデータを添付したので、よろしければ公開してください!!
  → データ例の図


高畑さん、リクエストありがとうございます。



今回は、前回やり残してしまった2列でも合計が出せるマクロへと、もう少し
プログラムの修正を行ない、今度は本当の完成に至ります。


それでは早速、前回作成したエクセルマクロ"gogo84.xls"をご用意ください。
もし無い方は、ホームページの中のダウンロードのページに用意しましたので
そちらからダウンロードしてください。(左の中ほどにリンクがあります。)
    「Go! Go! エクセルマクロをはじめよう!」


※今回からはじめて購読開始された方は、上記ホームページにこのリクエスト
のバックナンバー(No81,No82,No83,No84)を公開していますので、
そちらからまず学習してみてください。(今号は、その続きからの内容となっ
ています。)



1)
まずはじめに、プログラムの中身の確認です。
――――――――――――――――――――――――――――+
1."gogo84.xls"を開きます。(セキュリティ確認画面が表示された
 場合には、[マクロを有効にする]を選んでください。)

2.マクロプログラムを表示します。
 [ツール(T)] → [マクロ(M)] → [Visual Basic Editor(V)]
――――――――――――――――――――――――――――+

++++++++++++++++++++++++++++―
Sub Macro1()
'
  n = Cells(Rows.Count, "A").End(xlUp).Row
  For i = 1 To n
    Range("A" & i).Select
    a = ActiveCell.Value
    c = ActiveCell.Interior.ColorIndex
    If c = 6 Then
      s1 = s1 + a
    End If
    If c = 46 Then
      s2 = s2 + a
    End If
    If c = 38 Then
      s3 = s3 + a
    End If
  Next i

  Range("F2").Select
  ActiveCell.FormulaR1C1 = s1
  Range("F3").Select
  ActiveCell.FormulaR1C1 = s2
  Range("F4").Select
  ActiveCell.FormulaR1C1 = s3
End Sub
Sub Macro2()
    ・
    ・
    ・

++++++++++++++++++++++++++++―

この Sub Macro1 の前半の部分( Next i の行まで)が、色別のセル合計値
の足し合わせを行なう計算部分で、その後の後半部分が、その計算した合計
値を表示させる部分です。
これは、前回までに完成させたマクロプログラムですが、ここではまだ1列
(A列)の合計値だけを計算するものになっています。

きょうは、このプログラムをちょっと拡張することで、2列(A列とB列)の
合計値が計算できるマクロにしていこうというわけですが、それには、この
前半の計算部分を2列に拡張してやればよいだけです。


2)
それでは、このプログラムにちょっと手を加えて拡張してみます。
――――――――――――――――――――――――――――+
1.まず、その Macro1 の前半の計算部分の以下の15行
  n = Cells(Rows.Count, "A").End(xlUp).Row
  For i = 1 To n
    Range("A" & i).Select
    a = ActiveCell.Value
    c = ActiveCell.Interior.ColorIndex
    If c = 6 Then
      s1 = s1 + a
    End If
    If c = 46 Then
      s2 = s2 + a
    End If
    If c = 38 Then
      s3 = s3 + a
    End If
  Next i
 をコピーして、すぐその下にそのままそっくり貼り付けを行なって
 ください。

2.次に、いま貼り付けた方の1行目の
  n = Cells(Rows.Count, "A").End(xlUp).Row
 の "A" という部分を "B" に修正します。( A → B にするだけです。)

3.最後に、同様にいま貼り付けた方の3行目の
    Range("A" & i).Select
 の "A" という部分も "B" に修正します。
――――――――――――――――――――――――――――+

修正した後のプログラムはつぎの様になります。

++++++++++++++++++++++++++++―
Sub Macro1()
'
  n = Cells(Rows.Count, "A").End(xlUp).Row
  For i = 1 To n
    Range("A" & i).Select
    a = ActiveCell.Value
    c = ActiveCell.Interior.ColorIndex
    If c = 6 Then
      s1 = s1 + a
    End If
    If c = 46 Then
      s2 = s2 + a
    End If
    If c = 38 Then
      s3 = s3 + a
    End If
  Next i
  n = Cells(Rows.Count, "B").End(xlUp).Row
  For i = 1 To n
    Range("B" & i).Select
    a = ActiveCell.Value
    c = ActiveCell.Interior.ColorIndex
    If c = 6 Then
      s1 = s1 + a
    End If
    If c = 46 Then
      s2 = s2 + a
    End If
    If c = 38 Then
      s3 = s3 + a
    End If
  Next i

  Range("F2").Select
  ActiveCell.FormulaR1C1 = s1
  Range("F3").Select
  ActiveCell.FormulaR1C1 = s2
  Range("F4").Select
  ActiveCell.FormulaR1C1 = s3
End Sub
++++++++++++++++++++++++++++―

1列(A列)を2列(A列とB列)に拡張するために行なう修正はたったの
これだけです。実に簡単ですね。

そうです、これなら3列(A列とB列とC列)に拡張することだってもう
誰でも簡単にできてしまいますよね!?



3)
それでは、実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、シートは現在開いている[Sheet1]のままで、

2.セルの A2 から A7 までをコピーしてその横のB列に貼り付けてください。

3.では、実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
 そのまま(「Macro1」の方を)[実行]をクリック。
――――――――――――――――――――――――――――+

実行した結果、
F2のセル(黄色のセルの合計値を表示させる欄)に 100
F3のセル(オレンジのセルの合計値を表示させる欄)に 140
F4のセル(ピンクのセルの合計値を表示させる欄)に 180
と、それぞれの合計値が正しく表示されればOKです。
(同じ数字をそっくりコピーしましたので、合計値は前回の2倍になっていれ
ばよいわけです。)


今回のように、作ったマクロプログラムが「簡単に修正できる!」また「簡単
に拡張できる!」ということが、実に重要なことであると思いますし、それが
この講座が目指す最大のテーマでもあります。


今回はこれで終了です。


無料メルマガの登録は、▼こちらから▼
「Go! Go! エクセルマクロをはじめよう!」












コメント

浅田真央の・・・

2007-11-05 08:36:54 | よもやまな話
にほんブログ村 IT技術ブログへ


まずは、優勝


それにしても、真央ちゃんの耳たぶとゆうのはすばらしいですねぇ~。

歴史的に言えば徳川家康、現代ならヤンキースの松井秀喜を想わせます。


あの耳たぶで、大成しないワケがありません。


最近は、だいぶ大人びてきましたのでもう真央ちゃんと呼ぶより
浅田真央さんと呼ぶべきでしょうか。


スケートでもエレガントな大人の女性になって、きっとあの福耳で
大成してくれることでしょう!


真央ちゃんの愛犬エアロも内のと同じトイプーのレッド同士なので
特に応援しています!








無料メルマガの登録は、▼こちらから▼
「Go! Go! エクセルマクロをはじめよう!」





コメント

リクエスト大募集!

2007-11-01 15:39:01 | お知らせ
にほんブログ村 IT技術ブログへ



読者の皆さんからのリクエストを大募集いたします。


今回の応募期間中にリクエストをお寄せいただいた中から
採用させていただいた方全員に、コチラの電子版(14,800円相当)
のマクロ教材をもれなくプレゼントいたします!



「こんなマクロが作りたい!」と考えているものがあるという方は、
是非ふるってご応募ください!! (応募締め切りは11月20日まで)
リクエスト応募先 



ちなみに、採用されやすいリクエストの書き方は、こちらの過去
リクエストを参考にして書いてくださいね。




それでは、沢山のリクエストお待ちしてます!

エクセルマクロを学習するなら、▼こちら▼
「Go! Go! エクセルマクロをはじめよう!」



コメント