ここから本文です

IF関数を入れた複数セルをSUM関数で集計しましたが、結果が「0」と表示されてしま...

akinkoroneさん

2011/8/2201:55:01

IF関数を入れた複数セルをSUM関数で集計しましたが、結果が「0」と表示されてしまいます。集計するためにはどうしたらよいでしょうか?

Excel2003で勤務表を作っておりましたが、IF関数とSUM関数でつまづいてしまいました。
どうか解決案をご教授願います。

まずは複雑ですが、順を追って説明いたします。

勤務形態には「早番」「日勤」「遅番」「公休」があります。
1日から31日まで管理するため、【A2】~【AE2】に入力規則で「早番」「日勤」「遅番」「公休」をプルダウンで選べるようにしました。

勤務時間は勤務形態によって異なり、1日目【A2】が
・「早番」「日勤」であれば8時間勤務
・「遅番」であれば5時間勤務
というように、【A3】にIF関数を用いて勤務時間の数字が反映されるよう、下記数式を入力しました。
=IF(A2="早番",8,"")&IF(A2="日勤",8,"")&IF(A2="遅番",5,"")
なお【A2】が「公休」の場合は【A3】は空欄で良いため、とくに数式には入れておりません。
これを1日から31日まで同じように表示するため、上記数式を【AE3】までオートフィルでコピーしました。

ここからが問題なのですが、
勤務時間の合計を算出するため、【AF3】にSUM関数を用いて、下記数式を入力しました。
=SUM(A3:AE3)
すると、【A3】~【AE3】に数字が反映されているにもかかわらず、結果が「0」になってしまいました。

原因は【A3】~【AE3】の数字が文字列として認識されているためだと思います。
【A3】~【AE3】に入れたIF関数の数字は「""」で囲っておりませんが、
数字がセル左詰めになっているところや、[関数の因数]のダイアログボックスの表示結果を見る限り、
やはり文字列として認識されているようです。
セルの書式設定で表示形式を「数値」にしてみても変化はありませんでした。
IF関数に文字列や空白文字列があると、数字もつられて文字列として認識してしまうのでしょうか。
これを解決する方法がわかりません。

また、ためしに【AF3】に
=A3+B3+C3……+AE3
と足し算を入れてみたりもしましたが、【A2】~【AE2】に「公休」があると、空欄に反応してかエラーを引き起こしてしまいました。

このような感じで、いじればいじるほど混乱しております…。

上記のIF関数を入れたセルを集計するためには一体どうすればよいのでしょうか。
IF関数の結果が文字列として認識されている時点で、IF関数の扱い方が間違っているのかもしれません。
その場合は、併せてご指摘いただけると助かります。

どうか解決できるようご教授をお願いいたします。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
3,071
回答数:
3
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

nishiki_gonさん

編集あり2011/8/2202:25:09

=IF(A2="早番",8,"")&IF(A2="日勤",8,"")&IF(A2="遅番",5,"")
&で繋いでいるため、たとえば[早番]の場合には、 8&""&"" と日勤と遅番の""が付加されて文字列となります。

=IF(A2="早番",8,IF(A2="日勤",8,IF(A2="遅番",5,"")))

下記のようにも表記できます。
=IF(OR(A2="早番",A2="日勤"),8,IF(A2="遅番",5,""))
=IF(OR(A2={"早番","日勤"}),8,IF(A2="遅番",5,""))

質問した人からのコメント

2011/8/22 12:02:33

笑う みなさま、迅速で的確な回答をありがとうございました。

数値が文字列になる理由がわかりやすく、
早番と日勤の勤務時間を1くくりに出来るOR関数が大変使いやすかったので、
nishiki_gonさまのご回答をベストアンサーにさせていただきました!

ab_c1xyzさまのINT関数は数値としてみなすことができるのですね!勉強になりました。

grumpy_the_dwarfさまのVLOOKUP関数も参考になりました!画像まで載せてくれてわかりやすかったです。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

2011/8/2208:48:44

if関数の結果はちゃんと数値なのに「&」で結合して文字列になっちゃってた、というのが原因です。「&」は使わない方がいいですね。

典型的なやり方は2つに分けられます。
1つはif関数を入れ子にして分岐していく方法。
=if(A2="日勤",8,if(or(A2="早番", A2="遅番"),5,0)
もう一つはパターンを表に書き出して検索させる方法
=VLOOKUP(A2,$F$9:$G$13,2,0)

私が推奨するのは2番目の方法です。パターンが増えても混乱しづらいうえに、表を使って入力規則を定義してしまえば2行目の入力がすっごい楽になります。

if関数の結果はちゃんと数値なのに「&」で結合して文字列になっちゃってた、というのが原因です。「&...

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ab_c1xyzさん

リクエストマッチ

編集あり2011/8/2202:06:57

思ったとおり、数字が「数値ではなく」文字列になっていました。
=INT(IF(A2="早番",8,"")&IF(A2="日勤",8,"")&IF(A2="遅番",5,""))
とすれば直ると思います。

あるいは、
=IF(A2="早番",8,IF(A2="日勤",8,IF(A2="遅番",5,"")))
というふうに直してみて下さい。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

タグランキングを見る

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

お得情報

運転お疲れ様ですの気持ちを込めて
Yahoo!カーナビでジャイアントコーン
お盆にキャンペーンを実施!

その他のキャンペーン

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。