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

ยังไม่เข้าใจครับ ลองอธิบายเพิ่มว่า y และ n มาได้อย่างไหรเทียบจากไหนไปไหน
Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่
Posted: Tue Nov 27, 2012 11:13 am
by tstc79tt
bank9597 wrote:
ยังไม่เข้าใจครับ ลองอธิบายเพิ่มว่า 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

ที่ 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:
ที่ 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

ในสูตร ผมทำการล๊อคช่วงเซลล์ไว้แล้วครับ โดยใช้ $ เข้าไปช่วยล๊อค
$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 จะไม่ส่งผลกระทบอะไรต่อฟังชั่นใช่ไหมครับ

ในกรณีที่คุณมีเลขเวอร์ชันที่ไม่เท่ากัน 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 จะไม่ส่งผลกระทบอะไรต่อฟังชั่นใช่ไหมครับ

ในกรณีที่คุณมีเลขเวอร์ชันที่ไม่เท่ากัน 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

อันนี้ผมก็ไม่สามารถทราบได้ครับ
ลองตั้งคำถามในกระทู้ใหม่ เพราะเป็นเรื่องใหม่ เมื่อได้ข้อมูลที่ต้องการแล้ว ค่อยมาถามต่อน่ะครับ
ในการถาม VBA ต้องแนบไฟล์ด้วยเสมอครับ
Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่
Posted: Wed Nov 28, 2012 9:40 am
by tstc79tt

ขอบคุณครับเรื่อง 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:
ยังไม่เข้าใจครับ ลองอธิบายเพิ่มว่า 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

คุณต้องระบุด้วยว่าจะยึดตัวเลขกี่หลัก ปกติแล้วจะมี 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
bank9597 wrote: คุณต้องระบุด้วยว่าจะยึดตัวเลขกี่หลัก ปกติแล้วจะมี 4 หลัก เช่น 5.3.1.1 เป็นต้น

ที่ผมโพสต์ไปก่อนหน้าดูทุกหลักครับ

Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่
Posted: Wed Nov 28, 2012 10:32 am
by tstc79tt
bank9597 wrote:
คุณต้องระบุด้วยว่าจะยึดตัวเลขกี่หลัก ปกติแล้วจะมี 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

ได้ลองใช้สูตรที่อาจารย์คนควนตอบหรือยังครับ ได้ผลอย่างไรบ้าง
Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่
Posted: Wed Nov 28, 2012 4:54 pm
by tstc79tt
จากไฟล์ครับ มันขึ้น No หมดเลยไม่รู้ผมพิมอะไรผิดรึเปล่า
Re: การเทียบตัวเลขจากตารางว่าอยู่ในช่วงที่ต้องการหรือไม่
Posted: Wed Nov 28, 2012 4:58 pm
by snasui

ปรับสูตรที่ 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 ลงด้านล่าง