戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
時間帯ごとに重複なしのカウントがしたい

    [191979] 時間帯ごとに重複なしのカウントがしたい-

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

    □投稿者/ アーモンド -(2020/05/15(16:01))
    □U R L/

      現在、マクロを使い集計ツールを作成しています。
      マクロは勉強中でネットを参考にしてプログラムを組んでいる程度のレベルです。

      やりたいこと→10時〜17時の中で時間毎(30分や60分など)に何件(重複なしの)データが存在するかを知りたいです。
      まずは、対象のデータが開始時間と終了時間の間にあるかを見て、Dictionary関数を使い、重複確認をしているのですが、上手くいきません。
      ※開始時間と終了時間は対象のデータによって変動があります。

      ●現在のデータ
      B列とC列に何時〜何時までの時間が入っており、
      B列       C列
      2020/1/1 10:00 2020/1/1 10:30
      2020/1/1 10:30 2020/1/1 11:00



      2020/1/1 16:30 2020/1/1 17:00

      F列とG列に対象のデータが入っています。
      F列       G列
      2020/1/1 10:00 1
      2020/1/1 10:01 3
      2020/1/1 10:03 2
      2020/1/1 10:05 1



      2020/1/1 16:58 2
      2020/1/1 16:59 1

      D列に重複なしのデータのカウント数を知りたい場合はどのようにすればいいでしょか?

      B列        C列      D列
      2020/1/1 10:00 2020/1/1 10:30 3(1,2,3なので)
      2020/1/1 10:30 2020/1/1 11:00 2

      よろしくお願いいたします。

      < 使用 Excel:Excel2013、使用 OS:Windows7 >


      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [191982] Re[1]: 時間帯ごとに重複なしのカウントがしたい-

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

    □投稿者/ kazuo -(2020/05/15(18:34))
    □U R L/
      一例です。
      B列昇順でF列はB列未満の時間無いことが前提
      
      Sub syuukei()
          Dim dd
          Dim r As Range
          Dim dic As Object
          Dim kk, ss
          Dim s As String
          Set dic = CreateObject("Scripting.Dictionary")
          With Range(Cells(1, "b"), Cells(Rows.Count, "b").End(xlUp))
              s = .NumberFormatLocal
              .NumberFormatLocal = "G/標準"   'match用に一旦doubleにする
              dd = .Value
              .NumberFormatLocal = s
              For i = 1 To UBound(dd)
                  dic(dd(i, 1)) = Empty       'dicに取り込む
              Next
              For Each r In Range(Cells(1, "F"), Cells(Rows.Count, "F").End(xlUp))
                  ans = WorksheetFunction.Match(CDbl(r.Value), dd, 1) '探す
                  dic(dd(ans, 1)) = dic(dd(ans, 1)) & "," & r.Offset(, 1).Value   ',区切りで連結
              Next
              kk = dic.items
              For i = 0 To UBound(kk)
                  dic.RemoveAll
                  ss = Split(kk(i), ",")
                  For j = 2 To UBound(ss)     '最初は""
                      dic(ss(j)) = Empty      '各要素をぶち込む
                  Next
                  dd(i + 1, 1) = dic.Count    'カウント結果
              Next
              .Offset(, 2).Value = dd
          End With
      End Sub
      


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

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




    [191983] Re[2]: 時間帯ごとに重複なしのカウントがしたい-

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

    □投稿者/ kazuo -(2020/05/15(19:29))
    □U R L/
      ミスです。
                  For j = 1 To UBound(ss)     '最初は""
       2→1に変更


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

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




    [191984] Re[3]: 時間帯ごとに重複なしのカウントがしたい-

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

    □投稿者/ kazuo -(2020/05/15(19:59))
    □U R L/

      マルチでしたか。




    [192015] Re[4]: 時間帯ごとに重複なしのカウントがしたい-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ アーモンド -(2020/05/18(10:07))
    □U R L/

      ありがとうございます。
      自分の処理に組み込んでやってみます。



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

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

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


- Child Forum -
Edit:ゆう-G