Excel VBA質問箱 IV

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

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


9687 / 76734 ←次へ | 前へ→

【72606】Re:数値範囲のデータから数値がその範囲にあるか、もしくは含むかを調べる方法
発言  kanabun  - 12/8/28(火) 10:38 -

引用なし
パスワード
   ▼T.K さん:

先ほどの判定図(4ケース)より以下のように考えてみました。

Case[1]
 a1━━━━━━━━a2
b1────b2


Case[2]
 a1━━━━━━━━a2
   b1─────b2

Case[3]
 a1━━━━━━━━a2
      b1──────b2

Case[4]
 a1━━━━━━━━a2
b1────────────b2


(判別方法)
b1 が a1 より下のとき
    b2 が a1 より大きい  [1]と [4] をカバー

b1 が a1 より大きいとき、
    b1 が a2 より小さい [2]と [3] をカバー

とりあえず、以上、2種類です。

Sub test3()
  Dim dic As Object
  Dim i As Long, n As Long
  Dim r As Range
  Dim v, ID
  
  Set dic = CreateObject("Scripting.Dictionary")
  Set r = Worksheets("Sheet1").Cells(1).CurrentRegion
  v = Intersect(r, r.Offset(1)).Value
  For i = 1 To UBound(v)
    If Not dic.Exists(v(i, 1)) Then
      Set dic(v(i, 1)) = _
        CreateObject("Scripting.Dictionary")
    End If
    dic(v(i, 1))(v(i, 4)) = Array(v(i, 2), v(i, 3))
  Next
    
  Dim a1, a2
  Dim b1, b2
  Dim vv
  Set r = Worksheets("Sheet2").Cells(1).CurrentRegion
  With Intersect(r, r.Offset(1))
    v = .Resize(, 3).Value
    vv = .Columns(4).Cells.Value
  End With
  For i = 1 To UBound(v)  'Sheet2 2行目から
    vv(i, 1) = Empty
    If dic.Exists(v(i, 1)) Then
      a1 = v(i, 2)
      a2 = v(i, 3)
      vv(i, 1) = "ハズレ"
      For Each ID In dic(v(i, 1)).Keys()
        b1 = dic(v(i, 1))(ID)(0)
        b2 = dic(v(i, 1))(ID)(1)
        Select Case b1
         Case Is < a1
           If b2 > a1 Then
             vv(i, 1) = ID
             Exit For
           End If
         Case Is > a1
           If b1 < a2 Then
             vv(i, 1) = ID
             Exit For
           End If
        End Select
      Next
    End If
  Next
  r.Item(2, 4).Resize(UBound(vv)).Value = vv
  
End Sub

2 hits

【72485】数値範囲のデータから数値がその範囲にあるか、もしくは含むかを調べる方法 T.K 12/8/15(水) 20:24 質問
【72486】Re:数値範囲のデータから数値がその範囲に... UO3 12/8/15(水) 22:09 発言
【72489】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/15(水) 22:38 発言
【72491】Re:数値範囲のデータから数値がその範囲に... UO3 12/8/15(水) 22:48 発言
【72492】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/16(木) 0:37 発言
【72493】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/16(木) 0:51 発言
【72494】Re:数値範囲のデータから数値がその範囲に... UO3 12/8/16(木) 8:16 発言
【72495】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/16(木) 9:03 発言
【72500】Re:数値範囲のデータから数値がその範囲に... UO3 12/8/16(木) 12:54 発言
【72505】Re:数値範囲のデータから数値がその範囲に... UO3 12/8/17(金) 21:25 発言
【72596】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/27(月) 21:46 質問
【72598】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/27(月) 23:55 発言
【72602】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/28(火) 9:51 質問
【72603】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/28(火) 10:07 発言
【72605】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/28(火) 10:12 発言
【72606】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/28(火) 10:38 発言
【72607】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/28(火) 11:27 お礼
【72608】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/28(火) 11:56 お礼
【72630】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/29(水) 19:29 発言
【72631】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/29(水) 19:43 発言
【72612】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/28(火) 15:49 質問
【72613】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/28(火) 18:37 質問
【72628】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/29(水) 18:53 発言
【72629】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/29(水) 19:12 発言
【72632】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/29(水) 20:17 発言
【72634】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/29(水) 21:35 発言
【72635】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/29(水) 21:40 発言
【72657】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/31(金) 15:49 発言
【72659】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/31(金) 16:25 発言
【72660】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/31(金) 17:30 質問
【72664】Re:数値範囲のデータから数値がその範囲に... kanabun 12/8/31(金) 19:35 発言
【72666】Re:数値範囲のデータから数値がその範囲に... T.K 12/8/31(金) 19:45 お礼

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