【Excel】SUMIFSのコピーが連番になる

このQ&Aのポイント
  • ExcelのSUMIFS関数を使用して複数の条件で集計する場合、セルをコピーすると連番になってしまいます。この問題を解決する方法について説明します。
  • 条件が一つの場合はSUMIF関数を使用しますが、複数の条件の場合はSUMIFS関数を使用します。しかし、SUMIFS関数をコピーするとセルが連番になるため、正しい結果が得られません。
  • 解決策としては、SUMIFS関数をコピーする際に参照するセルの範囲を絶対参照($)にすることです。これにより、コピーしても参照元のセルが変化せず、正しい結果が得られます。
回答を見る
  • ベストアンサー

【Excel】SUMIFSのコピーが連番になる

条件が複数の場合の関数のSUMIFSについて、作り方は一応わかったのですが、コピーするとどうしてもセルが連番になってしまいます。 条件が一つの場合はSUMIFを使います。 たとえば添付画像の「種目」別の合計をだしたい場合、 =SUMIF(B:B,G6,D:D) という式になりますが、これを複数の条件とする場合にはSUMIFSを使うようですが、各「年」ごと、各「種目」の合計をさらに「店舗」ごと個別計算し、その結果を表2に示す場合、 =SUMIFS(D2:D596,A2:A596,H2,B2:B596,G5,E2:E596,H3) という式でよいかと思いますが、これを「種目」すべてにコピーすると、上の式のセルがすべて連番になってしまうのです。 たとえば =SUMIFS(D3:D597,A3:A597,H3,B3:B597,G6,E3:E597,H4) このようにです。 冒頭に述べた =SUMIF(B:B,G6,D:D) の場合、たとえば下のセルにコピーすると =SUMIF(B:B,G7,D:D) というようにG列だけ変化します。 連番になってしまうと、参照元がまったく別のものになってしまいます。 「合計対象範囲」「条件範囲」はセルの範囲を指定するという説明です。 https://www.becoolusers.com/excel/sumifs.html しかしこれは合計結果がひとつづつの場合ですが、この添付画像のような複数の項目の、複数の条件の場合、同式の内容のみコピーさせるにはどうしたらいいのか困っております。

  • frau
  • お礼率54% (2370/4367)

質問者が選んだベストアンサー

  • ベストアンサー
  • miso_kasu
  • ベストアンサー率60% (6/10)
回答No.2

>同式の内容のみコピーさせるにはどうしたらいいのか困っております。 条件が単独か複数かの問題でなく数式を他のセルへコピーするときの問題です。 セルの番地は列記号(A、B、C等)と行番号(1、2、3等)の組み合わせになっています。 セルの番地を絶対番地で指定する場合は記号の前に$記号を付けます。 提示された数式ではセルの番地が相対番地なので数式を他のセルへコピーするとコピー先のセルの番地に合せた番地に置き換えられます。 H5の数式は下記に示す数式にすれば良いでしょう。 =SUMIFS($D$2:$D$596,$A$2:$A$596,$H$2,$B$2:$B$596,$G5,$E$2:$E$596,H$3) A列の比較値($H$2)は数式をどこのセルへコピーしても変化しないようにします。 B列の比較値($G5)は下へコピーすると行番号が相対的に変化し、右へコピーしたときは列記号($G)は絶対番地なので変化しません。 E列の比較値(H$3)は下へコピーしたとき行番号($3)は絶対番地なので変化しませんが右へコピーしたときは列記号(H)は相対的に変化します。 H5をH6へコピーしたとき =SUMIFS($D$2:$D$596,$A$2:$A$596,$H$2,$B$2:$B$596,$G6,$E$2:$E$596,H$3) H5をJ5へコピーしたとき =SUMIFS($D$2:$D$596,$A$2:$A$596,$H$2,$B$2:$B$596,$G5,$E$2:$E$596,J$3)

frau
質問者

補足

