
No.2ベストアンサー
- 回答日時:
ANo1です。
回答時には、表の作成のされ方がまったく不明でしたので、計算しやすい方法を提示しましたが、補足の表を見る限り(細部はぼやけてたりでよくわかりませんが)、違う作り方(見掛けではなく内部的に)をなさっているようですので、ANo1で提示した関数では意味の違うものになってしまう可能性が高いです。
(ANo1で仮定している内容は、回答に示してあります)
どのような作り方でもかまいませんが、その作り方に合った計算方法をとらないと、求める答えが得られる保証はありません。
とは言え、通常の数値計算では見た目と計算内容はほぼ一致していますが、時間や日付計算の場合はエクセルがどのような値を保持しているかで計算内容がまったく異なった結果になる可能性があります。(見掛け上で表示されている値ではありません)
例えば、ANo1では(説明にもあるように)A列、B列とも日付型の同じ値が保持されているものと仮定しています。(同じ値なのでB列の式は「=A4」などの単純なものになっています)
例として、日付型の値「2017/3/1」がセルに入っているとして…
・書式を「yyyy/m/d」とすると、「2017/3/1」と表示
・書式を「標準」とすると、「42795」と表示(←シリアル値)
・書式を「d」とすると、「1」と表示(←回答のA列=日付)
・書式を「aaa」とすると、「水」と表示(←回答のB列=曜日)
となることを利用しています。
(セルの値として、計算に使用されるのは「2017/3/1」に対応するシリアル値です)
それぞれの時刻の項目に関しても同様で、60進法を気にせずに加減算ができることを利用しています。
(結果が負数にならないように注意することは必要ですが…)
ご提示の表では、時刻の部分が文字列(?)のようにも見受けられますので、そのまま計算してくれるのか不明です。
手元で簡単に試してみたところ、時刻形式の文字列に対しては、エクセルは解釈できる範囲で時刻計算をしてくれているみたいではありますが…
(どのような条件の時に変換されるのかは、私にはわかりません)
それなので、もしかすると、補足でご提示の式でも、書式を変えるだけで時刻の計算結果が得られるのかも知れません。
しかし、対象が文字列の場合には、一旦、TIMEVALUE()などを取って変換するか、あるいは時・分に分解して60進法で自分で計算するなどの方が確実と言えそうです。
ANo1で提示した表の作成方法と計算式は、比較的簡単に計算ができる方法として思いついたものですので、他の方法を採用なさるのはもちろんご自由ですが、その際には、その内容に合わせた計算式にしておくことが必要と思います。
No.1
- 回答日時:
こんにちは
回答が無いようですので…
表の内容をどのように作成なさっているのかわかりませんが、時間計算を行うならシリアル値を利用するとそのまま加減算ができるので便利です。
サンプルでひと月分作ると読めなくなってしまうので、小規模に縮小したサンプルで作成してみました。
左上(A1セル)に年月日(日付は1日)を入力すると、A列(日)とB列(曜日)は自動で表示されます。
時間表記部分の書式は全て [h]:mm として時分で表記できるようにしてあります。
(各時間入力(?)欄は 時:分 形式のみの入力と仮定)
・・・という仮定のもとに、
例えばD列の集計は
土曜以外 =SUMPRODUCT((TEXT($B3:$B14,"aaa")<>"土")*(D3:D14))
土曜日 =SUMPRODUCT((TEXT($B3:$B14,"aaa")="土")*(D3:D14))
全体合計 =SUM(D3:D14)
で求められると思います。
(SUMPRODUCTで求めましたが、SUMIFでもできるのかも)
※ 日数は縮小サイズなので、計算範囲の指定は調整が必要です。
(上記の例では3行目から14行目までの集計になっています)
※ 20日以前、以後を分割する場合は、A列の値を条件に加えれば可能です。
(上の例示式の曜日判定の応用でできます)

この回答へのお礼
お礼日時:2017/03/08 16:25
遅くなりました、すみません。
頂いた関数でできました!
書式の中の定義を変更し忘れていたのでご指摘の定義を使用したところちゃんと計算されました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
大規模疎行列の高速な計算方法...
-
べき乗の計算が遅い理由
-
変化させるセルが変化しない
-
EXCELなどで「返す」という表現
-
計算基礎論、クラスPであること...
-
バッチファイルでウインドウを...
-
ファイルの開き方
-
Bluestacks内でダウンロードし...
-
アルゴリズム フェルナンデス...
-
マージソートの比較回数の計算...
-
正しい五十音順について
-
自動クエリとはどういうもので...
-
銃を発砲するならともかく、日...
-
あるプログラムのコマンドライ...
-
書籍のソースコードを別言語に...
-
C++でアボート(Abort)で処理が...
-
C++ で、「)」が必要 というエ...
-
クリックするとページ内で説明...
-
VCでのunion REGSとint86について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
VBAで関数をつくる
-
[急募]Pythonについてです。
-
数値計算の高速化 (cos, sin, exp)
-
C言語についての質問です。 ル...
-
切り上げたい
-
DLL(VC++で作った)で稼動中の...
-
CとFORTRANの計算速度はどちら...
-
趣味で「乗換案内」みたいなソ...
-
CGIの実行権限(ディスク容...
-
エクセルで特定のセルのみを任...
-
functionを含んだプログラムを...
-
時間差を求める
おすすめ情報
ありがとうございます!!
現在出張なので、社に戻り次第やってみたいと思います。
こんにちは!大分遅くなりましてすみません!!
B列の曜日は自動ででるようにはなってます。
この前頂いた関数を入力しましたが、計算が何故かおかしい答えになりました。
次のファイルに添付致します。
どこが間違っているか見て頂けないでしょうか?
補足の付け足しです。
この様に答えは2.1時間になってしまいます。
どうすればよろしいでしょうか?