Page 1 of 2

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

Posted: Tue Nov 27, 2012 9:24 am
by tstc79tt
หากมีเลขที่มันหลาย ชุด หลายช่วงค่าที่จะเอาไปเทียบหละครับ ผมควรจะใช้คำสั่งประมาณไหน หากหลังจากเทียบแล้ว หากเลขเว่อชั่น อยู่ใน ช่วงใดช่วงหนี่งในตารางให้ บอก Yes หากอยู่นอกเหนือ range ทุก range ในตารางเทียบให้ ขึ้น N อ่ะครับ ผมออกแบบไว้ประมาณนี้(ในไฟล์) แต่ผมงงเรื่องฟังชั่นน่ะครับ ขอคำแนะนำด้วยครับ ขอบคุณครับ

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

Posted: Tue Nov 27, 2012 10:25 am
by bank9597
:D ยังไม่เข้าใจครับ ลองอธิบายเพิ่มว่า y และ n มาได้อย่างไหรเทียบจากไหนไปไหน

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

Posted: Tue Nov 27, 2012 11:13 am
by tstc79tt
bank9597 wrote::D ยังไม่เข้าใจครับ ลองอธิบายเพิ่มว่า y และ n มาได้อย่างไหรเทียบจากไหนไปไหน
เลขจากตารางแรก คือช่วงเวอชั่นที่สามารถใช้งานได้

แล้วก็ตารางที่2 ตารางของไฟลที่ใช้ว่ามีเวอชั่นอะไร และช่องสุดท้าย คือ บอกว่า อยู่ในช่วง Start ถึง End ของช่วงตัวเลขบรรทัดไหนหรือไม่ครับ

เช่น ตารางแรก บรรทัด 5.3.12.0 - 5.3.12.5 และ ไฟลเว่อชั่น DEVELOP อยู่ที่ 6.1.2.4 ซึ่ง ไม่อยู่ในช่วงตัวเลขนั้น แต่ไปอยู่ ในช่วงตัวเลข ที่กำหนดในบรรทัดต่อไป
จึงขึ้นเป็น Y หรือ Yes ครับ

ตัวอย่างอีกอันคือ บรรทัดสุด ท้ายของตารางที่ 2 มีเลขเวอชั่นอยู่ที่ 5.3.2.12 เมื่อเทียบทุกบรรทัดแล้วซึ่งไม่อยู่ใน Range ตัวเลขใดๆ ในตารางที่จึงทำให้ขึ้น ว่า N หรือ No ครับ

พอจะมีแนวทางให้ผมพอไปประยุกค์ใช้ต่อไหมครับ T^T

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

Posted: Tue Nov 27, 2012 11:57 am
by bank9597
:D ที่ J3 คีย์ =IF(ISNA(INDEX($B$3:$B$11,MATCH(1,IF(LEFT(SUBSTITUTE($I3,".","")+0,4)+0>=LEFT(SUBSTITUTE($C$3:$C$11,".","")+0,4)+0,IF(LEFT(SUBSTITUTE($I3,".","")+0,4)+0<=LEFT(SUBSTITUTE($D$3:$D$11,".","")+0,4)+0,1)),0))),"N","Y") กด Ctrl+Shift+Enter คัดลอกลงมา

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

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

Posted: Tue Nov 27, 2012 2:10 pm
by tstc79tt
bank9597 wrote::D ที่ J3 คีย์ =IF(ISNA(INDEX($B$3:$B$11,MATCH(1,IF(LEFT(SUBSTITUTE($I3,".","")+0,4)+0>=LEFT(SUBSTITUTE($C$3:$C$11,".","")+0,4)+0,IF(LEFT(SUBSTITUTE($I3,".","")+0,4)+0<=LEFT(SUBSTITUTE($D$3:$D$11,".","")+0,4)+0,1)),0))),"N","Y") กด Ctrl+Shift+Enter คัดลอกลงมา

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

ใช่หละครับ

