Page 2 of 3

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Wed Feb 22, 2012 2:00 pm
by snasui
:D อธิบายมาพอสังเขปครับว่า ต้องการทำอะไร ปัญหาคืออะไร ต้องการคำตอบเป็นอย่างไร เพื่อให้สะดวกในการค้นหาของเพื่อน ๆ เพราะการค้นหาของเวบนั้นไม่สามารถค้นเข้าไปถึงไฟล์แนบได้ครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Wed Feb 22, 2012 2:10 pm
by YOYIYOYI
ตัวอย่างยกมาแค่ 4 เดือนครับ ที่ทำไฮไลน์ไว้ครับต้องการพิมพ์ A1:L13 เป็นเดือนมกราคม ผมต้องซ่อนตั้งแต่ คอลัม M1:AD13พอสิ้นเดือน ก้อจะเป็นเดือน กุมภาพันธ์ ครับ ต้องการพิมพ์ผมก็ จะซ่อน G1:L13 ซึ่งจะเป็นของเดือน มกราคม แล้ว M1:R13 ก็จะมาแทนครับ เป็นเดือน กุมภาพันธ์ และต้องซ่อน R1:AD13 อีกถ้าจะพิมพ์ เดือน กุมภาพันธ์ ก็เป็นแบบนี้ไปทุกเดือนนะครับซึ่งมันลำบากมากครับเนื่องจากไฟล์งานจริงคอลัมที่ต้องการพิมพ์มันเยอะกว่านี้นะครับ อาจารย์พอจะมีวิธีแก้และแนะนำได้ไหมครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Wed Feb 22, 2012 2:43 pm
by snasui
:D ตัวอย่างการ Set Print Area โดยเราสามารถกำหนดพื้นที่ที่ต้องการไว้ก่อน จากนั้นเมื่อตอน Print เราสามารถที่จะเลือก Print เฉพาะหน้าใด ๆ ได้ครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Wed Feb 22, 2012 3:20 pm
by YOYIYOYI
ขอบคุณครับอาจารย์ เดี๋ยวผมต้องไปทำเองก่อนครับที่บริษัท ที่บ้านไม่สามารถทำได้ แล้วจะกลับมาแจ้งผลครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Thu Feb 23, 2012 4:36 pm
by YOYIYOYI
สามารถทำตามอาจารย์ได้แล้วครับ แต่ติดอยู่อีกนิดครับ อาจารย์ จากตัวอย่างที่อาจารย์ให้มานะครับ คือถ้าต้องการพิมพ์ของเดือน มกราคม จะมีคอลัม A ถึง คอลัม F ติดมาให้ได้ตามความต้องการครับ แต่พอเดือน กุมภาพันธ์ นะครับ จะทำยังไงให้เวลาพิมพ์แล้ว จะมีคอลัม A ถึง คอลัม F ติดมาเหมือนเดือน มกราคม คือต้องการให้ติดมาทุกๆเดือนนะครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Thu Feb 23, 2012 4:46 pm
by snasui
:D ลองตามนี้ครับ

เข้าเมนู Page Layout > Print Titles > คลิกลงในช่องตามภาพด้านล่าง > คลุมคอลัมน์ที่ต้องการจะให้พิมพ์ซ้ำ > OK

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Fri Feb 24, 2012 4:25 pm
by YOYIYOYI
:D ขอบคุณอาจารย์มากครับผม ได้ตามที่ต้องการครับ กระจ่างไปหลายข้อสงสัยเลยครับ ก็ยังไม่จบสักทีครับ ถามต่อเลยนะครับ ตอนนี้ไฟล์ที่ผมทำไฟล์จริงครับ มีประมาณเกือบ 50 ชีท นะครับ พอเปิดใช้งานไฟล์ค่อนข้างอืด เพราะแต่ละชีท ถ้าเซลล์ไหนยังไม่มีการคำนวนผมจะติดสูตร =IF(CELL="","",CELL) ทุกชีทเลย ที่ทำให้ไฟล์ทำงานช้าลง มีผลจากสูตรพวกนี้ไหมครับอาจารย์ หรือว่ามีวิธีแก้ไขไหมครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Fri Feb 24, 2012 6:51 pm
by snasui
:D ทุกสูตรที่ใช้มีผลทำให้เกิดการคำนวณครับ ใช้มากก็คำนวณมาก แม้ If จะคำนวณเร็วแต่ใช้มากขนาดนั้นก็ย่อมคำนวณช้าลงมากครับ