詳しいご回答ありがとうございます。 ($G)は列の絶対値で、($G5)のような場合には、行(5)は相対値 ($3)は行の絶対値で、(H$3)のような場合には、列(H)は相対値 ($H$2)は行と列(ひとつのセル)が絶対値(相対値なし) ということで理解しました。 まだ不明なのが、 =SUMIF(B:B,G6,D:D) の場合です。この式が入っているのがA1セルとしたら、A2セルに式をコピーした場合 =SUMIF(B:B,G7,D:D) となるわけですが、「B:B」と「D:D」には絶対値の記号「$」がつけられてません。 「B:B」はB列全部という意味だと思いますが、列全部という意味の式にすればそれが絶対値の場合でも「$」マークは不要なのでしょうか?

その他の回答 (4)

  • miso_kasu
  • ベストアンサー率60% (6/10)
回答No.5

>すみません。H1はH5の誤りでした。 「H5の数式 =SUMIF(B:B,G5,D:D) を H6へコピーすると =SUMIF(B:B,G6,D:D) になります。」 再確認してください。 「H5の数式 =SUMIF(B:B,G5,D:D) を J5へコピーすると =SUMIF(D:D,I5,F:F) に変化します。」 これも再確認してください。 結果が「=SUMIF(E:E,J5,G:G) となりました。」と言うことですがそれは変ですね。 相対番地がどのようなものかを基本的に覚えないと数式のコピーで失敗します。 H5セルの数式「 =SUMIF(B:B,G5,D:D) 」はB列がG5と同じ行のD列の値を合計することです。 H5セルから見ればB列は「左へ6列離れた位置」でG5セルは「左隣りのセル」です。また、D列は「左へ4列離れた位置」です。 H5セルの数式をJ5セルへコピーすると「G5」がJ5の左隣りのI5に、「B:B」がJ5の左へ6列離れたD:Dに、「D:D」がJ5の左へ4列離れたF:Fに変化するはずです。 これらのことを再確認できればセルの相対番地と絶対番地の使い分けが分かるようになるでしょう。

frau
質問者

お礼

再度試してみたところ、ご回答のとおりになりました。 まとめますと H5を起点➡=SUMIF(B:B,G5,D:D) ・H5から見れば➡B列は「左へ6列離れた位置」 ・H5から見れば➡D列は「左へ4列離れた位置」 ・H5から見れば➡G5は「左隣りのセル」 H5にある数式「=SUMIF(B:B,G5,D:D)」をJ5セルへコピーすると変わる式「=SUMIF(D:D,I5,F:F)」について ・J5から見れば➡「B:B」がJ5の左へ6列離れた「D:D」に変化 ・J5から見れば➡「D:D」がJ5の左へ4列離れた「F:F」に変化 ・G5から見れば➡「J5」の左隣りの「I5」に変化 H5の式をJ列にコピーした場合、コピー先ではH5と相対する各列の距離の分の列が変化する(相対参照)ということですね。

frau
質問者

補足

この関数が入ったシートをコピーして使ったところ、コピー先では数式が機能しません。 考えられる原因がありましたら教えてください。

  • miso_kasu
  • ベストアンサー率60% (6/10)
回答No.4

