戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
利用時間の計算

    [196196] 利用時間の計算-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ ミケ -(2024/05/02(06:37))
    □U R L/

        A   B      C    D
      1 氏名  1日目    2日目  3日目
      2 山田  9:00




    [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


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [196204] Re[4]: 利用時間の計算-

    記事引用/メール受信=OFF■

    □投稿者/ ミケ -(2024/05/04(05:18))
    □U R L/

      ありがとうございます。
      説明も書いていただいて、助かります。
      これから勉強していきます。
      またご縁がありましたら教えてください。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G