- ベストアンサー
エクセルでの稼働日数集計方法を徹底解説
- エクセル2003を使用して、期間内の稼働日数を集計する方法について解説します。
- 同日の結果が複数行存在する場合でも、どのような関数を使えば簡単に集計できるのか、具体的な手順を説明します。
- また、作業列に月の1日の日付データを入力しておくことで、一ヶ月ごとのトータル稼動件数を計算する方法も紹介します。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
外部リンク先を見に行くつもりはありません。 私は情報を皆で共有する為に回答しています。質問が終わったら 消してしまうような情報を前提にして回答したくありません。 言葉で説明できない理由が分かりません。 ただ Excel2003ということから考えて おそらくは 分析ツールを アドインしていないことが原因だろうとは思います。 EOMONTH はアドイン関数なので。 =FREQUENCY(IF(FREQUENCY(A$1:A$100,A$1:A$100+0),A$1:A$100),DATE(YEAR(B1),MONTH(B1)+{1,0},0)) 2003でもこれなら計算できるはずです。
その他の回答 (7)
- MackyNo1
- ベストアンサー率53% (1521/2850)
2014年1月の日付の集計は以下のような数式で計算できます。 =COUNT(1/((MATCH(A1:A1000,A1:A1000,)=ROW(A1:A1000))*(YEAR($A$1:$A$1000)&MONTH($A$1:$A$1000)="20141"))) 配列数式ですので入力後Ctrl+Shift+Enterで確定してください。 なお、B1セルに2014年1月の日付が入力されているなら「20141」の部分を以下のような関数に置き換えた数式にしてください。 =COUNT(1/((MATCH(A1:A1000,A1:A1000,)=ROW(A1:A1000))*(YEAR($A$1:$A$1000)&MONTH($A$1:$A$1000)=TEXT(B1,"yyyym")))) 実際のリストのレイアウトが2行目からデータの場合は以下のように数式を修正する必要があります。 =COUNT(1/((MATCH(A2:A1000,A2:A1000,)=ROW(A2:A1000)-1)*(YEAR($A$2:$A$1000)&MONTH($A$2:$A$1000)="20141")))
お礼
御返答ありがとうございます。 御教示頂きました数式でも集計する事ができました。 ありがとうございました!
- mt2008
- ベストアンサー率52% (885/1701)
ANo.3です。 > 但し、No.4の方の仰る通りデータが今後も増える為、予め集計する範囲を広く取っても集計できる数式ですと幸いです。 では、作業列を使用する方法を。 添付の図ではC列を作業列として使用しています。 C1に↓の式を入れて下方向にずっとコピー =IFERROR(1/COUNTIF(A:A,A1),0) 次にD1セルに↓の式を入れてB列に月初の日付が入っている行の最後までコピー =SUMIFS(C:C,A:A,">="&B1,A:A,"<"&EDATE(B1,1)) C列は非表示にでもしておいてください。 なお、D列の式にはEDATE関数を使っていますが、この関数を使うにはアドインで分析ツールを組み込む必要があります。
お礼
御返答ありがとうございました。 作業列を利用する方法も試してみようと思います!
- Chiquilin
- ベストアンサー率30% (94/306)
> エラーになってしまいました。 何というエラーですか? 返った結果については詳細に書いて下さい。 エラー値を見ないと原因が分かりません。 手当たり次第にエラー対策をしていると 無駄な処理が増えます。 B列に月初の日付は入っていますね? 「空白」は本当に「空白」ですか? 日付以外のデータが含まれていませんか? =FREQUENCY(IF(FREQUENCY(A$1:A$100,TEXT(A$1:A$100,"0;;0;!0")*1),A$1:A$100),EOMONTH(B1,{0,-1})) ひとまず。少なくとも検証してから回答しているので 何か書いていな い情報がない限りは計算するはずです。
補足
重ね重ねありがとうございます。 また当方の返答が不十分で申し訳ありません。 こちらで試した所、以下の状況になってしまいます。 https://www.dropbox.com/s/cxt6whdaoidqwqb/%E7%84%A1%E9%A1%8C2.jpg?dl=0 >B列に月初の日付は入っていますね? 入っています。 >「空白」は本当に「空白」ですか? A100まで確認しましたが、空白で間違いありません。 >日付以外のデータが含まれていませんか? ファイルを新規作成し、必要なデータのみを入力しましたが、結果は変わりませんでした。
- Chiquilin
- ベストアンサー率30% (94/306)
> 尚、作業列としてB列にそれぞれの月の1日の日付データをB列に入力しており それを「作業列」とはいいませんね。何の作業もしてないので。 補助的な計算をするセルやシートを 作業セル・作業シートといいます。 範囲を多めにとっておくなら 空白も処理しないとダメなはずなので C1セルに =FREQUENCY(IF(FREQUENCY(A$1:A$100,A$1:A$100+0),A$1:A$100),EOMONTH(B1,{0,-1})) でどうですか? 尚 数式の説明は遠慮させて頂いてます。
補足
御教示ありがとうございます。 仰います通り範囲を多目に取りたい為、空白処理ができると非常に助かります。 教えて頂きました数式をC1セルに入れてみましたが、エラーになってしまいました。 改めて御教示頂けますと幸いです。
- mt2008
- ベストアンサー率52% (885/1701)
失礼。 B列に入っている値をA列の日付の月初と勘違いしていました。 これでどうでしょう。 =SUMPRODUCT(1/COUNTIF($A$1:$A$12,$A$1:$A$12)*(TEXT($A$1:$A$12,"YYYYMM")=TEXT(B1,"YYYYMM")))
補足
御回答ありがとうございます。 教えて頂いた数式で集計することができました。 但し、No.4の方の仰る通りデータが今後も増える為、予め集計する範囲を広く取っても集計できる数式ですと幸いです。
- mt2008
- ベストアンサー率52% (885/1701)
こんなのでどうでしょう =SUMPRODUCT(1/COUNTIF(A1:A12,A1:A12)*(B1:B12=B1))
- aokii
- ベストアンサー率23% (5210/22062)
=DATE(YEAR(A1),MONTH(A1),1) で、日を外して、年月にしてから、ピボットテーブルで種類数を出すことをお勧めします。
お礼
御返答ありがとうございます。 御教示頂きました数式で集計する事ができました。 ありがとうございました。 天井人様からのありがたいお言葉、感謝致します。