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

ปรับสูตรใหม่เป็น
ที่ 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ได้อย่างไรครับ

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่
Posted: Thu Nov 29, 2012 9:52 am
by snasui

ให้แนบ
ทุกตัวอย่างในปัจจุบันที่พบว่ามีปัญหามาครับ
Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่
Posted: Thu Nov 29, 2012 11:25 am
by tstc79tt
นี่ครับผมเขียนกำกับไว้แล้ว
Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่
Posted: Thu Nov 29, 2012 11:43 am
by snasui

การเช็คหมายเลข 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

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

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

ลองดูตัวอย่างปรับ 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
ขอบคุณครับ