Excel VBA質問箱 IV

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

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


9802 / 76734 ←次へ | 前へ→

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

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

>以下のようなデータがsheet1にあるとします。
>start  end  ID
>0    1000    1
>2000    3000    2
>4000    5000    3
>6000    7000    4
>8000    9000    5
>10000    11000    6
>12000    13000    7
>14000    15000    8
>16000    17000    9
>18000    19000    10
>Sheet2において以下のようなデータをセットします。
>start    end  ID
>20    100
>500    1200
>1500    1800
>2500    3500
>8000    8700
>13500    14000
>15000    15400
>14000    15500
>17500    19000
>5500    7500
>その際ID列に以下のようにsheet1のIDがふられるようにしたいです。

1案ですが、
数値の範囲が重なってるか、外れてるか、調べるのを
セルの範囲が重なってるか、外れてるか、調べることによって
代用したらどうでしょう。
たとえば、 start=20 End=100 という範囲は
[A20:A100]というA列のセル範囲と考えるわけです。
これと調べたいSheet1に書かれた複数範囲と比較するわけです。
含まれるかどうかは Intersectメソッドというのを使います。
(ただし A0 というセルは無いので、もとの数値に +1 した行を
セル範囲として比較します)
Sub test()
  Dim CRange() As Range
  Dim i As Long, n As Long
  Dim v
  
  With Worksheets("Sheet1")
    v = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 2).Value
  End With
  n = UBound(v)
  ReDim CRange(1 To n)
  For i = 1 To n
    Set CRange(i) = Excel.Range("A" & (v(i, 1) + 1), "A" _
            & (v(i, 2) + 1))
  Next
  
  Dim c As Range
  Dim t As Range, x As Range
  Dim ok As Long
  With Worksheets("Sheet2")
    For Each c In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
      Set t = Excel.Range("A" & (c.Value + 1), "A" & _
              (c.Offset(, 1).Value + 1))
      ok = 0
      For i = 1 To n
        Set x = Nothing
        On Error Resume Next
        Set x = Intersect(CRange(i), t)
        On Error GoTo 0
        If Not x Is Nothing Then
          If x.Count = 1 Then
            c.Offset(, 2).Value = "ハズレ"
          Else
            c.Offset(, 2).Value = i
          End If
          ok = 1
          Exit For
        End If
      Next
      If ok = 0 Then
        c.Offset(, 2).Value = "ハズレ"
      End If
    Next
  End With
  
End Sub
1 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 お礼

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