基本的なことなのかもしれませんが、方法がわからないので教えてください。
Excelの表で、A1の次はA5、A9というように4行ごとの数字の和を集計したいです。
今は、とても原始的な方法で、「=A1+A5+A9」という具合に足しているのですが、これですと数が増えてくると大変です。
また、A2から4行ごとに足したいこともあり、とても不便です。
そこで、行番号を取得して、4で割り切れるものだけ指定の数まで足していきますよ、という式を組み立てたいと思いました。
sumifと行番号を取得する関数と割り算のあまりを返す関数を組み合わせればできると思うのですが、どのように書くのが簡単でよいでしょうか?
私が、思うのは
=sumif(A1:A100,MOD(ROW(),4))
としているのですが、これでよいでしょうか?
また、A2から4行おきの場合は
=sumif(A2:A100,MOD(ROW()+1,4))でよいのでしょうか?
ほかによい方法があったり、そもそもこの式が間違っているのかよくわかっておりません。
ご指導をお願いいたします。
No.6ベストアンサー
- 回答日時:
こんにちは。
>どうも、sumproductをたくさん使うとエクセルシートの計算が遅くなってしまうように思うのですが、気のせいでしょうか?
キャッシュメモリからスワップが発生して、計算が遅くなってしまう現象だと思います。実際に、だいたい、10~100倍の計算スピードが落ちます。その限界数が、参照される対象計算セルが、5,500個ぐらいのはずです。また、通常の関数は、引数の変更によって、その対象の関数の内部だけが計算するようにできていますが、配列数式の場合は、ひとつの関数の変化が全体に及ぼすので、あまり大量ですと、とても計算に時間が掛かるようになってしまいます。これを参考にしてワークシートを設計する必要があります。
その場合、計算式を分散する、マクロの計算に替える、データベース関数にする、などの措置が行われます。Office 2007 ですと、計算方法が変わりますから、スピードが落ちることは目立たなくなります。
なお、作業列を設けるなら、例えば
H1 ~H100 の範囲まで
=MOD(ROW(A1),4)=1
をコピーして、
このような数式で、解を得られます。
=SUMIF(H1:H100,TRUE,A1:A100)
別に、どちらでもよいと思います。
なお、速い遅いの計算速度は、よほど大量にならないと、秒単位にはなりません。一般の数式は、だいたい、10ms (1000分の1秒)以下ですが、100msぐらいまで、あまり気にならないのですが、500msだと、もう認知できるレベルになります。数秒や数10秒になれば、その都度、再計算が発生してしまうので、使用上の支障が出てしまいます。
No.5
- 回答日時:
[回答番号:No.2この回答へのお礼]へのコメント、
》 計算が遅くなってしまうように思うのですが、気のせいでしょうか?
そう思うのなら、他人に頼らず、自分でストップウォッチ片手に計測してみれば済むことです。
案の定だったか、思い込みだったか、参考までに教えてください。
なお、作業列を設けても構わないのなら、固執される SUMIF が使えます。
なお、配列数式 {=SUM((MOD(ROW(A1:A100),4)=1)*(A1:A100))} でもよろしいかと。でも、「計算が遅くなってしまうように思う」のかな?
ご回答ありがとうございました。
一行のみ利用してみたところ、速度は変わりませんでした。
ただ、ある一定の個数を超えたところから再計算(CPUはCore2Duoの1.6Ghz)で1分を超える時間にかかってしまうようになりました。
セル数で言うと、1万を超えるあたりだと思うのですが、式が複雑担ってくるとある時点で急に遅くなるようです。
No.4
- 回答日時:
=sumif(A1:A100,MOD(ROW(),4))
は良いところまで来ていると思いますが、SUMIF関数だけではROW関数が、式を入れたセルのみになってしまいます。
作業列を利用するか、配列関数を利用するかになります。
例えば、B列に =MOD(ROW(),4) と入れて下までコピィしておけば、0,1,2,3と繰り返し表示されるので
後は SUMIF関数でご希望の集計が出来ると思います。
さて、これを作業列を使わずに処理しようとすると配列関数を使用することになります。
空いているセルに
=SUM((A1:A100)*(MOD(A1:A100,4)=0)) と入れて Ctrl+Shift+Enter で決定します。式が{}で囲まれて配列関数をして認識されます。
A1の値 * MOD(A1,4)=0 の結果(条件が成り立つ場合は 1、違う場合は 0)の計算、それをA1~A100まで繰り返して、それぞれの結果の合計(SUM)というわけです。
別のセルに =SUM((A1:A100)*(MOD(A1:A100,4)=1)) で同様
=SUM((A1:A100)*(MOD(A1:A100,4)=2))
=SUM((A1:A100)*(MOD(A1:A100,4)=3)) でも同様にします。
SUMPRODUCT関数も配列関数の一種ですので同様の考え方です。
作業列に相当する部分をパソコンの内部で処理しますので沢山使用するとある時点で急に作動が遅くなることを感じると思います。
今回の場合、どうしても作業列が必要なので、式を四つ入れて遅くなるようであれば、作業列を準備した方法にしてみてください。
No.3
- 回答日時:
こういう問題はエクセル関数の8合目ぐらいの問題にさしかかったといえよう。
時どき出る有名なパターンの質問なんだ。以下は、4行おきを1,4、7行・・を足す問題と捉えてやっています。
3つやり方があって
(1)4行ごとにサイン(コード)をつける。作業列を使う。
空き列を使うが素直な考えで、関数も簡単なものSUMIFが使える。
A。関数で
=IF(MOD(ROW()-1,3)=0,1,"")を入れて、下方向に式複写
B。複写で
例えば空き列D列D1:D3に
1
空白
空白
のデータを入れて、D1:D3をコピーし、D4:D100(データの終わりまで)範囲指定して貼り付け
そしてSUMIF関数でD列の1の行の目的の数のある列の数字をを足せばよい。=SUMIF(D1:D30,1,B1:B30)
===
(2)行が3の倍数ということを条件にして加える。
SUMIFは条件部にMOD(ROW()-1,3)=0は使えないので、SUMPRODUCT関数を使う。条件付き加算にSUMPRODUCT関数を使うのは定石。本来は内積を
出すものだが。
=SUMPRODUCT((MOD(ROW(A1:A30)-1,3)=0)*(B1:B30))
=====
(3)配列数式を使う
=SUM(IF(MOD(ROW(A1:A30)-1,3)=0,B1:B30),0)
と入れてSHIFT,CTRL,ENTERキーを同時に押す。
B列うお足すとして1-30の連続数が入っている例だと、いずれの方法でも145
ーー
ほかにVBAとかでも簡単に(3-4行のコードで)出来る。
No.2
- 回答日時:
=SUMPRODUCT((MOD(ROW(A1:A100),4)=1)*(A1:A100))
これが4行おき A1 からの場合。A2、A3、A4 からの場合は上式中の =1 をそれぞれ =2、=3、=0 に置き換えればOK。
5行おきは上式中の 4 を 5 に置き換え、かつ、A4、A5 からの場合が それぞれ =4、=0 になります。
ご回答ありがとうございました。
sumifではなく、sumproductを利用しないとうまくいかないのでしょうか?
どうも、sumproductをたくさん使うとエクセルシートの計算が遅くなってしまうように思うのですが、気のせいでしょうか?
No.1
- 回答日時:
ツールバーの[Σ](オートSUM)を使うと便利です。
和(合計)の機能です。http://www.eurus.dti.ne.jp/~yoneyama/Excel/nyumo …
Excel2007なら
http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/e …
A5にA1~4の合計式を作ったら
A5をコピーして合計式を入力するセルに貼り付けてます。
コピー:
A5を選択して「Ctrl」を押しながら「C」のキーボードを押します。
貼り付け(ペースト):
式を入力するセルを選択して「Ctrl」を押しながら「V」
を繰り返します。
今後、質問される時はExcel2007とかExcel2003など
Excelの種類を明記した方が良いでしょう。
(Excel2007とExcel2003以前ではかなり違ってきます。)
書店でご利用のExcelの解りやすそうな図の多い入門書を購入することをお勧めします。
Web上にも
http://www.eurus.dti.ne.jp/~yoneyama/
http://www.aoten.jp/snack/index.html
http://kokoro.kir.jp/excel/index.html
http://www.geocities.jp/office_inoue/main.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
【Excel】4つとばしで合計する方法
Excel(エクセル)
-
EXCELで10行ごとの和を出したい
Excel(エクセル)
-
5列ごとに合計したい
Excel(エクセル)
-
-
4
3列ごとに合計を出したい
Excel(エクセル)
-
5
Excel 3列ごとに集計したい
Excel(エクセル)
-
6
エクセルVBA 4行飛ばしで転記するループ処理
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで極大値を拾うには
-
【Excel】4行ごとの和を集計し...
-
ネットワーク上のエクセルとリ...
-
エクセル初心者です
-
エクセルで各セルそれぞれ四捨...
-
1.5以上2.5未満の個数を求める...
-
EXCELで2つの数値のうち大きい...
-
Excelで隣のセルと同じ内容に列...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルでオートフィルタのボ...
-
2つのエクセルのデータを同じよ...
-
エクセルで特定の文字が入って...
-
エクセルで、2種類のデータを...
-
エクセルのオートフィルタで最...
-
Excelで半角の文字を含むセルを...
-
エクセルで時刻(8:00~20:00)...
-
エクセルで文字が混じった数字...
-
EXCELで 一桁の数値を二桁に
-
エクセルで最初のスペースまで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで極大値を拾うには
-
エクセルVBAで別BOOKに「名前の...
-
【Excel】4行ごとの和を集計し...
-
Excelで数行間隔で離れているデ...
-
エクセルで各セルそれぞれ四捨...
-
ネットワーク上のエクセルとリ...
-
SUMIF関数の合計範囲を広くする...
-
EXCEL: 数式を含んだΣは可能で...
-
Excel、sumifはありますが、min...
-
EXCEL IF関数 AND、OR条件
-
Kingsoft(Excel)の計算...
-
1.5以上2.5未満の個数を求める...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
Excelで隣のセルと同じ内容に列...
-
PowerPointで表の1つの列だけ...
-
エクセルで特定の文字が入って...
-
エクセルで、2種類のデータを...
-
エクセル 文字数 多い順 並...
-
エクセルでオートフィルタのボ...
おすすめ情報