• ベストアンサー

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になります。 どうしてでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

答えは既に出ていると思いますが、このコーナーの質問者で、よくよくこの点を判ってない質問が多いので再説します。 DSUMは関数です。それは判るでしょう。 関数には引数があります。引数にセル番地を指定するものは、その「セルの値」を見て計算や判断をしているのです。「セルの値」に対する概念は、セルの表示形式や書式(セルのパターン色・フォント関連など)であって、こちらは関数では見れ(判断でき)ないのです。 だから>日付を表示形式(aaa)にかえています、は基本を知らないやり方になります。必ずセルの値にして、そのセルの値をを見ないとなりません。 見てくれは曜日でも、セルの値は、日付シリアル値のままです。 質問者は、日付シリアル値の関連の知識(エクセルの重要事項)は大丈夫ですか。 対策は ・WEEKDAY関数で1-7のコードにする ・TEXT関数で"aaa"など指定して、月、火・・の文字とする。 などしてセルの値にして、その値で条件を考えないといけません・

Rupan5833
質問者

お礼

お手数をおかけしすみません。 K列を「TEXT関数で"aaa"など指定して、月、火・・の文字とする。」 とし、うまくいきました。 日付の表示をかえたものの疑問は残っていました。 ありがとうございました。

その他の回答 (3)

noname#204879
noname#204879
回答No.3

》 どうしてでしょうか? 理由は既に回答があるので省略します。 此処では、別セルに木、金等の「曜日」を入力して、セル T2 の現行の式にご希望の計算をさせる方法を考えます。 1.何処かの任意の空きセル(例えばセル Q2) に曜日を入力 2.セル R1 の「曜日」を削除して、此処を空白セルとする ← これ重要! 3.セル R2 に式 =WEEKDAY(K2)=FIND(Q$2,"日月火水木金土") を入力    → Q$2 のように行番号に「$」マークを付けること、しかし、      「K2」には何も付けない 試してみてください。 【蛇足】簡単に見えますが、高級なテクニックです。(*^_^*)

Rupan5833
質問者

お礼

ありがとうございます。 TEXT関数を使いうまくいきました。 又、時間をみつけて高度なテクニックもやってみたいとおもいます。

  • CMLT
  • ベストアンサー率40% (143/357)
回答No.2

原因はNo.1さんの通りです。 K列の書式を標準に戻し、関数で =CHOOSE(WEEKDAY(参照日付セル),"日","月","火","水","木","金","土") と入力(参照日付セル部分は自身で変更して下さい)すれば、 R2に漢字で入力して集計できるようになります。 別の方法として、 K列の書式設定はaaaのままで、関数を =WEEKDAY(参照日付セル) にし、R2セルも書式設定をaaaにして、入力は1~7の数字で打ち込む方法があります。 前者の方が直観的に曜日を打ち込めます。後者はデータ量がecoです。

Rupan5833
質問者

お礼

ありがとうございます。 TEXT関数を使いうまくいきました。 色んな方法があるのですね。 また教えていただいた方法も挑戦したいとおもいます。

  • cerberos
  • ベストアンサー率50% (420/830)
回答No.1

>曜日は離れた列にある日付を表示形式(aaa)にかえています。 これが原因です。 表示形式で曜日で表示しても、実際にセルに入っている数値はリンク元の日付データになります。 ですからDSUM関数の検索値に"曜日"を指定しても、入っているデータは日付ですから一致せず0と なります。 元データの曜日が入る列を表示形式ではなく、セルデータを曜日に変換してやればきちんと表示さ れるようになります。

Rupan5833
質問者

お礼

ありがとうございます。 TEXT関数を使いうまくいきました。 表示をかえただけでは・・・と思っていました。 もっと勉強します。

関連するQ&A