• 締切済み

【Excel】SUMIFSで期間内の条件について

任意の期間内のデータを抽出して合計する場合以下の数式とします。 =SUMIFS(E:E,A:A,">=2019/1/1",A:A,"<=2019/1/27",B:B,B2) 12月まであるのでコピーをしたいのですが、このような場合は手動で月日を入れ替えないとならないですよね?つまりコピペは不可か?ということです。 また、2019年は「うるう年」ではない年ですが、アバウトに2月29日までと入力した場合、正確な結果はでないのでしょうか? また31日がない月も同様でしょうか?

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

みんなの回答

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.8

月末は翌月1日-1 で求められますよ。 2020/2/29 = 2020/3/1 - 1

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

>次のセル(G4移行)から1ヶ月後になるようにすると指示している…のだと考えますが、 違います。 H3セルの数式ではG4セルを参照していません。 DATE関数はDATE($G$2,$G3,1)の部分だけです。 $G$2は絶対番地で2019という数値が入力されています。 $G3は列記号が絶体番地で行番号は相対番地で1という数値が入力されています。 DATE($G$2,$G3,1) → DATE(2019,1,1) → 2019/1/1 >「>=」(以上)は何についてどう指示しているのでしょうか? 「$A:$A,">="&DATE($G$2,$G3,1)」の「>=」はA列全体の中で日付の2019/1/1以上の日付に対してTRUEを返します。(数式全体の中で比較演算している) A列の日付で2019/1/1未満はFALSEが返されます。 SUMIFS関数では複数の条件に適う値を集計するので比較演算が理解できないと目的の結果を得られないでしょう。 また、他の関数でも数式内で比較演算することもありますので数式の先頭に書く「=」とは意味合いが異なります。 因みに、数式の先頭に書く「=」は「セル番地=数式」であり、数式バーの左外側にセル番地が表示されていますので、「そのセル番地の数式ですよ」という意味になります。

frau
質問者

お礼

比較演算ですね。またひとつ勉強になりました。 わかりやすい説明で理解が深まりました。ありがとうございました。

noname#255669
noname#255669
回答No.6

この質問者はかわいそうな人だったんですね。同じような質問を何度も繰り返して理解力がない、そんな人に「やればわかる」などと失礼な回答をしてしまいました。我慢強い回答者にしか相手ができない人でした。失礼失礼。

frau
質問者

お礼

あなたのように最初からすべて理解できるような賢い方からすれば「やればわかる」とすべての質問者に対し簡単に言えるのだと思いますね。羨ましい。 それに他の回答者様に「我慢強い回答者」というのは失礼ですよ。賢い上に親切なのです。誰かさんとは大違い。 質問の意味が理解できない上に回答の代わりに嫌味を言う時間がもったいない。 とスピノザも言うのではないですか(笑)

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

>とのことですが表示形式を"0年"、"0月"と設定しましたが、 >0"年" >0"月" >に変わってしまいますが…。 表示形式はそれで良いです。 >これもエラーと関係あるのでしょうか? 「#VALUE!」は文字列を数値と間違えて数式に与えたとき起こるエラーです。 G2セルに「2019年」と文字列で入力していませんか? G3~G14へ「1月、2月、・・・11月、12月」のように文字列で入力されていると思います。 セルの表示形式は数値の場合にどのように表示するかを定義します。 文字列の数字と数値は扱い方が異なりますので間違わないようにしてください。

frau
質問者

補足

もう一度調べてみました。文字列にはなってなかったのですが、すでに「2019年」と入力したものを後からユーザー定義に変えたのがいけなかったようで、すべて設定、入力しなおしたところ成功しました。 最後にこの式の関数の読み方について教えてください。 条件1 ">="&DATE($G$2,$G3,1) はDATE関数ですよね? 『DATE関数は、各セルにバラバラに収められた年・月・日の情報をドッキングして、1つのセルにまとめてくれる』とのことですが、この式のでは「日付」列を対象として、G2(年)とG3(月)を一緒に考え、次のセル(G4移行)から1ヶ月後になるようにすると指示している…のだと考えますが、「>=」(以上)は何についてどう指示しているのでしょうか?

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

回答No.3の数式に誤りがありましたので訂正します。 =SUMIFS($E:$E,$A:$A,">="&DATE($G$2,$G3,1),$A:$A,"<"&EOMONTH(DATE($G$2,$G3,1),0),$B:$B,H$2)       ↓ =SUMIFS($E:$E,$A:$A,">="&DATE($G$2,$G3,1),$A:$A,"<="&EOMONTH(DATE($G$2,$G3,1),0),$B:$B,H$2) EOMONTH関数の戻り値は月末なのでA列の日付との比較は未満ではなく以下になります。("<"は未満、"<="は以下)

