Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


67889 / 76738 ←次へ | 前へ→

【13399】Re:時間帯の重なり除去
発言  ちん  - 04/5/4(火) 13:57 -

引用なし
パスワード
   こんにちは、ちんといいます。
補足です。
答えのタイムチャートを表示するとき、
9時から18時まで表示すれば良いとおもうので、
以下の※印を参考にして下さい。
(MID命令で、9時〜18時までのタイムチャートをC列にセット)

以上、

▼ちん さん:
>sこー さん こんにちは、ちんといいます。
>タイムチャートで考えてみましょう。
>C列を時間の確認ように使用しますので、属性:文字列にします。
>
>考え方は、
>午前0時〜24時までの横線(一本線)を引いて下さい。
>0時10分から、10分刻みで縦線を23時50分まで引きましょう。
>-----1-----2-----3-----4 ・・・ と、いうように。
>例として、開始時間1:00〜終了時間2時30までの実績時間を求めるとしたら、
>-----*********---3-----4 ・・・
>というふうに、10分刻みで"*"マークに置き換えます。(*はダブリ防止用)
>
>というふうに、ロジックを考えると、以下のようになります。
>
>Sub ボタン1_Click()
> Dim C_bar As String
> Dim i1 As Long, i2 As Integer
> Dim Fun_bar As Integer
> Dim Fun As Integer  '<-- 10分単位の個数
> 
> For i1 = 1 To 23
>  C_bar = C_bar + "-----" + Right$(Format(i1, "00"), 1)
> Next i1
> For i1 = 1 To 4
>  a = DateDiff("n", Cells(i1, 1).Value, Cells(i1, 2).Value)
>  GoSub Time_chart
> Next i1
>
> MsgBox (Fun * 10) & "分作業しました。"
> Cells(10, 10).Value = C_bar
※ 上記の行は、不要でした。

> Exit Sub
>
>Time_chart:
> Fun_bar = a / 10 '<-- 10分単位で 1とする。(20分なら2となる)
> b = DateDiff("n", "0:00", Cells(i1, 1).Value) '<-- "*"を書き込む位置の計算
> For i2 = (b / 10) To (b / 10) + (Fun_bar - 1)
>  If Mid(C_bar, i2, 1) <> "*" Then '<-- ダブリのチェック
>   Fun = Fun + 1  '<-- 10分単位の個数を数える
>   Mid(C_bar, i2, 1) = "*"
>  End If
> Next i2
> Cells(i1, 3).Value = C_bar
※ Cells(10, 10).Value = Mid(C_bar, 54, 55)  '<---MID命令で、9時〜18時
> Return
> 
>End Sub
>
>以上参考までに、
>
>▼sこー さん:
>>皆様こんばんは。いつもいつもありがとうございます。
>>
>>この度、会社で外にでている時間帯を計算する事になったのですが、
>>2人以上いると重なってしまう時間帯がでてきまして、
>>その処理をどうすればよいのかわからず悩んでいます。
>>
>>
>>    A   B   
>>1   9:30 10:30   ・・・・・・・(60分)
>>2  11:40 12:30   ・・・・・・・(50分)
>>3  12:00 12:40   ・・・・・・・(40分)
>>4  13:00 13:50   ・・・・・・・(50分)
>>
>>
>>Bの時間からAの時間を引き、最後に合計する為に
>>
>>a = DateDiff("n", Range("a1"), Range("b1")) 
>>
>>で引き算し、forで1〜4行を計算し、合計を出したいのですが、
>>そのまま計算してしまうと全ての合計時間の200分と表示されます。
>>実際には2行目と3行目は時間帯が重なっており、11:40〜12:40なので60分、
>>実際の合計時間は170分になりますよね。
>>重なりを除去して合計できるような事は可能でしょうか?
>>
>>さらにここに
>>
>>5   9:00 14:00  ・・・・・・・(300分)
>>
>>と追加されれば、1〜4行をすべてカウントせず5行目だけの合計を出さなければならず、不勉強の私には考えつかない為、セルに色々計算式をいれて間違いだらけになりながらも、どうにか現状をしのいでおります。
>>
>>皆様、どうか良い方法があれば、ご教授ください。
>>どうぞ、よろしくお願い致します.

0 hits

【13332】時間帯の重なり除去 sこー 04/5/1(土) 20:27 質問
【13337】Re:時間帯の重なり除去 bykin 04/5/2(日) 12:12 回答
【13351】Re:時間帯の重なり除去 sこー 04/5/2(日) 21:23 質問
【13398】Re:時間帯の重なり除去 ちん 04/5/4(火) 13:29 回答
【13399】Re:時間帯の重なり除去 ちん 04/5/4(火) 13:57 発言
【13577】Re:時間帯の重なり除去 sこー 04/5/7(金) 23:42 お礼
【13404】Re:時間帯の重なり除去 Hirofumi 04/5/4(火) 16:21 回答

67889 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free