มีคำถามครับ
หากผมมีเลข เวอชั่นมากกว่า 4หลัก เช่น 6.13.3.13 นี่เราควรเปลี่ยน ตรงไหนบ้างครับ ผมลองเปลี่ยน แค่จากเลขของ char จาก 4 เป็น 12 จะไม่ส่งผลกระทบอะไรต่องานใช่ไหมครับ

แล้วก็
ผมจะก็อปลากสูตรไปบรรทัดล่างยังไงให้ ตรงที่ผมเน้น สีแดงไม่เปลี่ยนอ่ะครับ ตอนผมลากลงมันเปลี่ยนตลอดเลย ปกติมันก็ไม่เปลี่ยนหรือเป็นเพราะผม ใช้ก็อปโค๊ดมาแล้วลาก ไม่ได้พิมเอง :$

ที่ J3 คีย์ =IF(ISNA(INDEX($B$3:$B$11,MATCH(1,IF(LEFT(SUBSTITUTE($I3,".","")+0,4)+0>=LEFT(SUBSTITUTE($C$3:$C$11,".","")+0,4)+0,IF(LEFT(SUBSTITUTE($I3,".","")+0,4)+0<=LEFT(SUBSTITUTE($D$3:$D$11,".","")+0,4)+0,1)),0))),"N","Y")

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

Posted: Tue Nov 27, 2012 2:32 pm
by bank9597
:shock: ในสูตร ผมทำการล๊อคช่วงเซลล์ไว้แล้วครับ โดยใช้ $ เข้าไปช่วยล๊อค

$B$3:$B$11
$C$3:$C$11
$D$3:$D$11
ทั้งสามช่วงเซลล์นี้คือการล๊อคไว้กับที่แล้วครับ ลองดูตามไฟล์แนบของผมที่แนบไปครับ

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

Posted: Tue Nov 27, 2012 2:41 pm
by tstc79tt
หากผมมีเลข เวอชั่นมากกว่า 4หลัก เช่น 6.13.3.13 นี่เราควรเปลี่ยน ตรงไหนบ้างครับ ผมลองเปลี่ยน แค่จากจำนวนของ char จาก 4 เป็น 12 จะไม่ส่งผลกระทบอะไรต่อฟังชั่นใช่ไหมครับ

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

Posted: Tue Nov 27, 2012 2:46 pm
by bank9597
tstc79tt wrote:หากผมมีเลข เวอชั่นมากกว่า 4หลัก เช่น 6.13.3.13 นี่เราควรเปลี่ยน ตรงไหนบ้างครับ ผมลองเปลี่ยน แค่จากจำนวนของ char จาก 4 เป็น 12 จะไม่ส่งผลกระทบอะไรต่อฟังชั่นใช่ไหมครับ
:D ในกรณีที่คุณมีเลขเวอร์ชันที่ไม่เท่ากัน 4 หลักบ้าง 6 หลักบ้าง คุณต้องใช้ if เข้าช่วยอีก
แต่นั่นก้หมายความว่า สูตรก็จะยาวเพิ่มไปอีกครับ

ลองแนบไฟล์มาดู พร้อมคำอธิบายครับ

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

Posted: Tue Nov 27, 2012 3:00 pm
by tstc79tt
bank9597 wrote:
tstc79tt wrote:หากผมมีเลข เวอชั่นมากกว่า 4หลัก เช่น 6.13.3.13 นี่เราควรเปลี่ยน ตรงไหนบ้างครับ ผมลองเปลี่ยน แค่จากจำนวนของ char จาก 4 เป็น 12 จะไม่ส่งผลกระทบอะไรต่อฟังชั่นใช่ไหมครับ
:D ในกรณีที่คุณมีเลขเวอร์ชันที่ไม่เท่ากัน 4 หลักบ้าง 6 หลักบ้าง คุณต้องใช้ if เข้าช่วยอีก
แต่นั่นก้หมายความว่า สูตรก็จะยาวเพิ่มไปอีกครับ