frau
質問者

補足

ご回答ありがとうございます。 さすがmiso_kasuさんですね。作成された表のとおりが目的です。 ですが、H3に訂正された式を入れ、すべてをコピーしたのですが、数値は0、関数の条件1(">="&DATE($G$2,$G3,1))と2("<="&EOMONTH(DATE($G$2,$G3,1),0))が「VALUE!」となってしまいます。 >G2には2019という数値を入力し、表示形式を"0年"にしました。 >G3~G14に1~12と月数を数値で入力し、表示形式を"0月"にしました。 とのことですが表示形式を"0年"、"0月"と設定しましたが、 0"年" 0"月" に変わってしまいますが…。これもエラーと関係あるのでしょうか?

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

>任意の期間内のデータを抽出して合計する場合・・・・中略・・・・つまりコピペは不可か?ということです。 文字列で定数となる値はコピペで変化しませんので手作業で部分修正してください。 また、A列の比較は日付の範囲のようですから「">=2019/1/1"」は文字列の比較となっていますので再考が必要になります。 提示の数式ではB列に商品名等が入力されていると推測しますが比較値はB列の特定のセルではないようにしないと集計表として纏められません。 >また、2019年は「うるう年」ではない年ですが、アバウトに2月29日までと入力した場合、正確な結果はでないのでしょうか? 月初めから月末までを例に添付画像のような集計表を作成してみました。 H3セルの数式は下記のようになります。 =SUMIFS($E:$E,$A:$A,">="&DATE($G$2,$G3,1),$A:$A,"<"&EOMONTH(DATE($G$2,$G3,1),0),$B:$B,H$2) H3セルを右と下へ必要数コピペしました。 G2には2019という数値を入力し、表示形式を"0年"にしました。 G3~G14に1~12と月数を数値で入力し、表示形式を"0月"にしました。 目的に合った数表を作成して、数表に合せて数式を設定すれば省力化できます。

noname#255669
noname#255669
回答No.2

> 12月まであるのでコピーをしたいのですが、このような場合は手動で月日を入れ替えないとならないですよね?つまりコピペは不可か?ということです。 どこからどこへコピペするのか分からないのに不可とも可とも。 > また、2019年は「うるう年」ではない年ですが、アバウトに2月29日までと入力した場合、正確な結果はでないのでしょうか? やってみればサルでもわかる。スピノザはそう言わなかったか(笑)

  • f272
  • ベストアンサー率46% (8012/17124)
回答No.1

例えばF列に1,2,3,...,11,12と月数を入れておけば2月1日以上3月1日未満は =SUMIFS(E:E,A:A,">="&DATE(2019,F2,1),A:A,"<"&DATE(2019,F2+1,1),B:B,B2)

frau
質問者

補足

ご回答ありがとうございます。 F列はすでに他の項目が入ってしまっているし、見栄えのこともあるので、できれば表に関係ない項目を作りたくありません。 EOMONTH関数というのがあって、SUMIFSと組み合わせできるそうで、今調べてますがなかなか難しいです。

