EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ผมไม่เข้าใจอ่ะครับ สมมติว่าในไฟล์ตัวอย่างคือสิ่งที่ตอ้งการพิมพ์ทั้งหมดแล้วหล่ะครับ ? แล้วตัวที่เป็นคีย์หลักที่ใช้ในการดึง อิงจาก Order ได้หรือไม่ครับ ?bank9597 wrote: ลองทำฟอร์มอีกฟอร์ม เพื่อดึงออร์เดอร์ที่ต้องการพิมพ์ออกมาว่า ต้องการพิมพ์ออร์เดอร์ จะได้ใช้สูตรง่ายขึ้น
ตัวอย่างที่ทำมาใช้ดึงโดยตรงจาก DB อีกทั้งยังไม่มีตัวที่เป็นคีย์หลักที่ใช้ในการดึงข้อมูลครับ
ไม่เป็นไรครับ แนวทางการทำไม่จำเป็นต้องเหมือนกันครับ แต่ที่ผมถนัดคือการดึงข้อมูลมาจาก Database ก่อน เช่น ต้องการดูข้อมูลออร์เดอร์ 101 ผมก็คีย์รหัสออร์เดอร์ลงไปแล้วดึงข้อมูลขึ้นมา เมื่อข้อมูลมาแสดงแล้ว หากต้องการพิมพ์ กดให้กดปุ่มพิมพ์ ข้อมูลที่อยู่ในฟอร์มก็จะถูกดึงไปจัดวางตามฟอร์มที่เราต้องการพิมพ์อีกทีอย่างถูกต้องครับผมไม่เข้าใจอ่ะครับ สมมติว่าในไฟล์ตัวอย่างคือสิ่งที่ตอ้งการพิมพ์ทั้งหมดแล้วหล่ะครับ ? แล้วตัวที่เป็นคีย์หลักที่ใช้ในการดึง อิงจาก Order ได้หรือไม่ครับ ?
ขอบคุณ คุณ bank9597 มากครับสำหรับแนวทาง VBA ยังไม่เคยแตะเลยครับbank9597 wrote:ไม่เป็นไรครับ แนวทางการทำไม่จำเป็นต้องเหมือนกันครับ แต่ที่ผมถนัดคือการดึงข้อมูลมาจาก Database ก่อน เช่น ต้องการดูข้อมูลออร์เดอร์ 101 ผมก็คีย์รหัสออร์เดอร์ลงไปแล้วดึงข้อมูลขึ้นมา เมื่อข้อมูลมาแสดงแล้ว หากต้องการพิมพ์ กดให้กดปุ่มพิมพ์ ข้อมูลที่อยู่ในฟอร์มก็จะถูกดึงไปจัดวางตามฟอร์มที่เราต้องการพิมพ์อีกทีอย่างถูกต้องครับผมไม่เข้าใจอ่ะครับ สมมติว่าในไฟล์ตัวอย่างคือสิ่งที่ตอ้งการพิมพ์ทั้งหมดแล้วหล่ะครับ ? แล้วตัวที่เป็นคีย์หลักที่ใช้ในการดึง อิงจาก Order ได้หรือไม่ครับ ?
อันนี้เป็นวิธีการที่ผมใช้อยู่ สำหรับที่คุณ walrus ถามมา ผมเกรงว่าผมจะใช้สูตรในการทำยากกว่าของคุณ walrus เสียอีกครับ
อีกวิธีนึงคือใช้ VBA ครับ แต่ต้องเขียนโค๊ดมาดูก่อน จะได้ปรับปรุงต่อไปครับ
ผมก็ไม่เคยใช้ Mail Merge พอๆกับคุณ walrus ไม่เคยแตะ VBA เลยครับขอบคุณ คุณ bank9597 มากครับสำหรับแนวทาง VBA ยังไม่เคยแตะเลยครับ
ถ้าใช้แนวทาง Mail Merge พอทำได้หรือเปล่าครับ ? กำลังศึกษาว่า Mail Merge มันจะทำได้มั้ย
ก่อนหน้านี้ผมเคยใช้ Mail Merge พิมพ์ซองงานแต่งงานตัวเอง
กรณีต้องการให้เป็นอัตโนมัติคงต้องพึ่ง VBA หรือสูตรร่วมกับ VBA เพื่อ Run ทีละหน้าแล้วสั่งพิมพ์ ผมได้ทำตัวอย่างการใช้สูตรและ Scroll bar เพื่อเลื่อนไปยังหน้าถัด ๆ ไป ดูได้ตามไฟล์แนบครับwalrus wrote:ผมต้องการนำข้อมูลจากฐานข้อมูล ดึงไปอีกชีทเพื่อไว้ทำการพิมพ์ออกมา ในรูปแบบคล้ายๆ Slip
ไม่ทราบว่ามีวิธีอะไรที่ดึงข้อมูลไปได้บ้างครับ ?
แบบฟอร์มจะเป็นขนาดกระดาษ A4 แต่แบ่งเป็น 6 ช่อง
โดยสมมติว่ามี Order 5 Order ให้ดึงออกมาแล้วหยุดที่ 1 หน้า ช่องที่ 6 ที่ไม่มีออร์เดอร์จะว่างไว้
สมมติอีกตัวอย่าง
หากมี Order 10 Order จะดึงออกมาได้ 2 หน้า โดย หน้าที่ 1 order ครบ 6 ช่อง แต่หน้าที่ 2 order จะมีแค่ 4 และ 2 ช่องล่างสุดว่างไว้ และหยุดส่วนที่ว่างไว้เท่านี้น่ะครับ ไม่มีช่องว่าง เลยไปหน้า 3 , 4 , 5 .......
ในไฟล์ตัวอย่าง ผมใส่สูตร Vlookup ไว้ดึงคำตอบที่ต้องการออกมาเฉยๆ ครับ ผมเกรงว่าหากมี Order มากๆ ผมมานั่งใส่ Vlookup ทีละ Order ไม่ไหวครับ อยากให้ดึงออกมาได้เลยเหมือนจดหมายเวียนน่ะครับ
รบกวนหน่อยนะครับ
ขอบคุณมากครับ สะดวกมากๆเลยครับ ถ้าไม่เป็นการรบกวนผมอยากทราบขั้นตอนการทำได้หรือไม่ครับ ?snasui wrote:กรณีต้องการให้เป็นอัตโนมัติคงต้องพึ่ง VBA หรือสูตรร่วมกับ VBA เพื่อ Run ทีละหน้าแล้วสั่งพิมพ์ ผมได้ทำตัวอย่างการใช้สูตรและ Scroll bar เพื่อเลื่อนไปยังหน้าถัด ๆ ไป ดูได้ตามไฟล์แนบครับwalrus wrote:ผมต้องการนำข้อมูลจากฐานข้อมูล ดึงไปอีกชีทเพื่อไว้ทำการพิมพ์ออกมา ในรูปแบบคล้ายๆ Slip
ไม่ทราบว่ามีวิธีอะไรที่ดึงข้อมูลไปได้บ้างครับ ?
แบบฟอร์มจะเป็นขนาดกระดาษ A4 แต่แบ่งเป็น 6 ช่อง
โดยสมมติว่ามี Order 5 Order ให้ดึงออกมาแล้วหยุดที่ 1 หน้า ช่องที่ 6 ที่ไม่มีออร์เดอร์จะว่างไว้
สมมติอีกตัวอย่าง
หากมี Order 10 Order จะดึงออกมาได้ 2 หน้า โดย หน้าที่ 1 order ครบ 6 ช่อง แต่หน้าที่ 2 order จะมีแค่ 4 และ 2 ช่องล่างสุดว่างไว้ และหยุดส่วนที่ว่างไว้เท่านี้น่ะครับ ไม่มีช่องว่าง เลยไปหน้า 3 , 4 , 5 .......
ในไฟล์ตัวอย่าง ผมใส่สูตร Vlookup ไว้ดึงคำตอบที่ต้องการออกมาเฉยๆ ครับ ผมเกรงว่าหากมี Order มากๆ ผมมานั่งใส่ Vlookup ทีละ Order ไม่ไหวครับ อยากให้ดึงออกมาได้เลยเหมือนจดหมายเวียนน่ะครับ
รบกวนหน่อยนะครับ
ที่ต้องก็อบปี้ ไปวางที่ B4,D4,F4 ต้องแก้ให้มัน Match กับหัวเรื่องด้วยใช่มั้ยครับ ผมก็อปปี้ไปอย่างเดียวมันเป็นแต่ออร์เดอร์อย่างเดียว แต่พอลองแก้ให้มัน match กันแล้ว OK แล้วครับsnasui wrote:
- ที่ B2 คีย์
=INDEX(Database!$B$3:$G$1000,COUNTIF(A$2:A2,A2)+6*($J$1-1),MATCH(A2,Database!$B$2:$G$2,0))
Enter > Copy ไปวางที่ B4, D4, F4
ขึ้นอยู่กับวิธีการ Copy และ Paste ครับ ผม Copy และ Pasteโดยไม่ต้องแก้สูตรเพิ่มเติมโดยwalrus wrote:ที่ต้องก็อบปี้ ไปวางที่ B4,D4,F4 ต้องแก้ให้มัน Match กับหัวเรื่องด้วยใช่มั้ยครับ ผมก็อปปี้ไปอย่างเดียวมันเป็นแต่ออร์เดอร์อย่างเดียว แต่พอลองแก้ให้มัน match กันแล้ว OK แล้วครับ