หน้าเว็บ

วันอาทิตย์ที่ 30 กันยายน พ.ศ. 2555

การตรวจสอบหมายเลข IP ว่าอยู่ใน Range ใดหรือไม่

Smile สำหรับหมายเลข IP ซึ่งต้องมองทีละชุดไปนั้นไม่สามารถใช้การตรวจสอบได้เหมือนเลขธรรมดา ต้องตรวจสอบหมายเลขเป็นชุด ๆ ไป การตรวจสอบด้วยสูตรจึงทำได้ลำบากแต่สามารถใช้ VBA เข้ามาช่วยได้ครับ

สำหรับตัวอย่าง Code ตามด้านล่างจะเป็นการนำ I3:I25 ไปตรวจสอบกับ C3:D8 ว่าอยู่ในช่วงใดหรือไม่ หากพบว่าอยู่ในช่วงใดจะเติมค่า Y ในคอลัมน์ J หากไม่พบจะเติมค่า N

ภาพประกอบการตรวจสอบ IP

IPRange

เราสามารถใช้ Code VBA ตามด้านล่างครับ

Sub CheckIPInterVal()
Dim r As Range, rAll As Range
Dim rt As Range, rtAll As Range
Dim lng As Long, ts As Variant
Dim tt As Variant, c As Boolean
With Sheets("Sheet1")
Set rAll = .Range("i3", _
.Range("i" & Rows.Count).End(xlUp))
Set rtAll = .Range("c3", _
.Range("c" & Rows.Count).End(xlUp))
End With
lng = 2
For Each r In rAll
c = False
For Each rt In rtAll
ts = Split(r, ".")
tt = Split(rt, ".")
If CInt(ts(0)) >= CInt(tt(0)) And _
CInt(ts(1)) >= CInt(tt(1)) And _
CInt(ts(2)) >= CInt(tt(2)) And _
CInt(ts(3)) >= CInt(tt(3)) Then
tt = Split(rt.Offset(0, 1), ".")
If CInt(ts(0)) <= CInt(tt(0)) And _
CInt(ts(1)) <= CInt(tt(1)) And _
CInt(ts(2)) <= CInt(tt(2)) And _
CInt(ts(3)) <= CInt(tt(3)) Then
lng = lng + 1
r.Offset(0, 1) = "Y"
c = True
Exit For
End If
End If
Next rt
If c = False Then
r.Offset(0, 1) = "N"
End If
Next r
End Sub

ไม่มีความคิดเห็น: