○第170回目 飛び飛びの足し算がしたい
むしょうに飛び飛びの足し算がしたい!
というときはありませんか。飛び飛びといっても、当然に規則的になっているものです。
例えば、月ごとにA商品、B商品の売上金額があります。1年たったので、それぞれの合計を出したいというケースです。(月別のデータは、たてに展開されているとします)
力技でやっていきましょうか。
通常は、どこかの列に1,2と入れておき、SUMIFで、1のものだけを足す、2のものだけを足すという計算式にします。
項目は少ないですが、次のような計算式になります。
=SUMIF(A12:A19,1,B12:B19)
ここではA列に1,2を入れておき、B列が集計したい金額となっています。
もう少し汎用的にして
=SUMIF(A12:A19,a21,B12:B19) という書き方もできます。この場合は、a21に1を入れておいてください。
また、=SUMIF(A$12:A$19,A21,B$12:B$19)としておけば、コピーができます。
このやり方ですと、加算する行が不規則な飛び方になっていても大丈夫です。
マクロよりもこのやり方のほうがスマートですね。
おしまい。ではかわいそうです。
まあ、半分余興として付き合ってください。
力技方式をマクロで作ってしまいましょう。
流れです。
1.計算式を入れたいセルで実行します。
2.第一項目を指定する
3.第二項目の方向と飛び数と計算対象個数を入力する
横方向が多いので、縦の場合は*をつけることにします。個数は-の後に指定します。
例えば、2-6とかです。飛びはマイナスもあるので、-3-6という指定も可能とします。
※逆指定(計算式の入るセルからではなく第一項目からの指定)も可能とします。逆指定は/を入れます。
※計算式のあるセルと計算項目は同じシートにある必要はありませんが、計算項目はすべて同じシートにあるものとします。
これらの情報から、加算する項目の座標(A1形式)をもとめ、それらを"+"でつなげていけばいいのです。
Cells(gyo1, retu1).Address で座標(A1形式)を取得することができます。
この中の、行数と列番号を変えて、座標を取得していけばいいのです。

0 件のコメント:
コメントを投稿