ปกติการทำงานกับ Excel อย่างมีประสิทธิภาพควรจะทำข้อมูลให้เป็น Database คือข้อมูลเดียวกันอยู่ในชีทเดียวกันเรียงต่อกันไปด้านล่างเรื่อย ๆ กรณีต้องการทำรายงานก็ค่อยดึงข้อมูลจาก Database มาแสดงครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Sat Feb 25, 2012 5:08 pm
by YOYIYOYI
ขอบคุณครับอาจารย์ที่แนะนำ จะนำไฟล์ที่ทำเสร็จไปใช้งานสักระยะก่อนครับ จะได้รู้ปัญหาให้มากขึ้นติดตรงอีกบ้าง แล้วค่อยนำมารวบรวมทำ DATABASE แบบอาจารย์แนะนำ เพื่อการประมวลผลที่ดีขึ้น :D :D ถามต่ออีกนิดนะครับ ประดับความรู้ ปกติ EXCEL ไฟล์ที่บันทึกข้อมูลแล้วขนาดไฟล์ใหญ่ขึ้นประมาณ 5 MB ถึงแม้ว่าไม่ได้ใช้สูตรอะไรมากมายเหมือนคำถามก่อนหน้านี้ มันยังจะเป็นส่วนทำให้ไฟล์อืด ทำงานช้าลงเหมือนติดสูตรอยู่เช่นเดียวกันใช่ไหมครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Sat Feb 25, 2012 5:24 pm
by snasui
:D ปกติไฟล์ที่มีขนาดใหญ่จากที่มีข้อมูลมากทำให้เปิดไฟล์ช้าลงบ้าง แต่เราสามารถที่จะเข้าถึงข้อมูลต่าง ๆ ทีมีได้เร็วเหมือนปกติครับ กรณีที่มีสูตรบ้างแต่ไม่มาก ก็ต้องดูว่าสูตรเป็นแบบไหน ถ้าสูตรประเภท Vlookup แบบตรงตัวจากปริมาณข้อมูลมาก ๆ แม้จะใช้สูตรไม่มากนักก็ทำให้ไฟล์ช้าลงได้เหมือนกัน ปัจจัยเรื่องไฟล์ช้าต้องดูหลายเรื่องพอสมควร ด้าน Hardware ก็เกี่ยวข้องด้วย เช่น RAM น้อย CPU ความเร็วต่ำ หรือต่อให้ RAM เยอะ CPU เร็ว หากทำงานพร้อมกันหลายงานทรัพยากรของเครื่องก็ถูกแบ่งไปใช้งานอื่น ๆ ด้วย ก็ย่อมมีผลให้ไฟล์ช้าได้ครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Sat Feb 25, 2012 5:34 pm
by YOYIYOYI
:D :D จากคำถามแรกที่ผมได้เริ่มถามข้อสงสัยกับอาจารย์ และทดลองทำงานกับ EXCELจนตอนนี้งานผมใกล้ที่จะสามารถนำมาใช้งานได้จริงๆสักที ตอนนี้หัวสมองโล่งไปเยอะเลยครับ หลังจากศึกษาทำงานชิ้นนี้มาเกือบ 1 เดือน :D :D
ขอบคุณอาจารย์ จริงๆครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Wed Mar 21, 2012 7:39 am
by YOYIYOYI
หลังจากนำไปใช้งานได้สักพักก็เริ่มเจอปัญหาอีกนิดครับ อาจารย์เลยต้องขอคำชี้แนะต่อครับ
แต่ไฟล์แนบที่ผมนำมาเป็นแบบตัวอย่างครับ รบกวนด้วยครับ
เริ่มเลยนะครับ คือผมมีชีทอยู่ชีทหนึ่ง ชื่อ รายงาน ครับ และชีทนี้จะมีลิสรายการให้เลือก ยกตัวอย่างเป็น พ.ศ. ครับ
ตัวอย่าง ถ้าต้องการดึงข้อมูล พ.ศ. 2555 ก็ให้นำค่าจาก ชีท 55 ตั้งแต่ คอลัม c6:n15 มาแสดง ถ้าต้องการดึงข้อมูล พ.ศ. 2556 ก็ให้นำค่าจาก ชีท 56 ตั้งแต่ คอลัม c6:n15 มาแสดง เป็นต้นครับ
ผมลองใส่สูตร vlookup ไป แต่มันเลือกในลิสมาแสดงไม่ได้นะครับ ถ้าได้ก็ต้องแก้ในเซลล์ เป็นเซลล์ๆไป มันเลือกในลิสไม่ได้ครับ รบกวนอาจารย์ด้วยครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Wed Mar 21, 2012 9:15 am
by bank9597
:D สามารถใช้ IF เข้ามาช่วยได้ครับ

