プロが教えるわが家の防犯対策術!

エクセルで以下のようなデータがあります。
やりたいのは、各要素ごとに足し算していき、合計値の行列がほしいです。
エクセル内で行数列数は変わりません。
データはすべて数値で小数点以下もあります。
本当のデータは100行200列が100回繰り返しくらい大量です。
Noも気にしなくてよく、上から順に足したいです。
配列でやろうとしましたが、配列で各要素に足していく方法が分からなくて困っています。
よろしくお願いします。

0 2 5(No,行数,列数)
2 2 2 2 2(データ)
2 2 2 2 2(データ)
1 2 5
1 1 1 1 1
1 1 1 1 1
2 2 5
以下続く

A 回答 (3件)

Range.PasteSpecial メソッドで、Operation オプションに xlPasteSpecialOperationAdd を指定して、それを100回繰り返せば良いと思う。

    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます。
これでやってみます!

お礼日時:2022/11/16 07:34

No1です。



>配列数式は手打ちだと大変なので。。。
VBAのご質問なので、数式(=文字列)もVBAで作成すると考えての回答でしたが・・

でも、配列数式なんかを使うよりも、No2様の方法の方がよさそうですね。
手間もたいして変わりませんし、計算はエクセルがやってくれますし・・
    • good
    • 0
この回答へのお礼

ありがとうございます。
すみません、数式をつくるコードがパッと思いうかばずでした。
ひとまずNo2様の方法で試します。

お礼日時:2022/11/16 07:36

こんばんは



>配列で各要素に足していく方法が分からなくて困っています。
VBAでは行列計算を直接行う機能はサポートしていないようですので、単純に要素の回数だけループで処理してゆくしかないようです。

別法として、シート上で計算するならば、配列数式を利用してまとめて計算することも可能と思います。
式にしてみると、
 {=A2:E3+A5:E6+A8:E9 ・・・}
みたいな感じですが、単純にセル範囲のアドレスを「+」で繋ぐだけで式ができるので、それをセットしてしまえば、後はエクセルが計算してくれるという塩梅です。


ご質問には直接関係はありませんが・・
>0 2 5(No,行数,列数)
は、2行5列の行列を意味しているものと思いますが、以降のデータにも全てこの記載があるようですけれど、冗長なので、これらの数字に食い違いがあった場合にどうするんでしょうね?
例えば、次のデータが「1 2 6」になっていた場合など。
先頭行の情報を信じて、あとはn+1行おきに処理しても良いなどであれば問題は起きませんけれど・・
    • good
    • 0
この回答へのお礼

ありがとう

ありがとうございます。
for文で繰り返す方法を試してみます。配列数式は手打ちだと大変なので。。。
行数列数が途中で変わることはないので最後まで同じ繰り返し処理でよいです。

お礼日時:2022/11/15 23:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A