利用時間の計算 | |
---|---|
[196196] 利用時間の計算- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ ミケ -(2024/05/02(06:37)) □U R L/ A B C D 1 氏名 1日目 2日目 3日目 2 山田 9:00 9:15 8:50 3 山田 18:00 18:00 18:00 4 林 9:00 8:00 7:00 5 林 15:00 18:00 17:30 6 森元 7:00 7:50 9:00 7 森元 19:00 19:00 18:00 上下で引き算をしています。 9:00 8:45 9:10 6:00 10:00 10:30 12:00 11:10 9:00 引き算の結果から8:00を引いたものが 1:00 0:45 1:10 0:00 2:00 2:30 4:00 3:10 1:00 となります。 引き算の結果が <0となる場合をX 0=2:00の場合をA 2:00=<3:00の場合をB 3:00<の場合をC としてそれぞれの記号を出すと A A A X B B C C A となります。 それぞれの合計をだすと X 1 0 0 A 1 1 2 B 0 1 1 C 1 1 0 結果がとなります。 A B C D 1 氏名 1日目 2日目 3日目 2 山田 9:00 9:15 8:50 3 山田 18:00 18:00 18:00 4 林 9:00 8:00 7:00 5 林 15:00 18:00 17:30 6 森元 7:00 7:50 9:00 7 森元 19:00 19:00 18:00 この状態から次の結果を出すマクロを作成してください。 10 A B C D 11 X 1 0 0 12 A 1 1 2 13 B 0 1 1 14 C 1 1 0 |
[196197] Re[1]: 利用時間の計算- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2024/05/02(16:48)) □U R L/ こんな事かな? Sub test() Dim r As Range, RW As Long, CL As Long Dim Ary, V, AryRW, Ret() As Long Ary = Array(-2000, 480, 600, 660) Set r = Range("B2:D7") ReDim Ret(1 To 4, 1 To r.Columns.Count) With Application For CL = 1 To r.Columns.Count For RW = 1 To r.Rows.Count Step 2 V = .Round((r(RW + 1, CL) - r(RW, CL)) * 1440, 0) AryRW = .Match(V, Ary) Ret(AryRW, CL) = Ret(AryRW, CL) + 1 Next RW Next CL End With '結果表示 Range("A11:A14") = [{"X";"A";"B";"C"}] Range("B11").Resize(4, UBound(Ret, 2)) = Ret End Sub |
[196198] Re[2]: 利用時間の計算- ■ / 記事引用/メール受信=OFF■ □投稿者/ ミケ -(2024/05/02(22:18)) □U R L/ ありがとうございます。 自分では到底できませんでした。 まだわかないところはありますが、勉強してわかるようにします。 もし可能でしたら名前の隣のセルに(A列)に赤と青としてグループを入れて A B C D 1 グループ 氏名 1日目 2日目 3日目 2 赤 山田 9:00 9:15 8:50 3 赤 山田 18:00 18:00 18:00 4 赤 林 9:00 8:00 7:00 5 赤 林 15:00 18:00 17:30 6 青 森元 7:00 7:50 9:00 7 青 森元 19:00 19:00 18:00 この状態から次の結果を出すマクロを作成してください。 よろしくお願いいたします。 11〜14行目に赤グループを 16〜19行目に青グループの結果を出したいです。 10 A B C D 11 X 1 0 0 12 A 1 1 1 13 B 0 1 1 14 C 0 0 0 16 X 0 0 0 17 A 0 0 1 18 B 0 0 0 19 C 1 1 0 |
[196199] Re[3]: 利用時間の計算- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2024/05/02(23:24)) □U R L/ こんな事かな? Sub test() Dim r As Range, rG As Range, RW As Long, CL As Long Dim Ary, V, AryRW, Ret() As Long '8:00,10:00,11:00 Ary = Array(-2000, 480, 600, 660) '時間境界(1440倍して整数の分の配列とする) '- Set r = Range("C2:E7") Set rG = r.Offset(, -2).Resize(, 1) 'グループ範囲(A列) ReDim Ret(1 To 9, 1 To r.Columns.Count) '9行の結果配列に変更する With Application For CL = 1 To r.Columns.Count For RW = 1 To r.Rows.Count Step 2 V = .Round((r(RW + 1, CL) - r(RW, CL)) * 1440, 0) AryRW = .Match(V, Ary) '青なら、5行下を加算対象に変更する AryRW = AryRW + IIf(rG(RW, 1) = "青", 5, 0) Ret(AryRW, CL) = Ret(AryRW, CL) + 1 Next RW Next CL End With '結果表示 Range("A11:A19") = [{"X";"A";"B";"C";"空行";"X";"A";"B";"C"}] Range("B11").Resize(9, UBound(Ret, 2)) = Ret Range("A15").Resize(1, UBound(Ret, 2) + 1) = Empty End Sub |
[196204] Re[4]: 利用時間の計算- ■記事引用/メール受信=OFF■ □投稿者/ ミケ -(2024/05/04(05:18)) □U R L/ ありがとうございます。 説明も書いていただいて、助かります。 これから勉強していきます。 またご縁がありましたら教えてください。 |
このトピックに書きこむ |
---|