月別アーカイブ: 2006年12月
合計欄の下に平均値を加える繰返し作業(3)
2006年12月16日 マクロ関連(使い捨てマクロ)
近くにある「Strawberry Cafe」なるカフェです。
テレビも付いてるし、アルコール類もメニューにあってゆっくりできるのですが、閉店時間が18時って早過ぎないかっっ…!?
( ゚ ▽ ゚ 😉
゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚
さて、前回の処理に使い捨てマクロを絡めていきたいと思います。
まず最初に、前回の(1)と(2)の手順を実行し、"***"フラグをつけておきます。
常に"***"マークをつけたセルからカウントして○行目、○列目から処理を開始させようとしているので、相対参照を使います。(「合計」や「平均」という文字を探してその位置を基点として処理することもできますが、汎用性を考慮してあえて"***"フ
ラグをつけてやってみます。)
次に、E8セルを選択しておいて、[ツール(T)]→[マクロ(M)]→[新しいマクロを記録(R)]とし、出てきた「マクロの記録」ウィンドウではとりあえずそのまま「OK」。「記録終了」ウィンドウの右側にある「相対参照」ボタンをクリックします。
その後、前回の(3)~(6)の手順を実行します。
ここまでできたら、マクロの自動記録を終了させます。「相対参照」ボタンの左側にある四角形のボタンをクリックしてください。
[ALT]+F11キーでVBE画面に切り替え、マクロシートの画面を確認してみてください。
こんな感じのコード↓が記録されていますでしょうか。
これの意味はわからなくてもあまり影響はありませんが、今まで操作したことが記述されているだけなのでなんとなくわかると思います。例えば、「Offset(0,-3).~」の部分はアクティブセルから0行目、-3列目(左に3列目)に移動する、という意味ですし、チラホラと散見される「Copy」とか「Cut」とか「Paste」という表現は何回か操作した「コピー」,「切り取り」,「貼り付け」の意味です。
もう一度[ALT]+F11キーでエクセル画面に切り替え、動作確認してみましょう。
"***"が付いているセルを選択した後で、[ツール(T)]→[マクロ(M)]→[マクロ(M)]とし、現れた「マクロ」ウィンドウでマクロ名「Macro1」を選択して「実行(R)」。
うまく平均点が入りましたか?次回、いよいよ繰返し処理を手で付け加えていきます。
合計欄の下に平均値を加える繰返し作業(2)
2006年12月12日 マクロ関連(使い捨てマクロ)
カゼをひいてしまいました。毎年このくらいの時期にひいてしまうので気をつけようと思っていましたが、やっぱりやられてしまいました。しかも、今年は1ヶ月くらい前にひいたカゼが治りきらずにこじらせたような形になったので、症状がキツくて参りました。。(x_x;)
のどが痛くなる→声が出なくなる→鼻が詰まる→熱が出る→タンが絡んで咳が止まらなくなる、の順番でフルメニューを体験し、3日間寝たきり状態でしたが、いまだにグジュグジュしています。皆さんも気をつけてくださいね。
(・_・;)
さて、前回の続きです。以下のような考え方で進めます。
まず、sum関数に使われている範囲をそのまま使いたいので、適当なsum関数(ここではB8セルのsum関数)を"コピー"ではなく"切り取り"で下のセルに持って来る。
持って来たsum関数のフィルハンドルをドラッグして3セル分コピペ。
そのまま置き換えで「sum」を「average」へ。
切り取って穴のあいた部分にはその隣のsum関数をコピペして穴埋め。
ここまでで1組の分は完成。同じことを、マクロのスタート地点を定めて100組分繰り返せば全部できそうですね。
再度手順を整理すると、以下の通りです。
(1)マクロのスタート地点に、IF関数で"***"マークをつける。E8セルを選択して、「=if(A8="合計","***","")」と入力。
(2)[編集(E)]→[コピー(C)]で、E1:E1000まで[貼り付け(P)]。
(3)B8セルを選択し、[編集(E)]→[切り取り(T)]とし、B9セルに[貼り付け(P)]。
(4)そのまま、D9セルまでフィルハンドルをドラッグして3セル分コピペ。
(5)罫線(上下線)を引いてFormを整える。
(6)[編集(E)]→[置換(E)]で「sum」を「average」へ置き換え。
次回以降、マクロでこれを100組分繰り返す処理を加えていきます。
<<ガイドシートURL>>
http://www.tcat.ne.jp/~ryu/PLE/Macro/55.pdf
合計欄の下に平均値を加える繰返し作業
2006年12月9日 マクロ関連(使い捨てマクロ)
例えば、以下のような表が100組まで(行数としては1000行目まで)続いているとします。
それぞれの表の合計欄の下に平均値を加えたい場合、どのような方法でやっていきますか?
B9セルに =average(B3:B7) と入れてD9セルまでコピペしますか?各組の人数が同じであれば、1組の分だけそういうふうに作っておいて、あとの組の分はそれをコピペ、コピペ、…と100回繰り返していけばなんとかなるかも知れませんが、この場合人数はそれぞれバラバラです。2組、3組…とそれぞれの範囲に対応したaverage関数を作っていると日が暮れてしまいますね。
この場合のネックは、作ろうとしているaverage関数の範囲が一定でないことです。
ところが、全部の組に共通して、sum関数による合計は正しく入っているので、このsum関数で使っている範囲をなんとかaverage関数に利用できないか考えます。
どの組のときにも汎用的に使える方法を考えて、まずは1組の平均値を加え、その作業を使い捨てマクロで繰り返して全部の組の平均値を入れていきましょう。