- ベストアンサー
一行おきの集計
エクセルで集計表を作成したいのですが、 一行おきに数量と金額が入った集計表が必要です。 が一行おきの集計の計算式の入れ方を教えて下さい。 ひとつひとつのセルを足していく方法でしたら出来るのですが、 レコードが多いので、簡単にできる方法を教えて下さい。 数量、金額というような項目名(キー)となるレコードはありません。 よろしく御願いします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
ANo.#8は、ANo.#7の補足について解釈を間違えていますので破棄します。 ANo.#7の(1)、(2)の式はいずれも複写可能のはずです。手順としては、 配列数式として登録した後、そのセルをコピーして他セルに貼り付ける順序になります。 コピーは問題なくできると思っているので、ANo.#7の補足について考える時、眼中にありませんでした。 ANo.#9の補足に関して実行すれば、 C5: =SUM(IF(MOD(ROW(C1:C4),2)=MOD(ROW(C1),2),C1:C4,0)) を入力。Ctrl+Shift+Enterで登録。 ↓ C5をコピー ↓ D5に貼り付け(D5:E5に貼り付けでもいい) で、D5には =SUM(IF(MOD(ROW(D1:D4),2)=MOD(ROW(D1),2),D1:D4,0)) と登録され、正しい答えがでます。(私のPCでは出ました) 一旦、配列数式として正しく登録されれば、通常の算式と同様な扱いでコピーできます。 配列数式として正しく入力できれば、数式の窓で、算式が { }に囲まれています。 ANo.#7の式で、配列数式として登録した後、普通にコピー&ペーストを行ってみてください。
その他の回答 (9)
- nishi6
- ベストアンサー率67% (869/1280)
>上下別々の集計が複数列あるということです。 ますます、どのようなセルの状態を集計するのか分からなくなりました。 表の行・列の関係を視覚的に(とか)補足してもらえますか。理解できれば問題ないと思いますが・・・
補足
最初にいただいた回答で一応できるのですが、 先ほどの例で言いますと、C列だけしか計算していないので、 C列はそのままにしておいて、D列、E列、F列‥‥と順番に同じことを しようと試みると、C列で入力した式をコピーするだけでは自動的にD、E、F‥‥とならないのです。 C列 D列 E列 1行 2 3 4 2行 1 2 5 3行 3 2 2 4行 1 1 1 奇行 5 5 6 偶行 2 3 6 仮に1行C列から4行E列までを奇数行、偶数行と分けて集計するならば、 C列の奇数行、偶数行に教えていただきました、式を入力しますとC列は もちろんできます。この例だと奇数行が5、偶就業が2という結果が 得られます。では今度はD列の奇数行、偶数行、つまりこの例では5、3 という結果を得ようとすると、D列にも教えていただきました式を入力 すれば結果はもちろん得られます。ただこの例のようにC、D、E列と 3列しかなければそれぞれの列に計算式を入れればすみますが、3列だけではなく数十列もあったとするなら、計算式を入れていくのはかなり骨が折れます。これを簡単にする方法があれば教えていただきたいのです。 どうかよろしくお願いします。
- nishi6
- ベストアンサー率67% (869/1280)
複数列を対象にしてみました。 連続する列(C、D、E列)を1行おきに集計します。C3:C12→C3:E12に変わります。 =SUM(IF(MOD(ROW(C3:C12),2)=MOD(ROW(C3),2),C3:E12,0)) 離れた列(C、E、G列)を1行おきに集計します。C3:C12→C3:C12+E3:E12+G3:G12に変わります。 =SUM(IF(MOD(ROW(C3:C12),2)=MOD(ROW(C3),2),C3:C12+E3:E12+G3:G12,0)) >複数列ある場合・・・ はこういう意味だったでしょうか。
補足
ごめんなさい。質問が悪かったです。 上下別々の集計が複数列あるということです。 通常の集計でしたら、横のフィールドにコピーするだけですむのですが、 この場合はコピーが出来ませんでした。 ひとつひとつ入力する必要があるのですか?
- nishi6
- ベストアンサー率67% (869/1280)
意味が分かりました。行挿入しても変わらないようにするには、 (1)上下毎に先頭行を変えて算式を作った場合 上 =SUM(IF(MOD(ROW(C3:C12),2)=MOD(ROW(C3),2),C3:C12,0)) 下 =SUM(IF(MOD(ROW(C4:C13),2)=MOD(ROW(C4),2),C4:C13,0)) のようにして判定します。 (2)上下とも同じ範囲を使って算式を作った場合 上 =SUM(IF(MOD(ROW(C3:C12),2)=MOD(ROW(C3),2),C3:C12,0)) 下 =SUM(IF(MOD(ROW(C3:C12),2)=MOD(ROW(C3)-1,2),C3:C12,0)) のようにして判定します。配列数式です。 grumpy_the_dwarfさんの回答のSUMPRODUCT・・・はきれいな答ですね。
補足
上下段とも集計出来ました。有り難うございました。 しかしながら、列が1つではないのでコピーをしようと思いましたら、 出来ませんでした。 すみませんが、最後にもう1つ複数列ある場合の方法を教えて下さい。
- imogasi
- ベストアンサー率27% (4737/17069)
こんな方法は非実用的でしょうか。 A列にデータが入っているとして、使わない列をR列として、第1行に「1」を、第2行目に「0」を入力し、第1行と第2行を範囲指定してコピーし、下へ必要行数複写します。 その隣の使わない列Sの第1行に「=A1*R1」の式を入れ、第2行目以下に式の複写をします。そして 例えば99、100行目が最下行として、99行目に =Sum(T1:T99)を入れます。 無駄な列を使うのが欠点ですが、わかりやすいのでは。
- nishi6
- ベストアンサー率67% (869/1280)
>ただ集計セルの上にレコードを追加すると、 >集計結果が変わらない方法があれば教えていただけませんか? すいません。意味がわかりません。 回答した算式(=SUM(・・・・))を書いたセルに上書きするような場合?ですか? 再計算をさせない意味でしょうか?
補足
>ただ集計セルの上にレコードを追加すると、 >集計結果が変わらない方法があれば教えていただけませんか? たとえば3行目から集計をするとすれば、 奇数から集計が始まりますが、 3行目より上の行にレコードを挿入すると、 4行目から集計することになるので、偶数になってしまうのが、問題なのです。 分かり難くてすみませんでした。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
更に別解です。A1:A14の範囲を集計する場合ですが、 奇数行: =SUMPRODUCT(A1:A14,ROW(A1:A14)-ODD(ROW(A1:A14))+1) 偶数行: =SUMPRODUCT(A1:A14,ROW(A1:A14)-EVEN(ROW(A1:A14))+1) 奇数(ODD)と偶数(EVEN)が数式の中に素直に出てくるよう工夫してみました。
- nishi6
- ベストアンサー率67% (869/1280)
範囲C3:C12を集計する例です。(先頭行は奇数の『3』です。) 集計したいセルに =SUM(IF(MOD(ROW(C3:C12),2)=1,C3:C12,0)) として、Ctrl+Shift+Enter で登録します。配列数式です。 MOD(ROW(C3:C12),2)=1 で奇数行だけを集計しています。 上の例で偶数行目を集計するには =SUM(IF(MOD(ROW(C3:C12),2)=0,C3:C12,0)) として、Ctrl+Shift+Enter で登録します。 実際の集計範囲に修正してみて下さい。
お礼
早速のお返事有り難うございます。 お蔭様で上手く行きました、 ただ集計セルの上にレコードを追加すると、 集計結果が変わらない方法があれば教えていただけませんか?
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 確実な方法ではないですが。 数量と金額が明らかに数値の大きさが違う場合(例えば、金額は最低1000で、数量は最大でも1000未満)に限りますが、合計をSUMIF関数で出すことが出来ます。 例えば、A1~A100までに数量と金額が1行おきに入力されているとして、上記のように金額が1000以上、数量が1000未満だとします。 合計金額を出すセルに、 =SUMIF(A1:A100, ">=1000") となります。 では。
- kiyoto
- ベストアンサー率31% (63/197)
これでよいでしょうか?
お礼
もう一度試してみます。 いろいろと有り難うございました。