ผมจะตอบด้วยสูตร Vlookup น่ะครับ เพราะผู้ถามมีความรู้ในเรื่องสูตรสูตรนี้แล้ว
ที่ชีท "รายงาน" ที่ C6 คีย์ =IF($C$3="","",IF($C$3=2555,VLOOKUP($B6,'55'!$B$6:$N$15,COLUMNS($C6:C6)+1,0),IF($C$3=2556,VLOOKUP($B6,'56'!$B$6:$N$15,COLUMNS($C6:C6)+1,0),IF($C$3=2557,VLOOKUP($B6,'57'!$B$6:$N$15,COLUMNS($C6:C6)+1,0),""))))

คัดลอกไปทางขวามือจนสุดคอลัมน์เดือนครับ :D

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Wed Mar 21, 2012 5:26 pm
by YOYIYOYI
ขอบคุณมากครับ สำหรับคำตอบของคุณ bank9597 แต่ขอถามเพิ่มต่อนะครับ
คือผมทำล่วงหน้าไว้หลาย พ.ศ. ตามสูตรผมเข้าใจว่าต้องเข้าไปเพิ่มตาม พ.ศ.
เข้าไปอีก ไม่ทราบว่าเข้าใจถูกต้องหรือไม่ หรือว่าพอจะมีสูตรที่สั้นกว่านี้
เพื่อง่ายต่อการแก้ไขนะครับ
ส่วนอีกคำถามครับ กรณีผมต้องการเพิ่มลิสรายการอีกช่องนะครับ คือหลังจากกำหนด
พ.ศ. แล้ว จำกำหนดลิสรายการลำดับเพิ่มด้วยนะครับ
เช่น ถ้ากำหนด พ.ศ. 2555 ให้ดึงข้อมูลมาแสดง พร้อมกับกำหนด ให้ลำดับแสดงด้วย แต่แค่ 1- 20 คน ประมาณนี้นะครับ
ไม่ทราบว่าพอจะเขียนสูตรออกมาได้อย่างไรบ้างครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Wed Mar 21, 2012 5:38 pm
by bank9597
ตามสูตรผมเข้าใจว่าต้องเข้าไปเพิ่มตาม พ.ศ.
เข้าไปอีก ไม่ทราบว่าเข้าใจถูกต้องหรือไม่
:D

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

เนื่องจากการเก็บข้อมูลของคุณไม่ได้เป็นแบบ database จึงยากต่อการใช้สูตรครับ แต่หากคุณเอาข้อมูลที่แยกชีทเหล่านั้น พามาเก็บในชีทเดียวกัน ก็จะสามารถนำข้อมูลใช้ได้อย่างมากมายครับ อย่าว่าแต่เพิ่มลำดับเลยครับ :D

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Fri Mar 23, 2012 6:37 am
by snasui
YOYIYOYI wrote:หลังจากนำไปใช้งานได้สักพักก็เริ่มเจอปัญหาอีกนิดครับ อาจารย์เลยต้องขอคำชี้แนะต่อครับ
แต่ไฟล์แนบที่ผมนำมาเป็นแบบตัวอย่างครับ รบกวนด้วยครับ
เริ่มเลยนะครับ คือผมมีชีทอยู่ชีทหนึ่ง ชื่อ รายงาน ครับ และชีทนี้จะมีลิสรายการให้เลือก ยกตัวอย่างเป็น พ.ศ. ครับ
ตัวอย่าง ถ้าต้องการดึงข้อมูล พ.ศ. 2555 ก็ให้นำค่าจาก ชีท 55 ตั้งแต่ คอลัม c6:n15 มาแสดง ถ้าต้องการดึงข้อมูล พ.ศ. 2556 ก็ให้นำค่าจาก ชีท 56 ตั้งแต่ คอลัม c6:n15 มาแสดง เป็นต้นครับ
ผมลองใส่สูตร vlookup ไป แต่มันเลือกในลิสมาแสดงไม่ได้นะครับ ถ้าได้ก็ต้องแก้ในเซลล์ เป็นเซลล์ๆไป มันเลือกในลิสไม่ได้ครับ รบกวนอาจารย์ด้วยครับ
สามารถใช้ Indirect เข้ามาช่วยได้ครับ โดย

ในชีท รายงาน เซลล์ C6 คีย์สูตร

