こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

[エクセル]チェックしたセルに書かれている文字の合計

エクセルで年間の行事予定表を作っています。
4月          5月
-----------------  -----------------
1日 月   空白  1日  木 v
------------------ -----------------
2日 火   v    2日 金 空白
------------------ ------------------ 
3日 水   v   3日  土 v 
------------------ ------------------
というように、横並びで4月から3月までの表です。
各月は日付、曜日、チェック欄の三列からなります。
(この表示フォーマットはかえられません)

各月ごとに、月曜日~日曜日ごとvがついた合計を
集計したいのですが、よくわかりません。

ご存知の方がいらっしゃいましたら、よろしくご教授ください。

投稿日時 - 2005-12-21 13:19:50

QNo.1851538

暇なときに回答ください

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

例えば4月のデータがA2:C32に入力されているとして、
4月の曜日別チェック数をB36:C42に表示させるとします。

B36:B42に「月」~「日」の文字が入力されているとして、
C36に
=SUM(IF(B$2:B$32=B36,IF(C$2:C$32="v",1)))
と入力した後に、「ShiftキーとCtrlキーを同時に押しながら」Enter
キーで確定させると、月曜日のチェック数が表示されます。(式の両端に{ } が付きます。この数式は配列数式と言います)

あとは、C36の式をC42までコピーすれば4月の分は完成します。

5月以降もその式を列方向にコピーして使うことができます。

参考)配列数式
http://www.hcs.co.jp/hitschool/qa_excel13.htm
http://pc21.nikkeibp.co.jp/special/hr/hr1.shtml

投稿日時 - 2005-12-21 13:52:03

お礼

ご回答ありがとうございます。
まさにこれです!
配列数式というんですね。
さっそく試したところうまくいきました。
ありがとうございます。

投稿日時 - 2005-12-21 14:07:19

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.8

こんばんは。

一応、縦に日付が出されたものだということで、考えてみました。

今のところ、書き出す場所を分りやすいようにしていますが、移動しても構いません。

A1:A31 までが日付(シリアル値)を表示したものとします。B1:B31 までは、曜日、C1:C31 までは、"v"を用いた、チェック欄ということにします。

A32 は、空白にしてください。

A33:
=DATE(YEAR(A1),MONTH(A1),8+(ROW(A1)-1)*7)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),7))

B33:(第1日曜日~)
=SUMPRODUCT(($A$1:$A$31>A32)*($A$1:$A$31<=A33)*($C$1:$C$31="v"))

これで、次の月が出るところまで、フィルダウン・コピーします。

これで出来るのではないかと思います。

投稿日時 - 2005-12-21 18:45:16

お礼

ご回答ありがとうございます。
この数式は、私にはなかなか思い浮かびません...。
ひとつの質問で、皆さんのおかげでずいぶん勉強になります。

投稿日時 - 2005-12-21 22:40:21

ANo.7

もし月別かつ曜日別なら、#6の例で
F2に「月」オートフィルで火から日まで作る。
F34に=SUM(IF(($C$2:$C$32="v")*($B$2:$B$32=F2),1,0))
と入れてSHIFT+CTRL+ENTER
F40まで複写。
結果(E列E34:E40はオートフィルで作ったもの)
E列  F列
月1
火3
水3
木2
金3
土3
日0

投稿日時 - 2005-12-21 16:01:33

お礼

ご丁寧にありがとうございます。
おかげでずいぶん理解できて来ました

投稿日時 - 2005-12-21 22:38:16

ANo.6

下記は使えませんか。
例データ
2005/12/1木1
2005/12/2金v1
2005/12/3土v1
2005/12/4日1
2005/12/5月v2
2005/12/6火2
2005/12/7水v2
2005/12/8木2
2005/12/9金v2
2005/12/10土v2
2005/12/11日2
2005/12/12月3
2005/12/13火v3
2005/12/14水3
2005/12/15木v3
2005/12/16金3
2005/12/17土3
2005/12/18日3
2005/12/19月4
2005/12/20火v4
2005/12/21水v4
2005/12/22木v4
2005/12/23金4
2005/12/24土v4
2005/12/25日4
2005/12/26月5
2005/12/27火v5
2005/12/28水v5
2005/12/29木5
2005/12/30金v5
2005/12/31土5
ーーーーー
A2:A33までオートフィルで日付(シリアル値)
B列B2は=TEXT(A2,"aaa")
D列は作業列でD2は=COUNTIF($B$2:B2,"月")+1
B,c列は式を31日まで複写。
C34セルに(空きのセルならどこでも良い)
=SUM(IF(($C$2:$C$32="v")*($D$2:$D$32=ROW()-33),1,0))
と入れて、SHIFT+CTRL+ENTERを同時に押す(配列数式)
C38まで式複写。
結果B34:C38(B34:B38は入力と書式設定)
B列   C列
第1週2
第2週4
第3週2
第4週4
第5週3

投稿日時 - 2005-12-21 14:51:24

補足

ありがとうございます。
お教えいただいたものは、各週ごとのvの数を集計し、
なおかつ、vの横に各曜日ごとの日数を合計しているのですね。
思いもよりませんでした。
参考になります。そもそも配列数式というものを
知らなかったもので、前の方にお教えいただいたページを参考に現在さっそくいろいろ試してみていました。

投稿日時 - 2005-12-21 14:57:31

ANo.5

#1です。
失礼しました。
質問文を読み間違えてました・・・。

投稿日時 - 2005-12-21 14:27:53

お礼

ご丁寧に、訂正をありがとうございます。

投稿日時 - 2005-12-21 14:56:01

ANo.4

>月曜日~日曜日ごとvがついた合計を
この意味をはっきりさせてほしい。
月ごとvの数なら簡単だが、
月初日から第一日曜日
第2週
第3
第4
最終月曜日から月末日
のように集計したいのでしょうか。
これは複雑になりそう。
VBAでなら何とかなりそうだが。

投稿日時 - 2005-12-21 14:13:58

補足

質問がわかりにくく申し訳ありません。
最初の質問に示したような、4月1日から3月31日までの表があります。
それに関して、月ごとに、月曜日はvが2個、火曜日はvが0個と
いうふうにまとめたいのです。最終月曜日からという
複雑なものではなく、1~31日までです。

投稿日時 - 2005-12-21 14:49:49

ANo.2

<力技>
=ABS(A1="v") + ABS(B1="v") + ・・・ + ABS(N1="v")
で横集計し、縦集計。
<スマート>
カレンダーの該当するセルを集計するVBA関数を作成する。

投稿日時 - 2005-12-21 13:35:56

お礼

ご回答ありがとうございます。
最初、力技でやろうとしていたのですが、なにかあるんじゃないかと思ったしだいです。
スマートな方法も考えてみます。

投稿日時 - 2005-12-21 14:06:18

ANo.1

マクロなしなら・・・、
1.チェックマークが入る右に列を追加して、非表示にでもしておく。
2.そこに式を入れる。
 (例)IF(チェックを入れる列のセル番号="v",1,0)
3.下までコピー(必要分フィル)
4.最後にSUM
でいいかな?

投稿日時 - 2005-12-21 13:29:56

お礼

さっそくのご回答ありがとうございます
ご提示いただいた方法ですと、各曜日ごとのvをつけた合計ではなく、月のvの合計を
数えることにならないでしょうか。

投稿日時 - 2005-12-21 13:56:20

あなたにオススメの質問