Page 1 of 1

สอบถามเรื่องการสร้างสูตรคำนวนราคาแบบมีเงื่อนไข ระหว่าง Sheet

Posted: Tue Jun 07, 2016 11:29 am
by niwat_akk
สวัสดีครับ กระทู้นี้เป็นกระทู้แรก ผมมีปัญหาสอบถามเรื่องการสร้างสูตรคำนวนราคาแบบมีเงื่อนไข ระหว่าง Sheet

ความต้องการผมมี 2 ข้อดังนี้จะสร้างสูตรยังไงครับ
1. เมื่อลากชีทเพิ่มอีกชีทเป็นวันที่ใหม่ให้ราคาของ D7-D13 ไปลบราคาจากชีทวันก่อนหน้าและแสดงผลลัพท์ที่ D16-D22 และ E16-E22
(*ปัญหาที่พบ คือ เวลาลากชีทใหม่ สูตรจะตรึงกับข้อมูลในชีทแรกที่กำหนดไว้เสมอ เช่น ตั้งให้วันที่ 7 ลบกับข้อมูลในวันที่ 6 ไว้
พอลาก Copy Sheet วันที่ 7 เปลี่ยนวันที่เป็นวันที่ 8 ราคาวันที่ 8 จะไปลบวันที่ 6 ซึ่งจริงๆต้องการให้ลบราคาในชีทวันที่ 7)
2. เมื่อลาก copy ชีทเพิ่มอีกชีทเป็นวันที่ใหม่อยากให้ชื่อ Sheet เปลี่ยนชื่ออัตโนมัติให้ตรงตามช่อง J3 (สามารถเปลี่ยน format วันที่ได้)

รบกวนดูจากไฟล์แนบนะครับ
ขอบคุณล่วงหน้าครับ

Re: สอบถามเรื่องการสร้างสูตรคำนวนราคาแบบมีเงื่อนไข ระหว่าง Sheet

Posted: Tue Jun 07, 2016 6:41 pm
by snasui
:D การเขียนสูตรเพื่อหาข้อมูลลักษณะนี้จะมีปัญหากรณี D7:E22 นำข้อมูลมาจากที่อื่น เมื่อนำข้อมูลมาวางทับจะทำให้สูตรที่เขียนไว้เสียหาย แต่หากคีย์เข้าไปเองโดยเลือกคีย์อีกตำแหน่ง หรือเลือกคีย์ตำแหน่งใด ๆ ในสูตรจะไม่เกิดปัญหา

กรณีต้องการใช้สูตรและมีการคีย์ตัวเลขเข้าไปเองสามารถทำดังนี้ครับ
  1. ใช้ Excel 4 Macro Function เข้ามาช่วยแสดงชื่อชีตทั้งหมด ซึ่งจะผันแปรตามจำนวนชีตที่เพิ่มหรือลด โดยทำตาม Link นี้ wordpress/list-all-sheets/ กรณีที่่สูตรมีฟันหนูครอบ ให้คีย์ฟันหนูเข้าไปเองใหม่ เนื่องจากฟันหนูในเว็บกับใน Excel เป็นคนละตัวกัน
  2. ที่เซลล์ E7 ของชีตแรกคีย์สูตร
    =0-IF(MATCH(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),ListSheet,0)=1,0,IFERROR(OFFSET(INDIRECT("'"&INDEX(ListSheet,MATCH(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),ListSheet,0)-1)&"'!E7"),ROWS(E$7:E7)-1,COLUMNS($E7:E7)-1),0))
จะเป็นการนำเซลล์ในชีตปัจจุบันลบกับเซลล์เดียวกันของชีตก่อนหน้า โดยค่าในเซลล์ปัจจุบันจะต้องคีย์เข้าไปเองแทนค่าเลข 0 ที่ระบายเอาไว้ในสูตรและต้อง Save ไฟล์เป็น .xlsm เป็นอย่างน้อยเนื่องจากถือว่าเป็นไฟล์ที่มี Macro ครับ

หากไม่เช่นนั้นจะต้องเขียนด้วย VBA ซึ่งจะต้องเขียนมาเองก่อนตามกฎการใช้บอร์ดข้อ 5 ด้านบน ติดตรงไหนค่อยมาถามกันต่อ