=VLOOKUP($B6,INDIRECT("'"&RIGHT(C$5,2)&"'!$B$6:$N$15"),COLUMNS($C6:C6)+1,0)

Enter > Copy ไปทางขวาและลงด้านล่าง จากนั้นลองเปลี่ยนค่าปีในเซลล์ C3 ดูครับ :P

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Fri Mar 23, 2012 9:26 am
by YOYIYOYI
ขอบคุณอาจารย์มากครับ สูตรของอาจารย์สั้นดีครับ และนำไปใช้ก็ได้ตามที่ต้องการเลยครับ
แต่รบกวนอาจารย์ช่วยอธิบายความหมายของสูตรได้ไหมครับ มีความหมายว่าอย่างไรครับ
จะได้นำไปต่อยอดครับผม สูตรของอาจารย์แต่ละสูตรน่าทึ่งครับ ยอดเยี่ยมมากมาย
ขอบคุณครับ

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Fri Mar 23, 2012 10:05 am
by snasui
:D จากสูตร =VLOOKUP($B6,INDIRECT("'"&RIGHT(C$5,2)&"'!$B$6:$N$15"),COLUMNS($C6:C6)+1,0) หมายถึงให้หาค่าที่เท่ากับ $B6 ในช่วงเซลล์ INDIRECT("'"&RIGHT(C$5,2)&"'!$B$6:$N$15") โดยนำคอลัมน์ที่เป็นผลลัพธ์ของ COLUMNS($C6:C6)+1 มาแสดง

จากสูตร INDIRECT("'"&RIGHT(C$5,2)&"'!$B$6:$N$15") เป็นการแปลงค่าช่วงเซลล์ที่ประกอบด้วยส่วนของข้อความต่าง ๆ ให้กลับมาเป็นช่วงเซลล์ โดย "'"&RIGHT(C$5,2) จะให้ผลลัพธ์เป็นชื่อชีท และ "'!$B$6:$N$15" จะให้ผลลัพธ์เป็นช่วงเซลล์

จากสูตร COLUMNS($C6:C6)+1 หมายถึงให้หาจำนวนคอลัมน์ในช่วงเซลล์ $C6:C6 แล้วบวกด้วยเลข 1 เพื่อให้เป็นคอลัมน์ที่จะใช้ดึงข้อมูลมาใช้งานจากช่วงเซลล์ที่เป็นผลลัพธ์ของ INDIRECT("'"&RIGHT(C$5,2)&"'!$B$6:$N$15")

ศึกษา Vlookup เพิ่มเติมจาก http://snasui.blogspot.com/2009/12/vlookup.html
Indirect จาก http://office.microsoft.com/th-th/excel ... P005204211
Rows จาก http://office.microsoft.com/th-th/excel ... P005204211

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Fri Mar 23, 2012 2:32 pm
by YOYIYOYI
ขอบคุณอาจารย์มากครับ ขอไปศึกษาสูตรที่ให้มาเพิ่มเติมก่อน

Re: ถ้าใช้สูตร = จากชีทหนึ่งไปยังอีกชีทหนึ่ง มีผลยังไงบ้าง

Posted: Tue Mar 27, 2012 9:59 pm
by YOYIYOYI
สวัสดีครับอาจารย์ หลังจากเอาสูตร INDIRECTของอาจารย์ไปศึกษาดูมันขึ้น #REF! ครับผม ลองแก้ไปหลายรอบแล้ว
ก็ยังไม่ผ่านสักทีรบกวนอาจารย์ลองดูให้ทีครับผิดตรงไหนเพราะยังไม่เข้าใจสูตรดีเท่าที่ควร
=VLOOKUP($B5,INDIRECT("'"&RIGHT(C$2,2)&"'!$B$4:$FP$94"),COLUMNS($C5:C5)+1,0)
ตัวอย่างครับ ที่ K1 ชีท AA+ ถ้าเลือก 2555 ให้แสดงข้อมูล ชีท A55 ที่ C4 แสดง ยอดยกมา นอกนั้นจะแสดงเป็นรายเดือน
ที่ คอลัม เงินออม ของแต่ละเดือน และถ้าเลือก 2556ให้แสดงข้อมูล ชีท A56 ที่ C4 แสดง ยอดยกมา
นอกนั้นจะแสดงเป็นรายเดือน ที่ คอลัม เงินออม ของแต่ละเดือน เป็นแบบนี้ไปเรื่อยๆจนถึงชีท A62 ครับ
แกะสูตรยังไม่กระจ่างจนหัวมึนไปเลยครับ
ขอบพระคุณล่วงหน้าครับ