Page 2 of 2

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Wed Nov 28, 2012 5:12 pm
by tstc79tt
ผลออกมาถูกต้องครับ แต่มันยังมี คล้ายๆเดิมครับ ที่ว่าเมื่อตัวเลขคล้ายคลึงกันมันจะบอกค่าออกมาเท่ากัน

เช่น 5.1.12.10 กับ 5.1.1.210

ทำให้ถึงแม้ค่าจุดทศนิยมไม่ตรงกันกับในตาราง แต่เลขชุดเดียวกันก็ขึ้น Y

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Wed Nov 28, 2012 8:48 pm
by snasui
:D ปรับสูตรใหม่เป็น

ที่ J3 คีย์

=LOOKUP(SUM(IF($C$3:$C$11<>"",IF(SUBSTITUTE($C$3:$C$11,".","")+0<=SUBSTITUTE(I3,".","")+0,IF(SUBSTITUTE($D$3:$D$11,".","")+0>=SUBSTITUTE(I3,".","")+0,1)))),{0,1},{"N","Y"})

Ctrl+Shift+Enter > Copy ลงด้านล่าง

Note: Ctrl+Shift+Enter หมายถึงเมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น {=YourFormulas(...)} ปีกกานี้คีย์เข้าไปเองไม่ได้ ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Thu Nov 29, 2012 9:47 am
by tstc79tt
ขอบคุณครับ
ผมอยากถามว่าจะมี ทางไหนมันมีปัญหาที่ให้มันแยกความแตกต่างระหว่าง 1.1.21.21 กับ 1.1.2.121ได้อย่างไรครับ :D

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Thu Nov 29, 2012 9:52 am
by snasui
:shock: ให้แนบทุกตัวอย่างในปัจจุบันที่พบว่ามีปัญหามาครับ

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Thu Nov 29, 2012 11:25 am
by tstc79tt
นี่ครับผมเขียนกำกับไว้แล้ว

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Thu Nov 29, 2012 11:43 am
by snasui
:D การเช็คหมายเลข IP คงต้องพึ่ง VBA ลองดูตัวอย่าง Code ที่นี่ครับ viewtopic.php?f=9&t=3830

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Thu Nov 29, 2012 1:25 pm
by tstc79tt

Code: Select all

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("Sheet2")
        Set rAll = Sheet2.Range("e3", _
            .Range("e" & Rows.Count).End(xlUp))
        Set rtAll = Sheet1.Range("c17", _
            .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

ผมแก้ถูกไหมครับ หากต้องการทำงานแยกชีต

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Thu Nov 29, 2012 1:26 pm
by snasui
:D ให้ถามที่ติดปัญหา ส่วนถูกหรือไม่ถูกต้องลองเองครับ

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Thu Nov 29, 2012 1:58 pm
by tstc79tt
snasui wrote::D ให้ถามที่ติดปัญหา ส่วนถูกหรือไม่ถูกต้องลองเองครับ
ได้แล้วครับ :D

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Fri Nov 30, 2012 4:45 pm
by tstc79tt
ตอนนี้ผมติดตรงที่ว่า เมื่อ มันมี ตัวอักษรอื่น มาแทรกเช่น
N/A ตอนกดรันมันขึ้นว่า Type Mismatch
0 ผมลองเปลี่ยนจาก ที่จะขึ้น N/A ให้เป็น 0 แทน คร่าวนี้มันขึ้น Script out of range ครับ

ผมต้องการใช้ N/A น่ะครับ เมื่อใช้ N/A ช่องสุดท้าย ก็ให้กลายเป็น N/A ด้วยแทนที่จะ Y หรือ N

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Fri Nov 30, 2012 5:03 pm
by snasui
:D ลองดูตัวอย่างปรับ Code เป็นด้านล่างครับ

'...Other code คือ Code อื่น ๆ ที่ไม่จำเป็นต้องปรับ

Code: Select all

'...Other code
For Each r In rAll
        c = False
        For Each rt In rtAll
            If r = "N/A" Then
                r.Offset(0, 1) = "N/A"
                c = True
                Exit For
            End If
            ts = Split(r, ".")
            tt = Split(rt, ".")
'...Other code

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่

Posted: Mon Dec 03, 2012 1:27 pm
by tstc79tt
ขอบคุณครับ