- ベストアンサー
エクセルでちょっと変わった合計の求め方
エクセルで以下のような事は簡単にできるでしょうか。 A B C ・ ・ ・ 1 3 0 2 2 1 2 1 3 1 2 1 4 5 3 2 0 6 3 1 0 7 1 2 1 8 9 3 2 2 ・ ・ ・ 12013 1 2 3 12014 2 1 3 12015 2 1 4 12016 12017 合計 合計 合計 12018 合計 合計 合計 12019 合計 合計 合計 12015行より上は入力された数字です。ここで、 Aの12017には、A1+A5+A9+・・・・+A12013、の合計 Bの12017には、B1+B5+B9+・・・・+B12013、の合計 Cの12017には、C1+C5+C9+・・・・+C12013、の合計 Aの12018には、A2+A6+A10+・・・・+A12014、の合計 Bの12018には、B2+B6+B10+・・・・+B12014、の合計 ・ ・ と、いうようにする場合、Aの12017にどのような数式を入れたらよいでしょうか? (=A1+A5+A9+A13+・・・・+A12013、なんて入力してられないので) Aの12017に数式がはいればBの12017以降はそれをコピーすればできると思いますので。 マクロは使った事ががありませんので関数とか利用した数式でできないでしょうか。 ちなみに簡素化のため列3X行3の入力された数字のかたまりで表示しましたが実際はもっと大きな かたまりです。また入力された数字の最後が何万何千何百何十何行になるかは データによって異なっています。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは どこか空いている列(仮にD列)を作業列にしては如何でしょうか? D1に =MOD(ROW(),4) 下方向にフィルコピー 11行目までのデータでしか検証していませんが 例として A13に =SUMIF($D$1:$D$11,MOD(ROW(),4),A$1:A$11) C列、15行目までそれぞれフィルコピー ($の位置に注意して下さい) 注) 対応する行を間違わないようにご注意下さい。
その他の回答 (9)
- imogasi
- ベストアンサー率27% (4737/17069)
私も配列数式でやる方法の、代表例なので、お勧めします。 しかしVBAにもぴったりのやさしい問題です。 Sub test01() t = 0 For i = 1 To 1215 Step 4 '4とび t = t + cell(i, "A") Next i Cells(1217, "A") = t 'A1217のセルへセット End Sub 類推によってA列がB列になる場合 Cells(i,”B”)や A2から始まる場合は、i=1のところをi=2とスタート行によって変えてください
お礼
ご回答ありがとうございます。 マクロ・・ですよね。覚えないといけないと思いつつもなかなか出来ないのですが、確かに等ピッチで 足していく、という作業はやさしい例なので教えて頂いた式を使って勉強してみます。
- mu2011
- ベストアンサー率38% (1910/4994)
以下の方法は以下がでしょうか。 ・A12017は、{=SUM(IF(MOD(ROW(A$1:A$12015),4)=1,A$1:A$12015))} ・A12018は、{=SUM(IF(MOD(ROW(A$1:A$12015),4)=2,A$1:A$12015))} ・横方向にコピーして下さい。 ※{}は、関数入力完了時、shift+crtl+enterすると付加されます。
お礼
ご回答ありがとうございます。 SUMとIFを使った方法ですか。MODとかあってぱっと見ではわからないのですが検証してみます。 ひょっとすると一番私にあっているやり方かもしれません・・・ (本当は関数の使い方やマクロを覚えないといけないのですが)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 それは、こういうことかな? A1+A5+A9.... =SUMPRODUCT((MOD(A$1:A$12015,4)=1)*A$1:A$12015) A2+A6+A10..... =SUMPRODUCT((MOD(A$1:A$12015,4)=2)*A$1:A$12015) 後は、必要に従って、フィルハンドルでドラッグ・コピーしてください。ただ、こういう計算は、ExcelのVersion が影響することがあります。Excel 2000を含むそれ以下の場合は、一旦、#5さんや#7さんの方法で検算したほうが無難のようです。後は、VBAのユーザー定義関数がありますが、多少、計算スピードがSUMPRODUCTと比較すると遅くなります。
お礼
ご回答ありがとうございます。 ご回答今見ました。今回はSUMIFで対応したのですが、SUMPRODUCTですか、簡単そうですね。 私はピッチサマリーみたいな関数がひょっとしてないかと思っていたのですが・・・。 =ピッチサマリー(開始行,足していくピッチ,終了行) こんな関数あったら便利ではないでしょうか?
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
A1:A12013の範囲のうち、 偶数行の和を求めるのは: =sumproduct(A1:A12013,row(A1:A12013)-even(row(A1:A12013))+1) 奇数行は上記のevenをoddに書き換えるだけ。 > 最後が何万何千何百何十何行になるかは > データによって異なっています。 そうなら、合計欄は表の最初に作るのが基本。所詮Excelでは 65000ちょいしか扱えないけど。
お礼
ご回答ありがとうございます。 ご回答今見ました。すでに回答いただいたSUMIFで今回は対応しました。 SUMPRODUCTという関数を使うのですね。同様のデータ整理はまだまだ続くのでまた試してみます。 >合計欄は表の最初に作るのが基本 そのとおりですね、形を変えてみます。
こんばんは(^^。 私もあんまりEXCEL詳しくはないんですが、私なら↓にします。 (1)一番左の列は、上から単純に1,2,3,4,・・・・ (2)隣の列に、=mod(すぐ左のセル、4) (3)合計は、=sumif((2)の列,"=0",合計したい列) 素人強引法(笑
お礼
ご回答ありがとうございました。 一行追加してSUMIFを使う方法でできました。
ちょっと式を間違いました SUM(A1:A12013) でした。 これは A1 から A12013 の間にあるセルの数値を合計します。 参考URLも参考にしてみてください。
お礼
ご回答ありがとうございました。 質問の最初に飛ばし飛ばしで足していく、って書いておいた方が良かったですね。
- HAL007
- ベストアンサー率29% (1751/5869)
質問のままで加工を加えないなら単純式を入れるしかありませんが 計算式の長さに制限があり大きなもの出来ません。 加工する方法としては、a列に1列挿入して 質問の12017行で計算対象となる行に例えば1を、12018は2とします。 後は計算するセルでDSUM関数を使えば出来ます。 >>また入力された数字の最後が何万何千何百何十何行になるかは Excelは65536行までしかありません。また、列は225列です。 この内3割も消費すれば重くて使いものになりません。 大量のデータを計算するならAccessを視野に入ることです。
お礼
ご回答ありがとうございます。 DSUM関数でもできると思いますが、今回は理解し易かったSUMIFを使う方法で対応しました。 (使い方は検索しましたが、簡単に理解できませんでして・・・) 確かにファイルは重いです。データを作るまでに作業をするシートもあるので70Mにもなっている ものもあります。
- mryokko
- ベストアンサー率20% (69/337)
あまりに基本的なことなので間違っていたらごめんなさい。 =sum(a1:a12017)で求められるはずですよ。その他も応用(というほどでもないけど)でできます。
お礼
ご回答ありがとうございました。 質問文に飛ばし飛ばし足していく、って一言入れておくべきでした。
ただ合計するだけなら SUM(A1:A12017) でどうでしょうか
お礼
ご回答ありがとうございました。 丁寧に式を書いていただきありがとうございました。教えていただいた方法でできました。