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! エクセルマクロをはじめよう!」