Excel VBA質問箱 IV

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

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


31040 / 76738 ←次へ | 前へ→

【50955】Re:期間が重複していないか確認する方法
発言  Lindy  - 07/8/23(木) 10:24 -

引用なし
パスワード
   みなさんこんにちは

半分遊びというか、こんな発想は受け入れられるのか?
というコードなのですがどうでしょうか?
1900/1/1〜2079/6/5の期間限定で日付のシリアル値をRowとして
Rangeに格納後Intersectで重複判定してみました。

発想の転換で楽しくコード勉強中です。


Sub test()
'####### 1900/1/1〜2079/6/5の期間限定 #######
'日付のシリアル値をRowとしてRangeに格納後Intersectで重複判定

Dim myDic As Object, i As Long, j As Long
Dim dat As Variant, key_name As Variant, item_row As Variant
Dim myRng As Range, chk_Rng As Range
Dim key_row() As String, hit_name As String

Cells.Interior.ColorIndex = xlNone
dat = Range("A2", Range("D65536").End(xlUp)).Value
Set myDic = CreateObject("Scripting.Dictionary")
j = 0
ReDim key_row(j)
For i = 1 To UBound(dat)
 If Not myDic.exists(dat(i, 1)) Then
  j = j + 1
  myDic.Add dat(i, 1), j
  ReDim Preserve key_row(j)
  key_row(j) = i
 Else
  key_row(myDic.Item(dat(i, 1))) = _
      key_row(myDic.Item(dat(i, 1))) & "," & i
 End If
Next i
key_name = myDic.keys
For i = 0 To UBound(key_name)
 item_row = Split(key_row(i + 1), ",")
 If UBound(item_row) > 0 Then
  Set myRng = Range(Cells(CLng(dat(item_row(0), 3)), 1), _
           Cells(CLng(dat(item_row(0), 4)), 1))
  For j = 1 To UBound(item_row)
   Set chk_Rng = Range(Cells(CLng(dat(item_row(j), 3)), 1), _
            Cells(CLng(dat(item_row(j), 4)), 1))
   If Not Application.Intersect(myRng, chk_Rng) Is Nothing Then
    Cells(item_row(j) + 1, 1).Resize(, 4).Interior.ColorIndex = 6
    hit_name = hit_name & vbLf & key_name(i)
   End If
   Set myRng = Union(myRng, chk_Rng)
  Next j
 End If
Next i
MsgBox "重複者リスト" & vbLf & hit_name
Set myDic = Nothing
Set myRng = Nothing
Set chk_Rng = Nothing
End Sub

0 hits

【50935】期間が重複していないか確認する方法 やました 07/8/22(水) 21:00 質問
【50937】Re:期間が重複していないか確認する方法 neptune 07/8/22(水) 21:28 発言
【50943】Re:期間が重複していないか確認する方法 やました 07/8/22(水) 23:36 お礼
【50944】Re:期間が重複していないか確認する方法 ssc 07/8/23(木) 0:23 発言
【50946】Re:期間が重複していないか確認する方法 じゅんじゅん 07/8/23(木) 6:51 発言
【50947】Re:期間が重複していないか確認する方法 ichinose 07/8/23(木) 7:47 発言
【50950】Re:期間が重複していないか確認する方法 訂... ichinose 07/8/23(木) 9:33 発言
【50951】Re:期間が重複していないか確認する方法 じゅんじゅん 07/8/23(木) 9:37 発言
【50953】Re:期間が重複していないか確認する方法 neptune 07/8/23(木) 9:54 回答
【50957】Re:期間が重複していないか確認する方法 じゅんじゅん 07/8/23(木) 10:40 発言
【50955】Re:期間が重複していないか確認する方法 Lindy 07/8/23(木) 10:24 発言
【50962】Re:期間が重複していないか確認する方法 ssc 07/8/23(木) 14:22 質問
【50963】すみませんでした。 Jaka 07/8/23(木) 15:04 発言
【51008】Re:期間が重複していないか確認する方法 ssc 07/8/24(金) 17:50 質問
【51012】Re:期間が重複していないか確認する方法 ichinose 07/8/25(土) 7:31 発言
【51013】Re:期間が重複していないか確認する方法 ssc 07/8/25(土) 12:37 質問
【51014】Re:期間が重複していないか確認する方法 ichinose 07/8/25(土) 14:45 発言
【51016】Re:期間が重複していないか確認する方法 ssc 07/8/25(土) 16:23 発言
【51017】Re:期間が重複していないか確認する方法 ssc 07/8/25(土) 16:38 お礼
【51025】Re:期間が重複していないか確認する方法 ssc 07/8/26(日) 0:10 質問
【51026】Re:期間が重複していないか確認する方法 ichinose 07/8/26(日) 0:19 発言
【51027】Re:期間が重複していないか確認する方法 ssc 07/8/26(日) 0:34 質問
【51028】Re:期間が重複していないか確認する方法 ichinose 07/8/26(日) 0:45 発言
【51030】Re:期間が重複していないか確認する方法 ssc 07/8/26(日) 1:55 質問
【51050】Re:期間が重複していないか確認する方法 ichinose 07/8/26(日) 22:18 発言
【51052】Re:期間が重複していないか確認する方法 ssc 07/8/26(日) 22:54 質問
【51053】Re:期間が重複していないか確認する方法 ssc 07/8/26(日) 23:15 質問
【51054】Re:期間が重複していないか確認する方法 ichinose 07/8/27(月) 8:04 発言
【51059】Re:期間が重複していないか確認する方法 ssc 07/8/27(月) 9:45 お礼

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