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

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

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

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

CheckIPInterval
ภาพ 1 การตรวจสอบ IP

เราสามารถใช้ 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

Revised: January 29, 2017 at 07:56

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top