- ベストアンサー
エクセルのカウントについて教えてください
よろしくお願いします ある病院の勤務表を作りました 縦軸に名前横軸が日付です 変則勤務のとき(遅出とか早出とか夜勤とか)は記号または文字が記入されます。表は1人分が2段になっていて下の段は修正があったときに使います。ブランクは平常勤務だったときです。で、毎日の平常勤務の人数(上の段がブランク)をカウントしたいのです。COUNTBLANKは下の段(修正があったときの記入欄)がカウントされますのでどうしていいかわかりません。教えてください。 1 2 3 4 5 -------------------------- 日 あ ---------------------- -------------------------- 夜 日 い ----------------------------- ------------------------- 遅 う ---------------------------- ------------------------------ え ------------------------- ------------------------------- 計 1 4 3 4 4 と言う風にしたいのです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。平常勤務予定で夜勤等になった人を引かないといけませんでした。訂正するため追加します。 A2:B13に 山田 上村 夜勤 小西 早出 木村 大川 夜勤 中山 夜勤 の場合 =SUM(IF((MOD(ROW(B2:B13),2)=1)*(B2:B13<>""),1,0)) と入れてCTRL+SHIFT+ENTERキーで 1(偶数行が空白、奇数行は空白でないセルB13をカウント) 結果は前回答の3(中山をA12、B13に)増やしたので+1の3になった)-1(本件)=2人 山田と木村です。 でもこの問題は苦労しますね。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
>縦軸に名前横軸が日付です-->判ります >表は1人分が2段になっていて 1人分が第2行目と第3行目のようにくっついて設(行)欄されているのでしょうか。 山田分第2,3行、小西分第4,5行、上村分第6,7行と言う風に。そして山田の修正は第3行に小西の修正は 第4行に入れると言うことでしょうか(多分こちら?)。 (または山田は3行目、小西は4行目、上村は5行目にあり、修正表(行)は下部の方に、山田は30行、小西は31行、上村は32行にあるのでしょうか。) >変則勤務のとき(遅出とか早出とか夜勤とか)は記号または文字が記入されます。判ります。 平常-ブランク、遅出-遅、早出-早、夜勤-夜 とでも入る。ブランクなら平常勤務と解する。 修正について夜勤予定が平常になった時は、どう入力(表現)するのでしょうか。(そう言うケースは無いと見なすのかも?) >毎日の平常勤務の人数(上の段がブランク)をカウントしたいのです。1行おきのブランクセル数を数えればよいのですか。その場合夜勤予定が平常になった時どうするのですか。 予定変更なしのブランクと予定変更して平常になったブランクとが、カウントを難しくしませんか。 >COUNTBLANKは下の段(修正があったときの記入欄)がカウントされますので むしろ修正が無かったためにブランクである行のセルがカウントされてしまう、のが困ると表現すべきでは。 問題内容推定でA2:B10が (1)A列 B列 (2)山田 (3) (4)上村 y (5) (6)小西 h (7) (8)木村 (9) (10)大川 y のとき =SUM(IF((MOD(ROW(B2:B10),2)=0)*(B2:B10=""),1,0)) と入れてCTRL+SHIFT+ENTERキーで 2(偶数行の空白セルB2とB8をカウント) となります。(配列数式) http://pc21.nikkeibp.co.jp/special/hr/hr4.shtml
- diashun
- ベストアンサー率38% (94/244)
求める表が「Sheet1」(*)に作られているとして、作業用「Sheet2」を使って式を作ります。 (*)「Sheet1」の「B1~横方向に日付」、「B2~縦方向に「上段入力欄、下段(修正)入力欄」が規則的にあるものとします。 「Sheet2」の任意のセル(仮に「B1」に縦方向に順に以下の様な式を入力します。(5人分として。は6行目は空白セル合計用) 「B1」→「=IF(Sheet1!B2="","",Sheet1!B2)」 「B2」→「=IF(Sheet1!B4="","",Sheet1!B4)」 「B3」→「=IF(Sheet1!B6="","",Sheet1!B6)」 「B4」→「=IF(Sheet1!B8="","",Sheet1!B48」 「B5」→「=IF(Sheet1!B10="","",Sheet1!B10)」 「B6」→「=COUNTBLANK(B1:B5) 以上のセルを「C1~C5、D1~D5、E1~E5」と日数分、横方向へコピーします。 これで「6行目」に各日毎の空白セル数が自動計算されます。 「Sheet1」の空白セル数計算行(仮に「B11」)に次の式を入力します。 Sheet1の「B11」→「=Sheet2!B6」 上記の式を「C11、E11、D11・・・」とコピーして完了。 判りづらいと思いますがご容赦下さい。 不明な点は、補足にてお知らせ下さい。 要は「作業セル、作業Sheet 」をうまく利用することかな。
お礼
ありがとうございました。作業シートを使うと言う方法でもできました。作業シートで「=IF(Sheet1!B2="","",Sheet1!B2)」を入力していくのが連続したセルナンバーではないので手間がかかりましたが しかし、こういう方法もあると言うことで目からうろこでした。ありがとうございました!!!
この場合は、 =sum(isblank(B2),isblank(B4),isblank(B6),isblank(B8),・・・,isblank(Bx)) というふうにするしかないのでは? あるいは、平常勤務のときは「平」といれることにしておきます。条件付き書式でセル内容が「平」のときは文字色=背景色となるようにすれば、見かけは何も入力されていないようになります。そうしておいて、COUNTIF関数を使えば平常勤務の人数がカウントできますね。 もし条件付き書式の使い方が分からなければ補足してください。
お礼
=sum(isblank(B2),isblank(B4),isblank(B6),isblank(B8),・・・,isblank(Bx))とやってSUNの数値を入れるのがたいへんだったのですがこの方法でできました。ありがとうございました。
お礼
ありがとうございました、できました!!! とってもうれしいです。感謝、感謝!です。