Page 1 of 1
รบกวนการทำ Validation
Posted: Sat Dec 17, 2011 11:01 pm
by wisit
รบกวนช่วยหาสูตรการทำ Validation ของคอล์ลัมน์ B โดยคีย์ได้ไม่เกิน 3 อักษร โดยหลักที่ 1 จะคีย์ได้เฉพาะตัวเลข หลักที่ 2 จะคีย์ได้เฉพาะตัวเลขและตัวอักษร แต่หลักที่ 3 จะต้องเป็นอักษรเท่านั้น และถ้าคีย์ 2 หลัก จะต้องเป็นตัวเลขและตัวอักษรเท่านั้น ซึ่งผมทำสูตรดังนี้
=AND(LEN(B1)<=3,ISNUMBER(LEFT(B1)+0),TEXT(RIGHT(B1)+0),B1>="000",C1<="999") แต่เมื่อคีย์ตัวเลขและตามข้อความมันก็ฟ้องข้อความเตือนไม่รู้ผมเขียนสูตรผิดหรือเปล่า ส่วนสูตรนี้ได้จากการประยุกต์จากสูตรอาจารย์คนควนครับ

Re: รบกวนการทำ Validation
Posted: Sat Dec 17, 2011 11:35 pm
by snasui

ลองตามนี้ครับ
ที่ Validation คีย์สูตร
=AND(LEN(B1)<=3,OR(AND(ISNUMBER(LEFT(B1)+0),NOT(ISNUMBER(MID(B1,2,1)+0))),AND(ISNUMBER(LEFT(B1)+0),NOT(ISNUMBER(MID(B1,2,1)+0)),NOT(ISNUMBER(RIGHT(B1)+0))))
)
Re: รบกวนการทำ Validation
Posted: Sun Dec 18, 2011 7:55 pm
by wisit
อาจารย์ครับเวลาว่างสูตรใน Validation มันฟ้องเตือนว่า
The Formula you typed contains an error ครับ
Re: รบกวนการทำ Validation
Posted: Sun Dec 18, 2011 10:36 pm
by snasui
Re: รบกวนการทำ Validation
Posted: Sun Dec 18, 2011 10:56 pm
by wisit
ขอบคุณครับอาจารย์

ทำได้แล้ว แต่ติดนิดหนึ่งครับ ตรงเมื่อเราคีย์ 1h มันจะฟ้อง ซึ่งผมไม่้ต้องการให้ฟ้อง แต่ถ้าคีย์ตัวเลขอย่างเดียวโดยไม่มีตัวอักษรให้มันฟ้อง ซึ่งก็ตรงตามที่ต้องการ ติดที่เมื่อเราคีย์ 2 หลัก กล่าวคือ หลักแรกต้องเป็นตัวเลข หลักที่สองต้องเป็นตัวอักษร (ถ้ามีสองหลัก) แต่ถ้ามี 3 หลัก 2 หลักแรกต้องเป็นตัวเลขเท่านั้น หลักที่สามต้องเป็นตัวอักษรเท่านั้น รบกวนอาจารย์อีกรอบครับ

และรอบกวนอาจารย์ช่วยอธิบายสูตรดังกล่าวหน่อยครับ ขอบคุณอาจารย์มาก ๆ ครับ
Re: รบกวนการทำ Validation
Posted: Sun Dec 18, 2011 11:15 pm
by snasui

