過去の桐井戸端BBS (桐ver.9)
26185 開始時間と終了時間の間で4種類の時間帯ごとの時間を計算したい ほっぷ 2004/05/07-16:29
 はじめまして。どなたかお答えしてほしいのですが、
まず項目に[開始時間][終了時間][時間1][時間2][時間3][時間4]を設けます。
(時間1〜4というのは[開始時間]と[終了時間]を入力した際に、
その時間帯が何時間あるかを示してくれるようにする項目です。
時間帯とは、[時間1]=6:00-8:00、[時間2]=8:00-18:00、[時間3]=18:00-22:00、[時間4]=22:00-6:00です。)
 つまりは以下のように表示させるにはどうしたらよいのかということです。

[開始時間] [終了時間] [時間1] [時間2] [時間3] [時間4]
 7:00    21:00    1    10    5     0
※[時間1]が1というのは6:00-7:00までの時間帯が1時間あるということです。
また[時間2]が10というのは8:00-18:00までの時間帯が10時間あるということで、
以下[時間3][時間4]も同じことです。
いろいろ調べてみましたが、桐でこのような処理は可能でしょうか?どなたかお答え下さい。
26186 Re:計算式について ほっぷ 2004/05/07-16:33
記事番号26185へのコメント
下の方の表記がずれていたので修正します。
[開始時間]=7:00 [終了時間]=21:00 [時間1]=1 [時間2]=10 [時間3]=5 [時間4]=0
です。
26188 Re:計算式について 宮城 2004/05/07-19:34
記事番号26185へのコメント
たぶん時給計算ですね。私はあんまりやったことがないんで。ただ愚直にいってみただけという例です。

文字列で「08:00」のように入力すること、一日は00:00-24:00とし、
00:00-06:00、06:00-08:00、08:00-18:00、18:00-22:00、22:00-24:00の5ゾーンとしています。

18:00-22:00ゾーンの計算式の例。

#条件選択([開始時間]>="22:00" .and [終了時間]<"18:00",0
,1,#条件選択([開始時間]<"18:00" .and [終了時間]>="22:00",4
,1,#条件選択([開始時間]<"18:00",#時間("18:00",[終了時間],1)
,1,#条件選択([終了時間]>="22:00",#時間([開始時間],"22:00",1)
,1,#時間([開始時間],[終了時間],1)))))

26192 Re:計算式について 宮城 2004/05/07-23:47
記事番号26188へのコメント
間違いですね。

#条件選択([開始時間]>="22:00" .or [終了時間]<"18:00",0
,1,#条件選択([開始時間]<"18:00" .and [終了時間]>="22:00",4
,1,#条件選択([開始時間]<"18:00",#時間("18:00",[終了時間],1)
,1,#条件選択([終了時間]>="22:00",#時間([開始時間],"22:00",1)
,1,#時間([開始時間],[終了時間],1)))))

-----+-----+-----
.<->.........<->
....<------->
....<---->
.......<---->
......<--->

26195 Re:時間外の振り分けについて 今村 誠 2004/05/08-01:21
記事番号26186へのコメント
ほっぷさんこんにちは、検証はしていません
開始時刻 文字列  3:00 や 10:00

終了時刻 文字列  23:00 や 4:30

開始時間 以下の項目は数値
#mod(#時間数値(#時間値([開始時刻])+i"2:0:0",1),24)

終了時間 うにんさんの式です
#mod(#時間数値(#時間値([終了時刻])+i"2:0:0",1),24)

深夜
#cond(#横合計([開始時間],[開始時間])=#u .or
#横合計([終了時間],[終了時間])=#u,#u,
[開始時間]>=[終了時間],
#cond([開始時間]>=8 .and [終了時間]=<8,[終了時間],
[開始時間]>=8 .and [終了時間]>8,0,
1,8-[開始時間]+[終了時間]),
1,#cond([開始時間]>=8,0,
[終了時間]=<8,[終了時間]-[開始時間],1,8-[開始時間]))

早朝
#cond(#横合計([開始時間],[開始時間])=#u .or
#横合計([終了時間],[終了時間])=#u,#u,
[開始時間]>=[終了時間],
#cond([開始時間]>=10 .and [終了時間]=<8,0,
[開始時間]>=10 .and ([終了時間]>=8 .and [終了時間]=<10),10-[終了時間],
[開始時間]>=10 .and [終了時間]>=10,2,
([開始時間]<10 .and [開始時間]>=8) .and [終了時間]=<8,10-[開始時間],
([開始時間]<10 .and [開始時間]>=8) .and [終了時間]>8,
(10-[開始時間])+([終了時間]-8),
1,2),
1,#cond([開始時間]>=10 .or [終了時間]=<8,0,
[開始時間]>=8 .and [終了時間]=<10,[終了時間]-[開始時間],
[開始時間]>=8 .and [終了時間]>=10,10-[開始時間],
[開始時間]<8 .and [終了時間]>=10,2,
[開始時間]<8 .and [終了時間]=<10,[終了時間]-8))

日中
#cond(#横合計([開始時間],[開始時間])=#u .or
#横合計([終了時間],[終了時間])=#u,#u,
[開始時間]>=[終了時間],
#cond([開始時間]>=20 .and [終了時間]=<10,0,
[開始時間]>=20 .and ([終了時間]>=10 .and [終了時間]=<20),20-[終了時間],
[開始時間]>=20 .and [終了時間]>=20,10,
([開始時間]<20 .and [開始時間]>=10) .and [終了時間]=<10,20-[開始時間],
([開始時間]<20 .and [開始時間]>=10) .and [終了時間]>10,
(20-[開始時間])+([終了時間]-10),
1,10),
1,#cond([開始時間]>=20 .or [終了時間]=<10,0,
[開始時間]>=10 .and [終了時間]=<20,[終了時間]-[開始時間],
[開始時間]>=10 .and [終了時間]>=20,20-[開始時間],
[開始時間]<10 .and [終了時間]>=20,10,
[開始時間]<10 .and [終了時間]=<20,[終了時間]-10))

夜間
#cond(#横合計([開始時間],[開始時間])=#u .or
    #横合計([終了時間],[終了時間])=#u,#u,
[開始時間]>=[終了時間],
#cond([開始時間]>=24 .and [終了時間]=<20,0,
[開始時間]>=24 .and ([終了時間]>=20 .and [終了時間]=<24),24-[終了時間],
[開始時間]>=24 .and [終了時間]>=24,4,
([開始時間]<24 .and [開始時間]>=20) .and [終了時間]=<20,24-[開始時間],
([開始時間]<24 .and [開始時間]>=20) .and [終了時間]>20,
(24-[開始時間])+([終了時間]-20),
1,4),
1,#cond([開始時間]>=24 .or [終了時間]=<20,0,
[開始時間]>=20 .and [終了時間]=<24,[終了時間]-[開始時間],
[開始時間]>=20 .and [終了時間]>=24,24-[開始時間],
[開始時間]<20 .and [終了時間]>=24,4,
[開始時間]<20 .and [終了時間]=<24,[終了時間]-20))
26202 訂正:時間外の分別 今村 誠 2004/05/08-11:52
記事番号26195へのコメント
計算式に間違いの部分があったので、
訂正したサンプルをアップしました。
26220 Re:計算式について ほっぷ 2004/05/10-12:26
記事番号26192へのコメント
 宮城さん、今村さんどうもありがとうございます。#condの式を使って自分でいろいろ試してましたが、
こんなに複雑な使い方をしないとできないんですね。
また、わからないことがあれば書き込みをするかもしれないですがよろしくお願いします。

戻る