ลองแนบไฟล์มาดู พร้อมคำอธิบายครับ

ผมเผลอเซฟทับไฟล์ที่ผมทำมาหลายวัน ขอเวลาทำใหม่สักครู่ครับ T^T นรกบนดินแท้ๆ

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

Posted: Tue Nov 27, 2012 3:43 pm
by tstc79tt
Sub ImportTextFile()
Dim rPaht As String
Dim rFileName As String
rPaht = Sheet1.Range("C7")
rFileName = Sheet1.Range("C8")
Cells.Clear
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & rPaht & "\" & rFileName & ".log", Destination:= _
Range("$A$4"))
.Name = Range("C8").Value
.TextFilePlatform = 874
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileOtherDelimiter = ":"
.Refresh BackgroundQuery:=False
End With
Sheet1.Range("C7") = rPaht
Sheet1.Range("C8") = rFileName
End Sub



มันผิดตรงไหนหรือครับผมหาไม่เจอ มันฟ้องแต่ว่า

runtime error 5
invalid procedure call or argument

หรือเพราะผมกำหนด เซลอันไหนผิด ผมหาไม่เจอเชคแล้วหลายรอบครับ ขอบคุณครับ

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

Posted: Tue Nov 27, 2012 7:31 pm
by bank9597
:lol: อันนี้ผมก็ไม่สามารถทราบได้ครับ

ลองตั้งคำถามในกระทู้ใหม่ เพราะเป็นเรื่องใหม่ เมื่อได้ข้อมูลที่ต้องการแล้ว ค่อยมาถามต่อน่ะครับ

ในการถาม VBA ต้องแนบไฟล์ด้วยเสมอครับ

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

Posted: Wed Nov 28, 2012 9:40 am
by tstc79tt
:D ขอบคุณครับเรื่อง VBA ผมแก้ได้แล้วครับ

นี่ครับคำถามเดิมคือ หาก เปลี่ยน char เป็น 12 จะเป็นอะไรในระยะยาวรึเปล่า ผมไฟล์มาให้ด้วยครับ

แล้วก็อีกคำถามคือหาก ผมอยากแยก ตัวอักษรของอีกเซลให้เหลือเฉพาะส่วนที่ต้องการแล้วนำไปใส่อีกเซลนี่ใช้คำสั่งไหนหรือครับ

เช่น bayecmms_chkpackage.log ใน cell c2 ผมต้องการแค่ bayecmms มาโชว์ที่cell d2 โดยอัติโนมัตินี่ฟั่งชั่นไหนหรอครับ

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

Posted: Wed Nov 28, 2012 10:05 am
by snasui
tstc79tt wrote:
bank9597 wrote::D ยังไม่เข้าใจครับ ลองอธิบายเพิ่มว่า y และ n มาได้อย่างไหรเทียบจากไหนไปไหน
เลขจากตารางแรก คือช่วงเวอชั่นที่สามารถใช้งานได้

แล้วก็ตารางที่2 ตารางของไฟลที่ใช้ว่ามีเวอชั่นอะไร และช่องสุดท้าย คือ บอกว่า อยู่ในช่วง Start ถึง End ของช่วงตัวเลขบรรทัดไหนหรือไม่ครับ

เช่น ตารางแรก บรรทัด 5.3.12.0 - 5.3.12.5 และ ไฟลเว่อชั่น DEVELOP อยู่ที่ 6.1.2.4 ซึ่ง ไม่อยู่ในช่วงตัวเลขนั้น แต่ไปอยู่ ในช่วงตัวเลข ที่กำหนดในบรรทัดต่อไป
จึงขึ้นเป็น Y หรือ Yes ครับ

ตัวอย่างอีกอันคือ บรรทัดสุด ท้ายของตารางที่ 2 มีเลขเวอชั่นอยู่ที่ 5.3.2.12 เมื่อเทียบทุกบรรทัดแล้วซึ่งไม่อยู่ใน Range ตัวเลขใดๆ ในตารางที่จึงทำให้ขึ้น ว่า N หรือ No ครับ

