プロが教えるわが家の防犯対策術!

A列に年月日、B列に数字を入れています(B列は空欄の時もあります)。
C列にその月のB列に数字が入っている個数(5~10行まで数字が入っている場合は6と表示させたい)、D列にその月の合計数(5~10行まで順に1,2,3,4,5,6と入力した場合は21と表示させたい)を自動表示させる方法を教えてください。
countif関数でできるのかなと思ったのですが、詳細が分かりかねています。

どうぞよろしくお願いします。

質問者からの補足コメント

  • みなさま、たくさんのご回答ありがとうございます。

    すみません、画像があった方が分かりやすいですよね、申し訳なかったです。
    話が2点3点して申し訳ないのですが、画像のようにsheet1に日付・労働時間を入れているので、sheet2のB列にその月の出勤日数、C列に合計労働時間を自動表示できればと思っているのです。
    今回の例は2016年の10月の分ですが、それ以降もsheet2には月毎の出勤日数・労働時間を自動表示できればと思っています。

    パート勤務で扶養内で働いているのですが、誰も年間の労働時間とかは管理してくれないので、自分でエクセルで管理していけたらなと思っています。

    引き続きご回答いただけるとうれしいです。
    どうぞよろしくお願いします。

    「エクセルで月毎の日数をカウントして自動表」の補足画像1
      補足日時:2017/02/09 11:32

A 回答 (10件)

何度もごめんなさい。



前回の投稿で数式を入れるセルが間違っていました。
すでにお判りだと思いますが、
A2 → B2
B2 → C2
の間違いです。

どうも失礼しました。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます!
今まで自分で計算していたものが自動で表示されるようになって、とてもうれしいです。
色々ややこしい事を言いましたのに、丁寧に分かりやすく対応してくださって本当に感謝です!
本当にありがとうございました。

お礼日時:2017/02/10 11:22

続けてお邪魔します。



>区切りを2016/10/21~2016/11/20のように20日締めにすることも可能でしょうか?

というコトですが、仮に前回の配置だと
2行目の「2016/10」 の行は 2016/10/21~2016/11/20 までと解釈してもよいのでしょうか?
(10月分となると、9/21~10/20 の間になるような気がするのですが・・・)
尚、前回の数式はB列が空白の場合も「出勤日数」に加えられてしまうと思うので少し変えます。

10月分が 10/21~11/20 までとする場合は前回の配置の場合A2セルに
=IF(A2="","",COUNTIFS(Sheet1!A:A,">="&A2+20,Sheet1!A:A,"<="&EDATE(A2,1)+19,Sheet1!B:B,"<>"))

B2セルに
=IF(A2="","",SUMIFS(Sheet1!B:B,Sheet1!A:A,">="&A2+20,Sheet1!A:A,"<="&EDATE(A2,1)+19))

としてみてください。

※ 余計なお世話かもしれませんが、最初に書いたように
10月分は 9/21~10/20 とする場合はA2セルは
=IF(A2="","",COUNTIFS(Sheet1!A:A,">="&EDATE(A2,-1)+20,Sheet1!A:A,"<="&A2+19,Sheet1!B:B,"<>"))

B2セルは
=IF(A2="","",SUMIFS(Sheet1!B:B,Sheet1!A:A,">="&EDATE(A2,-1)+20,Sheet1!A:A,"<="&A2+19))

としてみてください。m(_ _)m
    • good
    • 0

No.4・6・7です。



元データはSheet1にあり、Sheet2に表示するとします。
画像だとSheet2のA列が
2016/10 のようになっていますが数式バーは 2016/10/1
のように表示されているという前提です。

B2セルに
=IF(A2="","",COUNTIFS(Sheet1!A:A,">="&A2,Sheet1!A:A,"<"&EDATE(A2,1)))

C2セル(セルの表示形式はユーザー定義から [h]:mm としておく)に
=IF(A2="","",SUMIFS(Sheet1!B:B,Sheet1!A:A,">="&A2,Sheet1!A:A,"<"&EDATE(A2,1)))

としてそれぞれフィルハンドルで下へコピーしてみてください。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます!
思っていたものができて、とってもうれしいです!

とても分かりやすく教えていただけるtom04さんに甘えて、もう一つ質問してもよろしいでしょうか。
sheet2のB2・C2セルに入れた出勤日数・労働時間の区切りを2016/10/21~2016/11/20のように20日締めにすることも可能でしょうか?
教えていただいた式の一部分を変えるとできそうなのですが。。
お忙しい所申し訳ありませんが、教えていただけると助かります。

お礼日時:2017/02/09 14:35

たびたびごめんなさい。



画像のアップを忘れていました。
「エクセルで月毎の日数をカウントして自動表」の回答画像7
    • good
    • 0

No.4です。



>C列にその月のB列に数字が入っている個数
を見逃していました。
もう一度画像をアップします。

画像D2セルに
=SUMPRODUCT((MONTH(A2:A1000)=C2)*(B2:B1000<>""))

という数式を入れています。

※ E2セルは前回の数式そのままで大丈夫です。m(_ _)m
    • good
    • 0

C列はCOUNTIFS関数で、検索範囲をA列、検索条件を、A列の年・月・1日以上、A列の年・翌月・1日未満、


とすることで実現可能。
 C1セルに
 =COUNTIFS(A:A,">="&DATE(YEAR(A1),MONTH(A1),1),A:A,"<"&DATE(YEAR(A1),MONTH(A1)+1,1))

D列はSUMIFS関数で、合計範囲をB列、検索条件を、A列の年・月・1日以上、A列の年・翌月・1日未満、
とすることで実現可能。C列を使わずに月ごとの合計を求めることができる。
 D1セルに
 =SUMIFS(B:B , A:A , ">="&DATE(YEAR(A1),MONTH(A1),1) , A:A , "<"&DATE(YEAR(A1),MONTH(A1)+1,1))
こんなかな。

あとはC1セルとD1セルを必要な行までコピーするだけです。
…その結果、C列には節操もなく数字が並びますが…


・・・【注意】・・・
COUNTIFS関数と
SUMIFS関数は
Excel2007以降のバージョンで使うことができる関数です。
それよりも古いバージョンでは、SUMPRODUCT関数を駆使する必要があります。
    • good
    • 0

こんにちは!



具体的な配置が判らないので、やり方だけ・・・

↓の画像ではD2セルに
=SUMPRODUCT((MONTH(A2:A1000)=C2)*(B2:B1000))

という数式を入れています。

※ A列日付が複数年にまたがっている場合は
条件に「年」を加える必要があります。m(_ _)m
「エクセルで月毎の日数をカウントして自動表」の回答画像4
    • good
    • 0

No.1 のお詫び



「その月」を見逃していました。すみませんでした。
    • good
    • 0

C列にはCOUNTIF、D列にはSUMIF、が使えます。


検索条件はA列の年月、検索対象はB列、になります。
    • good
    • 0

「C列」は「C1セル」、「D列」は「D1セル」の間違いだとして


C1セルに「=COUNTIF(B:B,"<>")」
D1セルに「=SUM(B:B)」
で良いと思いますが、いかがでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!