Page 1 of 2
ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Mon Dec 05, 2011 10:21 pm
by มัลลิกา
สูตรที่ใช้เป็น VLOOKUP ค่ะ หนู๋สงสัยว่าสูตรผิดตรงไหน เพราะ ข้อมูลที่ค้นหาผ่านรหัสต้องการให้ขึ้นรายละเอียดที่เลือกไว้ถึงไม่โชว์
จากการดึงข้อมูลใน worksheet รายชื่อสมาชิก มาโชว์ในworksheet Data Customer หน้าชีต Lock สูตรที่ใช้ก็ทำงานได้ แต่พอ หน้า Register และ Register Lock ก็ใช้สูตรเดียวกันแต่ ดึงข้อมูลจาห หน้า Lock แต่สูตรไม่ทำงาน มีวิธีการแก้ปัญหาอย่างไรบ้างคะ
และ หน้า PrintOut ตรง I5 ควรใช้สูตรอะไร เพื่อที่เราจะได้ทราบว่ามีสมาชิิกกี่คนแล้วที่มาลงทะเบียนแล้วสามารถปริ้นได้ ส่วน I6 และ I7 ใส่เลข รหัส หรือ ใส่ เลขที่ เราใช้จาก I5 คะ
แนบไฟล์มา 2 ไฟล์ งาน
รบกวน อาจารย์ และ ผู้รู้ทุกท่านมาช่วยแก้ไขข้อข้องใจให้ด้วยค่ะ
ขอบคุนค่ะ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Mon Dec 05, 2011 10:45 pm
by snasui
มัลลิกา wrote:จากการดึงข้อมูลใน worksheet รายชื่อสมาชิก มาโชว์ในworksheet Data Customer
ที่อ้างอิงถึงนั้นคือ Workbook ครับ เรียกว่าไฟล์ก็ได้ ไม่ใช่ Worksheet หรือ Sheet หรือ ชีท
ที่สูตรแสดงผลเป็น #N/A เนื่องจากว่าเป็นการ Vlookup โดยนำ Text ไปเทียบกับ Number
ยกตัวอย่างเช่น ชีท PrintOut เซลล์ I2 มีค่า 010
มี Format เป็น Text และได้นำค่านี้ไปใช้ที่เซลล์ G1 เพื่อหาเลขที่ใบเสร็จจาก Register!$
B$5:$O$299 โดยที่คอลัมน์ B ของชีท Register
มี Format เป็น Number จึงไม่สามารถ Lookup กันได้ ค่าผิดพลาดอื่น ๆ ก็ผิดพลาดในลักษณะเดียวกัน การดูว่าอันไหนเป็น Text เป็น Number อ่านจากที่นี่ครับ
http://snasui.blogspot.com/2010/10/excel.html
มัลลิกา wrote:และ หน้า PrintOut ตรง I5 ควรใช้สูตรอะไร เพื่อที่เราจะได้ทราบว่ามีสมาชิกกี่คนแล้วที่มาลงทะเบียนแล้วสามารถปริ้นได้ ส่วน I6 และ I7 ใส่เลข รหัส หรือ ใส่ เลขที่ เราใช้จาก I5 คะ
ตรงนี้อ่านแล้วแล้วไม่เข้าใจ นับจากไฟล์ไหน ชีทไหน แสดงตัวอย่างคำตอบที่ต้องการมาด้วยเพื่อจะได้คำนวณเปรียบเทียบได้ครับ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Mon Dec 05, 2011 11:57 pm
by มัลลิกา
snasui wrote:ตรงนี้อ่านแล้วแล้วไม่เข้าใจ นับจากไฟล์ไหน ชีทไหน แสดงตัวอย่างคำตอบที่ต้องการมาด้วยเพื่อจะได้คำนวณเปรียบเทียบได้ครับ
คือ จากหน้า Register สมมุติว่า มีจำนวนสมาชิกทั้งหมด 150 คน
ในหน้า PrintOut ใน เซลล์ I5 ควรใช้สูตรอะไร เพื่อที่เราจะได้ทราบว่ามีสมาชิก 150 คน ที่มาลงทะเบียนในหน้า Register ส่วน I6 และ I7 คือ เซลล์ ที่กำหนดว่าจะเริ่มปริ้นคนแรก ถึง คนสุดท้าย จากคนที่มาลงทะเบีียน
เช่น จาก 150 คน มีลำดับที่ 1-150 แต่ต้องการเลือก 45-77
หรือต้องกำหนด รหัสสมาชิก เช่น 00008 - 00155
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 10:39 am
by มัลลิกา
ถามต่อค่ะ คือ หน้า PrintOut การสั่งพิมพ์ผ่าน แมโคร ทำไม I2 เปลี่ยนค่าในเซลล์เองคะ จาก ที่ ใส่รหัส 00097 เปลี่ยนเป็น 97 จึงทำให้ข้อมูลที่ปริ้นออกมาเป็นค่าที่ผิดพลาดค่ะ
ควรแก้ไขยังไงคะ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 10:56 am
by มัลลิกา
นี่เป็นรูปกล่องข้อความหลังจากที่ ทำการบันทึกข้อมูล
หลัง จากการบันทึกข้อมูลแล้ว จะมีวิธีแก้ปัญหาจากกล่องข้อความที่เกิดขึ้นได้อย่างไรคะ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 11:38 am
by ChoBkuN
ผมของลองตอบนะครับ
I5 ที่ให้นับจำนวนคนที่มาลงทะเบียน
ผมใช้สูตร =COUNTA(Register!B5:B1000000)
ผมเห็นว่ารหัสสมาชิกมันเป็นข้อความ จึงเลือกใช้ Counta
กล่องข้อความปกติถ้ามันขึ้น ผมจะเลือก ติ๊กถูก ออก แล้วกด(ทำต่อไป)
เสร็จแล้วเวลา Save ครั้งอื่นๆ มันจะไม่เช็คตรวจสอบข้อความอีก
(แต่มันก็คงเป็นวิธีการที่ไม่ดีเท่าไหร่ แต่ผมก็ไม่ค่อยสนใจ Save ได้ก็ ok)
I2 คิดว่าเวลาปริ้นมันคงมองเป็น value ครับ
ถ้าใส่ ' (ฝนทอง, -->Aphostophe's) ลงไปหน้า 00097 น่าจะไม่มีปัญหาครับ เพื่อที่จะได้เป็น text
I6 I7 ไม่เข้าใจครับ ตอนแรกว่าปริ้นช่วง 1 - 5 แต่ลงทะเบียนบางสมาชิก เช่น 3 ก็ไม่ได้ลง ยังต้องปริ้นหรือเปล่า ?
ผิดถูกอย่างไร รออาจารย์ชี้แนะครับ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 1:14 pm
by snasui
มัลลิกา wrote:คือ จากหน้า Register สมมุติว่า มีจำนวนสมาชิกทั้งหมด 150 คน
ในหน้า PrintOut ใน เซลล์ I5 ควรใช้สูตรอะไร เพื่อที่เราจะได้ทราบว่ามีสมาชิก 150 คน ที่มาลงทะเบียนในหน้า Register ส่วน I6 และ I7 คือ เซลล์ ที่กำหนดว่าจะเริ่มปริ้นคนแรก ถึง คนสุดท้าย จากคนที่มาลงทะเบีียน
เช่น จาก 150 คน มีลำดับที่ 1-150 แต่ต้องการเลือก 45-77
หรือต้องกำหนด รหัสสมาชิก เช่น 00008 - 00155
ChoBkuN wrote: เมื่อ: 06 ธ.ค. 2011 11:38
ผมของลองตอบนะครับ
I5 ที่ให้นับจำนวนคนที่มาลงทะเบียน
ผมใช้สูตร =COUNTA(Register!B5:B1000000)
ผมเห็นว่ารหัสสมาชิกมันเป็นข้อความ จึงเลือกใช้ Counta
สามารถใช้ Count ได้เช่นกันครับ รหัสสมาชิกในชีท Register เป็น Number ที่เป็นว่ามี 0 นำหน้าเกิดจากการกำหนด Format ไม่ได้เป็น Text ครับ
มัลลิกา wrote:ถามต่อค่ะ คือ หน้า PrintOut การสั่งพิมพ์ผ่าน แมโคร ทำไม I2 เปลี่ยนค่าในเซลล์เองคะ จาก ที่ ใส่รหัส 00097 เปลี่ยนเป็น 97 จึงทำให้ข้อมูลที่ปริ้นออกมาเป็นค่าที่ผิดพลาดค่ะ
ควรแก้ไขยังไงคะ
การใช้ Macro เติมค่าให้หากจำเป็นว่าต้องกำหนด Format ใหม่ก็ต้องเขียน Code ให้กำหนด Format ให้ด้วยครับ ลองส่งไฟล์ที่แนบ Macro มาแล้วซึ่งนามสกุลจะต้องเป็น .xls หรือ .xlsm แต่ไม่ใช่ .xlsx ครับ
มัลลิกา wrote:นี่เป็นรูปกล่องข้อความหลังจากที่ ทำการบันทึกข้อมูล
หลัง จากการบันทึกข้อมูลแล้ว จะมีวิธีแก้ปัญหาจากกล่องข้อความที่เกิดขึ้นได้อย่างไรคะ
เนื่องจากเป็นไฟล์รุ่น 2003 แต่มา Save ในรุ่น 2007 เป็นต้นไปโปรแกรมจะฟ้องเสมอว่าคุณสมบัติบางอย่างที่เราเพิ่มเติมเข้าไปด้วยรุ่นที่ใหม่กว่าจะสูญหาย หากไม่ต้องการให้ตรวจสอบไฟล์ในอีกในคราวหลังก็ให้ปลดเครื่องหมายที่ ตรวจสอบความเข้ากันได้เมื่อบันทึกสมุดงานนี้ออกเช่นที่คุณ ChoBkuN แนะนำครับ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 1:25 pm
by มัลลิกา
ChoBkuN wrote:ผมของลองตอบนะครับ
I5 ที่ให้นับจำนวนคนที่มาลงทะเบียน
ผมใช้สูตร =COUNTA(Register!B5:B1000000)
ผมเห็นว่ารหัสสมาชิกมันเป็นข้อความ จึงเลือกใช้ Counta
แล้วสูตรนี้ควรใส่ที่ ชีท ไหน เซลล์ที่เท่าไหร่ถึงจะได้คำตอบคะ
snasui wrote:การใช้ Macro เติมค่าให้หากจำเป็นว่าต้องกำหนด Format ใหม่ก็ต้องเขียน Code ให้กำหนด Format ให้ด้วยครับ ลองส่งไฟล์ที่แนบ Macro มาแล้วซึ่งนามสกุลจะต้องเป็น .xls หรือ .xlsm แต่ไม่ใช่ .xlsx ครับ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 1:39 pm
by ChoBkuN
มัลลิกา wrote:ChoBkuN wrote:ผมของลองตอบนะครับ
I5 ที่ให้นับจำนวนคนที่มาลงทะเบียน
ผมใช้สูตร =COUNTA(Register!B5:B1000000)
ผมเห็นว่ารหัสสมาชิกมันเป็นข้อความ จึงเลือกใช้ Counta
แล้วสูตรนี้ควรใส่ที่ ชีท ไหน เซลล์ที่เท่าไหร่ถึงจะได้คำตอบคะ
--->> Printout เซลล์ I5 ครับ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 1:45 pm
by มัลลิกา
ChoBkuN wrote:มัลลิกา wrote:ChoBkuN wrote:ผมของลองตอบนะครับ
I5 ที่ให้นับจำนวนคนที่มาลงทะเบียน
ผมใช้สูตร =COUNTA(Register!B5:B1000000)
ผมเห็นว่ารหัสสมาชิกมันเป็นข้อความ จึงเลือกใช้ Counta
แล้วสูตรนี้ควรใส่ที่ ชีท ไหน เซลล์ที่เท่าไหร่ถึงจะได้คำตอบคะ
--->> Printout เซลล์ I5 ครับ
แนบไฟล์ที่ใสสูตรมาค่ะ ยังไงช่วยดูแล้วแนะนำด้วยนะคะ ว่ายังผิดพลาดตรงไหนบ้าง
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 1:46 pm
by snasui

