- ベストアンサー
DSUM 関数
お世話になります。 DSUM関数での集計がうまくいきません。 K L M 1 曜日 品種 人時計 2 木 89 3 金 40 12.00 木 78 火 47 4.00 火 47 17.00 水 74 木 31 11.50 木 31 18.00 木 47 3.00 木 05 7.00 木 78 金 03 3.15 金 05 14.00 上記のような1か月分のデータから曜日毎の人時を集計しようとしています。 曜日は離れた列にある日付を表示形式(aaa)にかえています。 R S T 1 曜日 品種 人時計 2 DSUM(K1:M110,M1,R1:S2) と数式を入れ S2に品種のみを入力するとT2に計算しますが R2に曜日を入れるとT2は必ず0になります。 どうしてでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
答えは既に出ていると思いますが、このコーナーの質問者で、よくよくこの点を判ってない質問が多いので再説します。 DSUMは関数です。それは判るでしょう。 関数には引数があります。引数にセル番地を指定するものは、その「セルの値」を見て計算や判断をしているのです。「セルの値」に対する概念は、セルの表示形式や書式(セルのパターン色・フォント関連など)であって、こちらは関数では見れ(判断でき)ないのです。 だから>日付を表示形式(aaa)にかえています、は基本を知らないやり方になります。必ずセルの値にして、そのセルの値をを見ないとなりません。 見てくれは曜日でも、セルの値は、日付シリアル値のままです。 質問者は、日付シリアル値の関連の知識(エクセルの重要事項)は大丈夫ですか。 対策は ・WEEKDAY関数で1-7のコードにする ・TEXT関数で"aaa"など指定して、月、火・・の文字とする。 などしてセルの値にして、その値で条件を考えないといけません・
その他の回答 (3)
》 どうしてでしょうか? 理由は既に回答があるので省略します。 此処では、別セルに木、金等の「曜日」を入力して、セル T2 の現行の式にご希望の計算をさせる方法を考えます。 1.何処かの任意の空きセル(例えばセル Q2) に曜日を入力 2.セル R1 の「曜日」を削除して、此処を空白セルとする ← これ重要! 3.セル R2 に式 =WEEKDAY(K2)=FIND(Q$2,"日月火水木金土") を入力 → Q$2 のように行番号に「$」マークを付けること、しかし、 「K2」には何も付けない 試してみてください。 【蛇足】簡単に見えますが、高級なテクニックです。(*^_^*)
お礼
ありがとうございます。 TEXT関数を使いうまくいきました。 又、時間をみつけて高度なテクニックもやってみたいとおもいます。
- CMLT
- ベストアンサー率40% (143/357)
原因はNo.1さんの通りです。 K列の書式を標準に戻し、関数で =CHOOSE(WEEKDAY(参照日付セル),"日","月","火","水","木","金","土") と入力(参照日付セル部分は自身で変更して下さい)すれば、 R2に漢字で入力して集計できるようになります。 別の方法として、 K列の書式設定はaaaのままで、関数を =WEEKDAY(参照日付セル) にし、R2セルも書式設定をaaaにして、入力は1~7の数字で打ち込む方法があります。 前者の方が直観的に曜日を打ち込めます。後者はデータ量がecoです。
お礼
ありがとうございます。 TEXT関数を使いうまくいきました。 色んな方法があるのですね。 また教えていただいた方法も挑戦したいとおもいます。
- cerberos
- ベストアンサー率50% (420/830)
>曜日は離れた列にある日付を表示形式(aaa)にかえています。 これが原因です。 表示形式で曜日で表示しても、実際にセルに入っている数値はリンク元の日付データになります。 ですからDSUM関数の検索値に"曜日"を指定しても、入っているデータは日付ですから一致せず0と なります。 元データの曜日が入る列を表示形式ではなく、セルデータを曜日に変換してやればきちんと表示さ れるようになります。
お礼
ありがとうございます。 TEXT関数を使いうまくいきました。 表示をかえただけでは・・・と思っていました。 もっと勉強します。
お礼
お手数をおかけしすみません。 K列を「TEXT関数で"aaa"など指定して、月、火・・の文字とする。」 とし、うまくいきました。 日付の表示をかえたものの疑問は残っていました。 ありがとうございました。