関連するQ&A

  • エクセル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でうまくいかなかったことが気になるので、ご教授願います。

  • 【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 しかしこれは合計結果がひとつづつの場合ですが、この添付画像のような複数の項目の、複数の条件の場合、同式の内容のみコピーさせるにはどうしたらいいのか困っております。

  • エクセル2010のSUMIFS関数について

    A列に日付、C列に文字列、E列に数値があります。 仮に、日付は2013年4月だけ、文字列は”事務” だけに条件を絞ってE列の数値を合計する場合、エクセル2000では =SUMPRODUCT((C$1:C$1000="事務")*(TEXT(A$1:A$1000,"yyyymm")="201304")*E$1:E$1000) でうまくいきました。 こんどエクセルが2010になったので、あたらしくできたSUMIFS関数でやってみようと思い =SUMIFS(E:E,C:C, ”事務”,TEXT(A:A,"yyyymm"),”201304”) としましたが「数式が正しくありません」とエラーになってしまいます。 SUMIFS関数だと列のセル範囲を指定しなくていいので使いたいのですが・・・。 F列を作業列とし、ここにA列の日付をyyyymm形式の文字列とすれば =SUMIFS(E:E,C:C,"事務 ",F:F,"201304") で出来ますが、ほかにいい方法はないでしょうか?

  • 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

  • 二つの条件の場合 SUMIFS? 関数

    エクセル2010です。 可否 クラス名 数 ○ A組 20 × A組 10 ○ B組 20 ○ A組 30 というリストがある場合、 「A組の件数」は、 =SUMIF(B2:C5,"A組",C2:C5) で取得できますが、 「可否が○のA組の件数」は、どのような数式を使えばいいのですか? 二つの条件の場合、 SUMIFSを使うのかな?と思ったのですが うまくできませんでした。 ○ A組 20 ○ A組 30 が、該当するので、50が返ってきてほしいです。

  • 【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の回答がそのままコピーされてしまいます。 何が原因なのでしょうか?

  • SUMIFS関数でOR条件を使いたい場合の関数

    Excel2010を使用しています。 家計簿を作成しているのですが、SUMIFS関数でOR条件を使用したい場合どのように書けばよいでしょうか。 図は、明細と合計欄です。 ピンクのセルが円、それ以外はドルです。 合計欄のように、円とドルをそれぞれ分けて項目毎の合計額を出したいです。 セルE21のように、円の場合は「MUFJ」「ゆうちょ」ですので、MUFJとゆうちょのSUMIFS関数合計値を足しています。 これを、1行にまとめたいのですが、適切な関数はないでしょうか? SUMIFSではOR条件が使えないようですので・・・・・・ 明細行に円・ドルの列を追加すれば簡単なのですが、明細行の列はこれ以上増やしたくないので、できれば数式のほうで処理できればと思っています。 よろしくお願いいたします。

  • excel2007 条件付き書式について

    excel2007の条件付き書式について教えてください。 C列に、プルダウンで、「要、不要、その他」を選択出来るようにしました。 もし、不要かその他を選んだ場合、該当の行(正確にはA~Eまで)を灰色に 塗りたいのですが、うまくいかず困っています。 条件付き書式>新しいルール>数式を使用して~で、 次の数式を満たす場合に~に、「=$C:$C="不要"」としてみましたが、 うまくいきません。 「=$C$2="不要"」と書けばうまくいくようですが、コピペするとその下も =$C$2="不要"になってしまいます(=$C$3="不要"にしたい) アドバイスいただけないでしょうか。

  • 【EXCEL】複数条件(+期間内)の合計値

    お世話になります。 EXCELで、「特定のジャンル」の「特定の期間」の「売上」の合計値を算出したい場合の、関数式を教えていただけますでしょうか。 例として、 A列に「ジャンル(ゲーム・マンガ・プラモデル)」のいずれか。 B列に「発売日(2020年1月1日~12月31日)」 C列に「そのタイトルの売上」 (その他の列にタイトルなどありますが) があったとして、D列のセルに「ゲーム」の「2020年1月1日~6月30日の間」の「総売上」を表示したい場合、どのように式を付くれば良いでしょうか。 期間計は「SUMIFS」で計算できるのは確認したのですが、そこに「ジャンル」を入れた場合が分かりません。 何卒ご教示のほど、お願いいたします。

  • Excel2007のSUMIFS関数の[条件1]の部分を日付順に変更したい

    Excel2007のSUMIFS関数に関するご質問です。 (状況)     A     B     C     D      E      F・・・          請求    払い   立替費   他社払い  ・・・・ 1  21日   ここのセル 2  22日 3  23日  4  24日  5  25日 6  26日 ・  ・ ・  ・ 【ここのセル】と書いてあるセル(1B)は、同じExcelの別シート(例で今月の依頼というシートにします)からデータを引っ張ってきており、各取引先(複数)の日々の売上が入力されたシートです。(例であいうえお会社とします) 【ここのセル】と書いている所の数式は、 =SUMIFS('今月の依頼'!W:W,'今月の依頼'!C:C,"21日",'今月の依頼'!F:F,"あいうえお会社",'今月の依頼'!G:G,"") という数式となっています。 上記のSUMIFS関数自体は、出来上がれば問題はありません。 現在、各項目ごとに 関数自体を縦にコピーし、全体をつくっています。 問題は、縦が日付の為、 "21日" の条件の部分を変更しないといけなくて、21日・22日・23日・・・とその部分だけ消し、手打ちをしており、非常に打ち込みに時間がかかるという状況に陥っている事です。 ちなみに日付は21日~次月20日までの順に日にちだけで並べてあります。 日付ですので、多い時で31日あり、コピーやフィルで条件のところだけを変更したいのですが、変更できず、仕方なく条件の部分だけを手打ちして表を完成させている状況です。 請求などの横の項目もたくさんあり、1つの会社の分を作るのに、40分程かかり、効率の悪さを感じています。 手打ちをすれば解決される問題ではありますが、効率よく条件だけを変更できる方法がありましたら、どうか教えていただけると助かります。 また表自体をSUMIFS関数で作っているのが問題、 他の関数なら似たようなことができる、 というような知識をお持ちの方がいらっしゃいましたら、 教えていただけたら非常にありがたく思います。 知識不足、勉強不足で非常に恐縮ですが、ご回答の程、どうぞ宜しくお願い致します。

専門家に質問してみよう