พอจะมีแนวทางให้ผมพอไปประยุกค์ใช้ต่อไหมครับ T^T
ลองตามนี้ครับ

เซลล์ J3 คีย์

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

Enter > Copy ลงด้านล่าง

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

Posted: Wed Nov 28, 2012 10:22 am
by bank9597
:D คุณต้องระบุด้วยว่าจะยึดตัวเลขกี่หลัก ปกติแล้วจะมี 4 หลัก เช่น 5.3.1.1 เป็นต้น

สมมุติ 5.3.2.1 - 5.3.8.1
เวอร์ชัน 5.3.1.1 ก็จะเข้าเงื่อนไขด้วย หากยึดแค่ 2 หลักแรก แต่หากยึด 3 หลักแรก เวอร์ชัน 5.3.1.1 ก็จะไม่เข้าเงื่อขไขเวอร์ชั่นด้านบน
หากไม่ระบุชัดเจน ก็ยากต่อการหาคำตอบครับ

ส่วนที่ถามเรื่องการแยกคำนั้น
ที่ D2 คีย์ =LEFT(C2,FIND("_",C2)-1)

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

Posted: Wed Nov 28, 2012 10:29 am
by snasui
:D
bank9597 wrote: คุณต้องระบุด้วยว่าจะยึดตัวเลขกี่หลัก ปกติแล้วจะมี 4 หลัก เช่น 5.3.1.1 เป็นต้น
:roll: ที่ผมโพสต์ไปก่อนหน้าดูทุกหลักครับ :mrgreen:

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

Posted: Wed Nov 28, 2012 10:32 am
by tstc79tt
bank9597 wrote::D คุณต้องระบุด้วยว่าจะยึดตัวเลขกี่หลัก ปกติแล้วจะมี 4 หลัก เช่น 5.3.1.1 เป็นต้น

สมมุติ 5.3.2.1 - 5.3.8.1
เวอร์ชัน 5.3.1.1 ก็จะเข้าเงื่อนไขด้วย หากยึดแค่ 2 หลักแรก แต่หากยึด 3 หลักแรก เวอร์ชัน 5.3.1.1 ก็จะไม่เข้าเงื่อขไขเวอร์ชั่นด้านบน
หากไม่ระบุชัดเจน ก็ยากต่อการหาคำตอบครับ

ส่วนที่ถามเรื่องการแยกคำนั้น
ที่ D2 คีย์ =LEFT(C2,FIND("_",C2)-1)

5.3.6.7 ยึด 4 จุดทศนิยมครับ แต่ใน หนึ่งจุดทศนยิม มีได้สูงสุด 3 ตัวเลข เช่น 111.222.333.444 ประมาณนี้ครับ

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

Posted: Wed Nov 28, 2012 3:10 pm
by tstc79tt
คือผมลองๆหลายรูปแบบแล้วอ่ะครับ

หาก มันเป็น 5 ตัวเลขขึ้น

เช่น 6.5.1.10 กับ 6.5.11.0 หรือ

5.12.3.13 กับ 5.1.23.13 มันแยกออกจากกันไม่ได้ครับ T^T

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

Posted: Wed Nov 28, 2012 3:21 pm
by bank9597
:D ได้ลองใช้สูตรที่อาจารย์คนควนตอบหรือยังครับ ได้ผลอย่างไรบ้าง

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

Posted: Wed Nov 28, 2012 4:54 pm
by tstc79tt
จากไฟล์ครับ มันขึ้น No หมดเลยไม่รู้ผมพิมอะไรผิดรึเปล่า

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

Posted: Wed Nov 28, 2012 4:58 pm
by snasui
:D ปรับสูตรที่ J3 เป็นด้านล่างครับ

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

Enter > Copy ลงด้านล่าง