เปลี่ยนสูตรใน Validation เป็นตามด้านล่างครับ
=OR(AND(LEN(B1)=2,ISNUMBER(LEFT(B1)+0),NOT(ISNUMBER(MID(B1,2,1)+0))),AND(LEN(B1)=3,ISNUMBER(LEFT(B1)+0),ISNUMBER(MID(B1,2,1)+0),NOT(ISNUMBER(RIGHT(B1)+0))))
คำอธิบายส่วนประกอบหลัก
- จากสูตรข้างบนหมายถึง AND(LEN(B1)=2,ISNUMBER(LEFT(B1)+0),NOT(ISNUMBER(MID(B1,2,1)+0))) หรือ AND(LEN(B1)=3,ISNUMBER(LEFT(B1)+0),ISNUMBER(MID(B1,2,1)+0),NOT(ISNUMBER(RIGHT(B1)+0))) เป็นจริงหรือไม่ ถ้าเป็นจริงอย่างใดอย่างใดอย่างหนึ่งไม่ว่าชุดหน้าหรือชุดหลังก็ถือว่าเป็นจริง คือสามารถคีย์ได้
- สำหรับชุดแรกคือ AND(LEN(B1)=2,ISNUMBER(LEFT(B1)+0),NOT(ISNUMBER(MID(B1,2,1)+0))) หมายถึง LEN(B1)=2 และ ISNUMBER(LEFT(B1)+0) และ NOT(ISNUMBER(MID(B1,2,1)+0)) เป็นจริงหรือไม่ ซึ่งต้องเป็นจริงทั้งสามเงื่อนไขถึงจะถือว่าเป็นจริง ถ้าเป็นเท็จแค่เงื่อนไขเดียวก็จะถือว่าเป็นเท็จ
- สำหรับชุดที่สองคือ AND(LEN(B1)=3,ISNUMBER(LEFT(B1)+0),ISNUMBER(MID(B1,2,1)+0),NOT(ISNUMBER(RIGHT(B1)+0))) หมายความว่า LEN(B1)=3 และ ISNUMBER(LEFT(B1)+0) และ ISNUMBER(MID(B1,2,1)+0) และ NOT(ISNUMBER(RIGHT(B1)+0)) เป็นจริงหรือไม่ ซึ่งจะต้องเป็นจริงทั้ง 4 เงื่อนไขจึงจะถือว่าเป็นจริง ถ้าเป็นเท็จแค่เงื่อนไขเดียวจะถือว่าเป็นเท็จ
Re: รบกวนการทำ Validation
Posted: Mon Dec 19, 2011 2:40 am
by wisit

ขอบคุณอาจารย์มากครับ ได้ตรงตามที่ต้องการ ผมคิดว่าจะต้องใช้ VBA ทำซะอีก ขอบคุณอาจารย์เป็นอย่างสูง ที่แนะนำและให้ความรู้แก่กระผม

Re: รบกวนการทำ Validation
Posted: Wed Dec 21, 2011 3:51 pm
by wisit
อาจารย์ครับ ผมรบกวนอีกครั้งครับ พอดีพึ่งเจอปัญหาครับ จากสูตรที่อาจารย์เคยแนะนำ
=AND(LEN(F3)=3,ISNUMBER(LEFT(F3)+0),ISNUMBER(RIGHT(F3)+0),F3>="000",F3<="999") (จริง ๆ อาจารย์แนะนำแค่การคีย์เพียง 2 หลัก แต่ผมได้ปรับเปลี่ยนเป็น 3 หลักเองครับ)
ซึ่งมันมีปัญหาคือ เมื่อเราคีย์ 1/3 หรือ 1*4 โปรแกรมมันจะไม่เตือน แต่ถ้าคีย์ *14 โปรแกรมมันจะเตือน กล่าวคือ หากคีย์หลักที่ 2 ซึ่งไม่ได้เป็นตัวเลขมันจะไม่ฟ้อง ซึ่งผมไม่รู้จะใช้สูตรใดดีในการแก้ปัญหาตรงค่าหลักที่ 2 หากใช้สูตร MID ซึ่งเป็นสูตรตัดตัวอักษรใช่หรือเปล่าครับอาจารย์ ซึ่งผมไม่รู้จะใช้ิสูตรใดดีครับ รบกวนท่านอาจารย์ช่วยด้วยครับ
Re: รบกวนการทำ Validation
Posted: Wed Dec 21, 2011 5:11 pm
by snasui

แสดงว่าเงื่อนไขคือต้องเป็นตัวเลขทั้ง 3 ตัวห้ามเป็นอักขระอื่นใช่หรือไม่ครับ

Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 7:20 am
by wisit
ใช่ครับอาจารย์ ต้องเป็นตัวเลขทั้ง 3 หลักครับ รบกวนอาจารย์ช่วยแนะนำสูตรด้วยครับ
Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 10:31 am
by snasui

กรณีต้องเป็นตัวเลขทั้ง 3 ตัวสามารถเปลี่ยนสูตรเป็นด้านล่างครับ
=AND(LEN(F3)=3,F3+0>=0,F3+0<=999)
Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 11:02 am
by wisit
อาจารย์ครับสูตรใช้ได้ผลดีครับ