สำหรับตัวอย่างการปรับปรุง Code ดูตามด้านล่างครับ
Code: Select all
Sub print_Click()
Start = Range("Start")
Finish = Range("Finish")
For i = Val(Start) To Val(Finish)
Range("NO") = i
Range("NO") = Application.Text(Range("NO"), "00000")
ActiveSheet.Range("A1:G17").PrintOut
Next i
MsgBox "Completed!", vbOKOnly, "Print Routing Slip"
End Sub
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 1:50 pm
by snasui

จากไฟล์แนบ
มัลลิกา wrote:ใส่สูตรแล้วเป็นแบบนี้ ค่ะ ทีนี้จะรุ้ได้ไงคะว่าสูตรนี้ทำงานได้จิง
เซลล์ที่เป็นสูตรให้จัด Format เป็น General ครับ ไม่ใช่จัด Format เป็น Text วิธีแก้คือคลิกขวา > Format Cells... > แถบ Number เลือก General > OK > กดแป้น F2 > Enter เพื่อทำการ Active ให้ทำงานรูปแบบที่เพิ่งกำหนด
จากไฟล์ที่แนบมาล่าสุดคอลัมน์ B ในชีท Register เป็น Text สูตรต้องเป็น
Counta ถึงจะทำงานได้ถูกต้องครับ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 1:51 pm
by มัลลิกา
snasui wrote:
สำหรับตัวอย่างการปรับปรุง Code ดูตามด้านล่างครับ
ขอบคุณ ที่ปรับปรุง โค้ด ให้ค่ะ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 1:59 pm
by มัลลิกา
snasui wrote:
จากไฟล์แนบ
เซลล์ที่เป็นสูตรให้จัด Format เป็น General ครับ ไม่ใช่จัด Format เป็น Text วิธีแก้คือคลิกขวา > Format Cells... > แถบ Number เลือก General > OK > กดแป้น F2 > Enter เพื่อทำการ Active ให้ทำงานรูปแบบที่เพิ่งกำหนด
จากไฟล์ที่แนบมาล่าสุดคอลัมน์ B ในชีท Register เป็น Text สูตรต้องเป็น
Counta ถึงจะทำงานได้ถูกต้องครับ
นี่คือผลที่ได้หลังจาก เลือก General แล้ว แต่ จะนวนที่ได้ มีค่าเป็น 1 สาเหตุมาจากอะไรคะ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 2:02 pm
by snasui

