| 
    
     |  | 少し内容が煩雑なので具体例で示したいと思います。 以下のようなデータが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がふられるようにしたいです。
 start    end    ID    状態の説明
 20    100    1    1の範囲に包括されている
 500    1200    1    1の範囲に一部重なっている
 1500    1800    ハズレ    範囲内に無い
 2500    3500    2    2の範囲に一部重なっている
 8000    8700    5    5の範囲に一部重なっている
 13500    14000    ハズレ    8のstart値とend値が一致しているが範囲外とする
 15000    15400    ハズレ    8のend値とstart値が一致しているが範囲外とする
 14000    15500    8    8の範囲を包括している
 17500    19000    10    10の範囲を包括している
 5500    7500    4    4の範囲を包括している
 VLOOKUPで
 =IF(A3="","",VLOOKUP(A3,sheet1!$B$2:$D$202,3,TRUE))のようにして行ってはみたものの、抜け番のデータをデータベースに入れなくてはいけなかったり、
 5500    7500    4    4の範囲を包括している
 という最後のパターンのようなものを判別することは難しく、そもそもVLOOKUPでどうこうしようとすることが不適当なのだと思っていますが、手法が思いつきません。
 簡単な説明は以上ですが、実際のデータはもう少し列があり、それを含めた検索をしたいと考えております。
 本来のデータはsheet1に
 class  start  end  ID
 chr1    0    1000    1
 chr1    2000    3000    2
 chr1    4000    5000    3
 chr1    6000    7000    4
 chr1    8000    9000    5
 chr1    10000    11000    6
 chr1    12000    13000    7
 chr1    14000    15000    8
 chr1    16000    17000    9
 chr1    18000    19000    10
 chr2    0    1000    11
 chr2    2000    3000    12
 chr2    4000    5000    13
 chr2    6000    7000    14
 chr2    8000    9000    15
 chr2    10000    11000    16
 chr2    12000    13000    17
 chr2    14000    15000    18
 chr2    16000    17000    19
 chr2    18000    19000    20
 chr3    1300    1500    21
 chr3    1700    2000    22
 chr3    2300    2500    23
 chr3    2800    3000    24
 chr3    3300    3500    25
 chr3    3800    4000    26
 chr3    4300    4500    27
 chr3    4800    5000    28
 chr3    5300    5500    29
 chr3    5800    6000    30
 このような形になっていて、いちばん左のクラスが存在し、
 sheet2の検索側も
 class    start    end  ID
 chr1    20    100
 chr1    500    1200
 chr1    1500    1800
 chr1    2500    3500
 chr1    8000    8700
 chr1    13500    14000
 chr1    15000    15400
 chr1    14000    15500
 chr1    17500    19000
 chr1    5500    7500
 としたいです。つまり、
 class    start    end  ID
 chr1    20    100
 chr1    500    1200
 chr1    1500    1800
 chr1    2500    3500
 chr3    20    100
 chr3    500    1200
 chr3    1500    1800
 chr3    2500    3500
 という風に検索をしようとしたときにIDにはsheet1のclassを認識してその部分だけを検索対象にしてほしく、先ほどのデータベースだとするならば結果として以下のようになるような感じなVBAを考えております。
 class    start    end  ID
 chr1    20    100    1
 chr1    500    1200    1
 chr1    1500    1800    ハズレ
 chr1    2500    3500    2
 chr3    20    100    ハズレ
 chr3    500    1200    ハズレ
 chr3    1500    1800    22
 chr3    2500    3500    24
 VBAで何とかするしかないかと思っています。どなたか教えていただけませんか?
 
 
 |  |