แต่ติดตรงเมื่อเราคีย์ค่า .11 ค่า 1.1 และค่า 11. มันจะไม่ฟ้องเตือนครับ รบกวนอาจารย์ช่วยแนะนำอีกครั้งครับ และต้องของพระคุณอาจารย์อย่างสูงครับที่กรุณาแนะนำสูตรต่าง ๆ ทีดีแก่ผม

Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 11:46 am
by snasui

แสดงว่าแจ้งเงื่อนไขมาไม่ถูกต้อง ซึ่งผมได้ถามย้ำไปแล้วตามด้านล่างครับ

ลองปรับมาเองดูก่อนตามเงื่อนไขจริง ๆ ที่ต้องการ ติดตรงไหนก็มาถามกันต่อครับ
snasui wrote: 
แสดงว่าเงื่อนไขคือต้องเป็นตัวเลขทั้ง 3 ตัวห้ามเป็นอักขระอื่นใช่หรือไม่ครับ

wisit wrote:ใช่ครับอาจารย์ ต้องเป็นตัวเลขทั้ง 3 หลักครับ รบกวนอาจารย์ช่วยแนะนำสูตรด้วยครับ
Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 1:47 pm
by wisit
ครับอาจารย์เดี๋ยวผมจะลองทำดูครับ ขอบคุณอาจารย์มากครับ

Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 5:34 pm
by snasui

ต้องขออภัยคุณ wisit ครับ ผมเข้าใจคลาดเคลื่อนเอง เงื่อนไขชัดเจนแล้วครับ คือเป็นตัวเลขทั้งสามหลัก
ลองเปลี่ยนสูตรเป็นตามด้านล่างครับ
=And(len(F3)=3,Isnumber(Mid(F3,1,1)+0),Isnumber(Mid(F3,2,1)+0),Isnumber(Mid(F3,3,1)+0))
Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 6:08 pm
by wisit
เย้ ใช้ได้ตรงตามต้องการเลยครับ

ขอบพระคุณอาจารย์มากครับ สุดยอดจริง ๆ ครับ แต่ผมขอรบกวนอาจารย์ช่วยอธิบายความหมายและวิธีใช้ เพราะผมยังไม่ค่อยเข้าใจในสูตรดังกล่าวครับ
Isnumber(Mid(F3,1,1)+0) มีความหมายอย่างไร (+ 0 เป็นการเปลี่ยนจากตัวอักษรให้เป็นตัวเลขใช่หรือเปล่าครับ)
Isnumber(Mid(F3,2,1)+0) มีความหมายอย่างไร
Isnumber(Mid(F3,3,1)+0) มีความหมายอย่างไร
รบกวนอาจารย์ด้วยครับ และขอบคุณอาจารย์มาก ๆ ครับ ที่ช่วยแนะนำสูตร ไม่งั้นผมคงใช้เวลาคิดเป็นเดือน หรือไม่ก็คิดไม่ออกครับ

Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 7:47 pm
by snasui

ฟังก์ชั่น Mid เป็นการตัดข้อความตามตำแหน่งต่าง ๆ โดยระบุว่าต้องการตัดมาจำนวนกี่อักขระ เช่น Mid(A1,
1,
2) ความหมายคือ ให้ตัดข้อความใน A1 โดยเริ่มจากอักขระที่
1 มาจำนวน
2 อักขระ
ฟังก์ชั่น Isnumber เป็นการตรวจสอบว่าค่านั้น ๆ มีรูปแบบเป็นตัวเลขหรือไม่ หากเป็นตัวเลขจะแสดงค่า True หากไม่ใช่จะแสดงค่า False
Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 10:24 pm
by wisit
ขอบคุณครับอาจารย์ที่อธิบายจนพอที่จะเข้าใจขึ้นมาบ้าง แต่สูตร (Mid(F3,3,1)+0) ค่า + 0 เป็นการเปลี่ยนจากตัวอักษรให้เป็นตัวเลขใช่หรือเปล่าครับ

ไม่มั่นใจเลยถามเพื่อความชัวร์คร้บ
Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 10:28 pm
by snasui

เข้าใจถูกต้องแล้วครับ

Re: รบกวนการทำ Validation
Posted: Thu Dec 22, 2011 10:39 pm
by wisit

ขอบพระคุณอาจารย์มากครับ