เพราะว่าไฟล์เป็น .xls มีบรรทัดได้แค่ 65536 บรรทัด แต่สูตรให้นับถึงบรรทัดที่ 1000000 จึงเป็นค่าผิดพลาดและนับได้แค่ 1 ครับ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 2:04 pm
by ChoBkuN
อ่า ถูกต้องนะครับ v_v
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 2:07 pm
by มัลลิกา
snasui wrote:
เพราะว่าไฟล์เป็น .xls มีบรรทัดได้แค่ 65536 บรรทัด แต่สูตรให้นับถึงบรรทัดที่ 1000000 จึงเป็นค่าผิดพลาดและนับได้แค่ 1 ครับ
หนู เข้าใจ แล้ว ค่ะ ขอบคุณอาจารย์ที่แนะนำแนวความคิดที่ถูกต้องค่ะ
หนูขอถามต่อนะคะ
จาก หน้า PrintOut ใน เซลล์ I6 และ I7
จะต้องเป็น รหัสที่เราต้องการสั่งพิมพ์เท่านั้นใช่ไหมคะ เช่น 00097 - 00098
หรือ
จะต้อง สั่งพิมพ์ ตาม จำนวนในเซลล์ I5 เช่น I5 = 20 สั่งพิมพ์ ตั้งแต่ 5-15 ใช่ไหมคะ
หากหนูเข้าใจผิด ขอให้ อาจารย์ช่วยแนะนำด้วยค่ะ
รบกวนด้วยนะคะ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 2:10 pm
by มัลลิกา
ChoBkuN wrote:อ่า ถูกต้องนะครับ v_v
สูตรใช่ไหมคะ ที่ถูกต้องแล้ว

Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 2:28 pm
by snasui
มัลลิกา wrote:หนูขอถามต่อนะคะ
จาก หน้า PrintOut ใน เซลล์ I6 และ I7
จะต้องเป็น รหัสที่เราต้องการสั่งพิมพ์เท่านั้นใช่ไหมคะ เช่น 00097 - 00098
จะต้องเป็นรหัสที่เราต้องการสั่งพิมพ์ คำตอบคือ ใช่ครับ กรอกรหัสเริ่มต้นที่ I6 กรอกรหัสสิ้นสุดที่ I7
ส่วน
หรือจะต้อง สั่งพิมพ์ ตาม จำนวนในเซลล์ I5 เช่น I5 = 20 สั่งพิมพ์ ตั้งแต่ 5-15 ใช่ไหมคะ
ไม่ได้เขียนไว้ใน Code ครับ และความหมายที่ถามไม่ค่อยเคลียร์ครับ ถ้าสั่งพิมพ์ 20 ใบควรจะเริ่มตั้งแต่เลขใด ๆ นับไปอีก 20 ใบเช่นนี้เป็นต้น นั่นหมายถึงว่าต้องมีค่าเริ่มต้นไปให้ครับ
Re: ช่วย แนะนำหน่อยค่ะ ว่าทำไมสูตรที่ใส่ไปไม่ถูกตรงไหน
Posted: Tue Dec 06, 2011 2:34 pm
by มัลลิกา
snasui wrote:มัลลิกา wrote:หนูขอถามต่อนะคะ
จาก หน้า PrintOut ใน เซลล์ I6 และ I7
จะต้องเป็น รหัสที่เราต้องการสั่งพิมพ์เท่านั้นใช่ไหมคะ เช่น 00097 - 00098
จะต้องเป็นรหัสที่เราต้องการสั่งพิมพ์ คำตอบคือ ใช่ครับ กรอกรหัสเริ่มต้นที่ I6 กรอกรหัสสิ้นสุดที่ I7
ขอบคุณค่ะ อาจารย์ ที่ทำให้หนูได้ความรู้หลายๆๆอย่าง หาก ว่าหนูมีข้อสงสัย หนูคงต้องรบกวนอาจารย์ให้มาช่วยชี้แนะ ในข้อสงสัยเหล่านั้นอีกนะคะ
เวลานี้ก็ขอขอบคุณอาจารย์ และ คุณ ChoBkuN ค่ะ