>「H1セルの数式をH2セルへコピーしたときH2セルから見ると隣のB列全体なのでH1セルから見たときと同じのため変化しません。」 H1セルをH5セルに置き替えないと質問に添付の画像と合いません。 また、B列はH列から見ると隣ではないので用語が誤りになります。 >全体を表す「B:B」という表記は相対的になるということでよいでしょうか? B:BはB列全体を指しますが相対番地の列記号です。 $B:$Bとすれば絶対番地の列記号になります。 >「H1セルをC1セルへコピー」してみましたが、「=SUMIF(#REF!,B1,#REF!)」となりました。 H5の数式 =SUMIF(B:B,G5,D:D) を H6へコピーすると =SUMIF(B:B,G6,D:D) になります。 H5の数式 =SUMIF(B:B,G5,D:D) を J5へコピーすると =SUMIF(D:D,I5,F:F) に変化します。(目的に合いません) H5の数式をC5へコピーするとB:BがA:Aより左側へ変化させようとしてもセル範囲が指定できなくなりエラーになります。 C列には商品名が入力されていますので数式のコピー先としては不適当のようです。

frau
質問者

補足

すみません。H1はH5の誤りでした。 回答3の >A1セルの数式をA2セルへコピーしたときA2セルから見ると隣のB列全体なのでA1セルから見たときと同じのため変化しません。 という回答のA列をH列に替えるとき、「隣のB列」はI列、「A1」は「H5」となりますが、確かにH5の数式  =SUMIF(B:B,G5,D:D) をH6へコピーすると  =SUMIF(B:B,G6,D:D) となり、「B:B」は相対番地となる。 つまりH5セルの数式をH6セルへコピーしたときH6セルから見ると隣のB列全体なのでH1セルから見たときと同じのため変化しないということがわかりました。 回答3 >D列に対してもA列から見ていますので相対番地でも列記号は変化しません。 (セル替えしてA列をH列に替えD列の位置に該当する)K列にコピペしたところ =SUMIF(E:E,J5,G:G) となりました。 (コピペだからK5のはずが)J5になるのはK列が隣接するのがJ列だから。 つまりこれが「相対」という意味なのだと思いますが、 回答3の >D列に対してもA列から見ていますので相対番地でも列記号は変化しません。 (セル替えしたとき「K列に対してもH列から見ていますので相対番地でも列記号は変化しない」) に該当しません。 =SUMIF(B:B,G5,D:D)  のB:BがなぜE:Eに、D:DがG:Gに、K5列にコピーしたはずがJ5に変化(目的に会わない)しているのでしょう? >C5へコピーするとB:BがA:Aより左側へ変化させようとしても についても関連すると思いますが、なぜ変化となるのでしょうか?

  • miso_kasu
  • ベストアンサー率60% (6/10)
回答No.3

>「B:B」はB列全部という意味だと思いますが、列全部という意味の式にすればそれが絶対値の場合でも「$」マークは不要なのでしょうか? 「B:B」は相対番地ですがA1セルの数式をA2セルへコピーしたときA2セルから見ると隣のB列全体なのでA1セルから見たときと同じのため変化しません。 D列に対してもA列から見ていますので相対番地でも列記号は変化しません。 A1セルをC1セルへコピーしてみると変化する様子が分かるでしょう。

frau
質問者

補足

質問の仕方が間違ってましたので回答がわかりにくくなってしまいました。 >この式が入っているのがA1セル この表の場合、A1セルは、参照される対象を指定するところ(B列内の項目)ですので、ここに式を入れることはできません。 よって式が入るところはH1とし、参照対象(たとえばこの質問の表のアボカド)をG1に改めます。 >A1セルの数式…のくだりについては 「H1セルの数式をH2セルへコピーしたときH2セルから見ると隣のB列全体なのでH1セルから見たときと同じのため変化しません。」 となりますが、これでもやはり全体を表す「B:B」という表記は相対的になるということでよいでしょうか? > D列に対してもA列から見ていますので相対番地でも列記号は変化しません。 これも同様 「 D列に対してもH列から見ていますので相対番地でも列記号は変化しません。」 ということに代わりますが、これもH全体をみるので相対的となる、という理解で宜しいでしょうか? ただ > A1セルをC1セルへコピーしてみると変化する様子が分かるでしょう。 について「H1セルをC1セルへコピー」してみましたが、「=SUMIF(#REF!,B1,#REF!)」となりました。「変化」というのはエラーのことでしょうか?(#REFの意味もわかりかねますが) そもそもExcel関数において絶対と相対がわかりません。 ご回答の「相対番地」というのは、参照される側ということで、「絶対番地」というのは指令された結果がだされる場所という意味でよいでしょうか?

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.1

参照元を一定にしたい場合は D2:D596 を $D$2:$D$596 のようにします。 D2やD569など一定にしたい参照元を選択した状態で F4キーを押すと自動で$が付きます。

frau
質問者

お礼

それぞれの費目に対する算出場所が違い、それによって A列の比較値➡($H$2) B列の比較値➡($G5) というように、$のつけ方も違ってくるわけですので、 >$D$2:$D$596のようにします。 という回答のみではできませんでした。

関連するQ&A

  • 【Excel】SUMIFSの式を絶対値にするには

    添付した画像のセルB2には以下のとおりのSUMIFSの式が入っているとします。 =SUMIFS(E:E,B:B,Q2,C:C,Q3,G:G,R2) セルC2にこの式をコピーしたいのですが、 =SUMIFS(F:F,C:C,R2,D:D,R3,H:H,S2) このようになり、合計対象範囲から条件まで、すべてズレてしまいます。 逆にB2の下のセルB3にB2の式をコピーすると条件それぞれの位置がこのように =SUMIFS(E:E,B:B,Q3,C:C,Q4,G:G,R3) ズレます。 表マトリクスの数値の合計をだすために、どの位置にセルB2の式をコピーしても正確な結果がでるようにセルB2を絶対値としたいのです。セルB2に入れる正確な式を教えてください。 また式だけではなく絶対値となる理由もご説明していただけると幸いです。

  • 【Excel】複数条件のAVERAGE

    ある特定したいくつかの要素の合計を、セル「I5」にだすとします。 たとえば表2のH2の「年」、同表のH3の「店舗」、同表のG5以下の「種目」からそれぞれ具体的な条件を、たとえば表1のA列より「2016年」、同表のE列より「店舗(1)」、同表のB列より「アスパラガス」を探し出すようにする場合関数式は以下のような式となりますが、 =SUMIFS($D$2:$D$596,$A$2:$A$596,$H$2,$B$2:$B$596,$G5,$E$2:$E$596,H$3) これを合計ではなく平均値で出す場合、「SUMIFS」のみ「AVERAGE」に入れ替え =AVERAGE($D$2:$D$596,$A$2:$A$596,$H$2,$B$2:$B$596,$G5,$E$2:$E$596,H$3) という式を「I5]に入れると確かに平均値はあっていたのですが、この式をコピー(セルのコピー)しても、正常に反映されず、I5の回答がそのままコピーされてしまいます。 何が原因なのでしょうか?

  • エクセル2007のcountifs,sumifsについて

    以前は複数条件を設定する場合にはsumproductを使っていましたが 使い慣れたcountif,sumifに複数の条件が設定できると知り、 計算式を作ってみましたがうまくいきません。 期間内の数値の入力されているセルの個数を求めたくて 次のような式にしてみました。 D1は2009/10/1 D2は2009/11/1 p6:p331は金額 B6:B331は日付 =COUNTIFS(P6:P331,">=1",B6:B331,"and(>=D1,<=D2") 実際には30程該当するセルがあるのに0と表示されます。日付の 部分がおかしいのだとは思いますがどのように入力したらいいのでしょうか。 それと、金額の入力してあるセルを指定するのに >=1としていますが これも他に数値を表す関数とかありますでしょうか。 同じようにSUMIFSも0になってしまいます。

  • エクセル2007 SUMIFS

    SUMIFS関数を使用して複数条件の集計をしたいと思ったのですが、 うまくいかず、SUMPRODCT関数で対応しました。 SUMIFS関数について質問ですが、 SUMIFS関数の合計範囲は1列と決まっているのでしょうか? また、合計範囲・条件範囲は同じ行でなければならないのでしょうか? そのように変更するとうまくいきます・・・ うまくいかなかった状況は下記のとおりです。 表1  A   B   C   D   E 1   4月  4月  4月  4月 2東京  5   2   4   1  3東京  1   8   3   2 4神奈川 7   0   3   9 5千葉  8   5   4   2 6千葉  2   1   1   1 7埼玉  4   8   5   2 表2   A    B   10    4月 11東京  26 12神奈川 19 13千葉  24 14埼玉  19 表2のB11に『SUMIFS(B2:D7,A2:A7,A11,B1:E1,B10)』 (絶対参照を省いてい書いています) 仕事上は解決しましたが、SUMIFSでうまくいかなかったことが気になるので、ご教授願います。

  • sumifs関数について

    sumifsで合計を出したいのですが、集計されるセルとしないセルがあり困っています。    A    B    C    D   社名  役職  氏名  vlookupで引っ張ってきた値 1  a 役員   A        2  b    社員   B     3  c    社員   C D列にはそれぞれvlookupでひっぱてきた値が入っているます。 計 10  a   役員   =sumifs(D列,A列,A10,B列,B10) 大雑把な書き方で恐縮ですが、上記の計のように各社の役員、社員でD列の合計をそれぞれ出していきたいのですが、エラー表示ではなく 0 と集計結果で出ます。 きちんと集計結果が出ているセルと出ていないセルとで書式なども確認したのですが、相違点が見当たらず修正に行き詰りました。 どなたか、原因がわかる方がいましたらご教示下さい。 宜しくお願い致します。

  • SUMIFS関数について

    宜しくお願いいたします 先にSUMIFの件で質問して=SUMIFS関数で出来るとの回答を頂き よく確かめずに出来たつもりで質問を締め切りましたが(反省)何としても出来ませんが どこか間違いが有るでしょうか =SUMIFS(B:B,A:A,"本",A:A,"えんぴつ")の式で0と表示されてしまう A  B 本  500 えんぴつ  200 ペン  100 本  500 まんが  300 ペン  100 えんぴつ  50

  • エクセルで縦列を横列にコピーしたい

    エクセルで縦列のデータを横列にコピーしていきたいのです。例えばA40のセルに「=G3」と入力し横にコピーしていくとB40には「H3」、C40には「I3」、D40には「J3」・・・・となります。そうではなく、B40には「G4」、C40には「G5」、D40には「G6」・・・・の値が入るようにしたいのです。この場合A40のセルにどのような式を入力してコピーしていけばいいのでしょうか。(複数列あり「形式を選択して貼り付け-行列を入れ替える」では上手くできません。)

  • エクセルSUMIFS関数で教えてください。

    エクセルのSUMIFS関数について教えてください A1セルに1月~A12セルまでに12月と入力しています。 B1~B12に売り上げの合計を入力しています。 例えば3月、7月、 8月の合計を出したいときにはどうすればいいですか? 例えばA~F列の行を複数範囲で検索することは出来るのですが 下方向A1~A10までの複数範囲をしたいのですができません。 すいませんが至急教えてください。 よろしくお願い致します・

  • SUMIFS関数について

    スプレッドシートでSUMIFS関数を使って別のタブにある表から条件に合う合計を集計しております。一つのシートではSUMIFS関数使って正しい数値を反映することができました。ところが同じ様式のシートをコピーしたものに同じ数式を入力したところ値が0になってしまいました。 数式が合っているのに数値が反映されない場合の原因が分かりましたらご教示いただけますと幸いです。

  • SUMIFS関数の質問

    エクセルで A列のあたいがE1セルに一致し、B列の値が文字列"00"でないC列の数値を合計したい場合、 これまでエクセル2003の時は =SUMPRODUCT((A2:A15=E1)*(B2:B15<>"00")*C2:C15) のように書いてきました。 これをエクセル2010で、SUMIFS関数にしようと思い =SUMIFS(C:C,A:A,E1,B:B,<>"00") としてみました。 ところが、テストでわずか14行でやってみると答えが違うのです。 わたしのSUMIFS関数の理解があやまっているのでしょうか? 教えてください。 テストに使った2行目から15行はこんな感じです。E1セルには文字列 A があり、 =SUMPRODUCT((A2:A15=E1)*(B2:B15<>"00")*C2:C15)  は27を =SUMIFS(C:C,A:A,E1,B:B,"<>00")  は28を返します。 A 00 1 A 01 2 A 02 3 A 03 4 A 04 5 A 05 6 A 06 7 B 07 8 B 08 9 B 09 10 B 10 11 C 11 12 D 12 13 D 13 14

専門家に質問してみよう