- ベストアンサー
各週ごとに集計したいのですが
一応検索をしましたが見つからなかったので質問します。 一応下記のような表を作っているのですがここから各週の 集計をしたいのです。 日付 曜日 A B C 合計 1 土 2 日 3 月 1 3 4 4 火 2 2 2 6 5 水 4 4 6 木 1 1 1 3 ・ ・ ・ 各週の集計表 月 火 水 木 金 第1週 第2週 第3週 第4週 第5週 上の表の合計を下の集計表へ転記させたいのですが 曜日ごとに組み込む方法がよくわかりません。 曜日はWEEKDAY関数で1から7までで表せますが、第 1週、第2週と正確に転記させる方法がわかりません。 関数を調べましたがこちらの要求どおりに動いてく れる関数は見つかりませんでした。もしかしたらマ クロを作らなければならないのかもしれませんがVBA は良くわかりません。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 曜日はWEEKDAY関数で1から7までで表せますが、 コレを元に、それぞれの日付が第x週であるかを計算しましょう。 1日は必ず第1週であることと土曜から翌週の日曜に変わる時にweekday(日付,1) の数値が減ることを使って、2日以降の「第x週」は =if(weekday(日付,1)<weekday(前日,1),前日の「第x週」+1,前日の「第x週」) と表せます。A1から日付が入っていてC列で計算するとすれば、 C1: =1 C2: =if(weekday(a2,1)<weekday(a1,1),c1+1,c1) ですね。 ついでですから、D列を =c1&text(a1,"aaa") として1つのセルで「第x週のy曜日」 を表現してしまいましょうか。そうすると集計表への転記はvlookup関数あたりでも 使ってチョイチョイとできますね。
その他の回答 (4)
- O_Denwa
- ベストアンサー率26% (46/172)
#3の者です。 間違いがあったので訂正。 A列 1 0 2 3 =WEEKDAY(B2) 4 =A3+1 5 =A4+1 : : でなく A列 1 0 2 3 =WEEKDAY(B3,1) 4 =A3+1 5 =A4+1 : : でした。失礼しました。
- O_Denwa
- ベストアンサー率26% (46/172)
まず、一つ目の表を、B列に日付。C列に曜日。D~F列にA~Cの数値。G列に合計とします。 この表の項目名は2行目に、データは3行目から入るとします。 この状態でA列には曜日でインデックスを作ってあげます。 (2行目は空白) A列 1 0 2 3 =WEEKDAY(B2) 4 =A3+1 5 =A4+1 : : それとG列の1行目に『-』としときます。 (これは、やらなくても良いんだけど) あとは、転記したい表にVLOOKUPで合計値を求めます。 VLOOKUPの範囲は、A1からGの最後の行まで、 検索の値は、第一週の日曜日に入る時は1。 月曜日のときは2、火曜日のときは3.。。。という感じで、 一日ごとに数値を+1していきます。 こんな感じで、どでしょか。
お礼
お礼が遅くなってすみません。 教えていただいたとおりに入力したところうまくいきました。 この問題ではどうやって第○週めかを判別するのかがわからず 悪戦苦闘しておりました。こんな事ならもっと早く聞けばよかった と思います。 どうもありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17070)
第何週かのコード数字をセット仕方の一法を入れます。 後はこのコードの同じ行を集計すれば良いのです。 (1)まづ月第1日(1日)が土曜の例とします。A1に 「土」と入れる。A2からA30またはA30まで、右下 +フィルハンドルを引っ張る。土日月…日月・・・とセット 出来る。 (2)空き列をB列として、B1に「1」を入れる。 (3)B2に「=IF(A2="日",B1+1,B1)」を入れる。もし月曜が週第1日なら「=IF(A2="月",B1+1,B1)」とする。 (4)そしてB3から月末日B31またはB30まで式を複写する。 (5)で月中第何週かの数字がセットされる。 (6)第1行目に行を挿入する。 A1に曜日、B1に第何週、C1に計数と入れる。 C列に計数を入れる。 (7)A1からC32まで範囲指定。 (8)データ-集計(B) 「グループの基準」は「第何週」 「集計の方法」は「合計」 「集計するフィールド」は「計数」 (注) 間違ったら、取り消すなら、「すべて削除」で戻 す。 (9)列外左の「-」をクリックすると明細が折りたたまれ 見えなくなる。
補足
早速の回答ありがとうございます。またまた私の書き漏ら しがでてきてしまいました。 毎月この集計表を提出しなければならないのでそのためのテンプレートを作り、できる だけ入力の手間を省きたいと思い質問しました。 教えていただいたやり方で勿論できますがこちらの求めていた回答ではありませんでした。 ただデータ集計のやりかたは全然知りませんでしたので大変勉強になりました。 また質問する機会がありましたらよろしくお願いします。 ありがとうございました。
DatePart関数はどうでしょうか。
補足
早速の回答ありがとうございます。 ただこちらの記載もれですがEXCELは2000を使っています。 DatePartという関数は見つかりませんでした。XPで増えた 関数だと思います。他にも何かありましたらよろしくお願 いします
お礼
お礼が遅くなってすみません。 うーん。目からうろこですね。どうにかWEEKDAY関数を使って 出来るのではないかと思って四苦八苦していました。なのに こんなにあっさりと出来るとは。 どうもありがとうございました。