snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Xcelvba
Silver
Posts: 531 Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019
#1
Post
by Xcelvba » Thu Dec 08, 2022 1:19 pm
ต้องการนำข้อมูลใน Sheet "Data" มาใส่ ใน Sheet schedule ตั้งแต่ D7:AH1057 ครับ
โดย อ้างอิงจาก
วันที่ และ รหัส ในชีท Data มาใส่ ตัวย่อจาก Symbol ครับ
You do not have the required permissions to view the files attached to this post.
Xcelvba
Silver
Posts: 531 Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019
#2
Post
by Xcelvba » Thu Dec 08, 2022 2:33 pm
ตอนนี้สามารถนำสูตรมาใส่ได้แล้วครับ แต่ปัญหาที่พบคือ ใช้เวลาคำนวณ ค่อนข้างนาน ขอช่วยแก้สูตรให้หน่อยครับ
=IFERROR(INDEX(data!$E:$E,AGGREGATE(15,6,ROW(data!$C$2:$C$2293)/((DAY(data!$C$2:$C$2293)=schedule!D$6)*(data!$A$2:$A$2293=schedule!$B7)),ROWS(schedule!D7:D7))),"")
*ใส่ตั้งแต่ D7:AH1051 *
snasui
Site Admin
Posts: 30662 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#3
Post
by snasui » Thu Dec 08, 2022 6:57 pm
รายงานนี้ต้องการคำนวณแบบเซลล์ต่อเซลล์และพื้นที่ในการแสดงผลมีจำนวนมากเป็นปกติที่จะทำงานได้ช้า ควรออกแบบรายงานใหม่ให้แสดงเป็นชุด ชูดละ 30 บรรทัด สามารถคลิกเพื่อเลื่อนไปดูชุดถัดไปหรือชุดก่อนหน้าได้ แทนที่จะเขียนสูตรลงไปทุกเซลล์ทุกบรรทัดครับ
Xcelvba
Silver
Posts: 531 Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019
#4
Post
by Xcelvba » Thu Dec 08, 2022 7:15 pm
คลิกเพื่อดูเป็น ชุดๆ นี้อย่างไรครับ สร้างปุ่มขึ้นมาแล้ว
แยกแต่ละ ชีท ให้มีข้อมูล 30 บรรทัดใช่ไหมครับ
snasui
Site Admin
Posts: 30662 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#5
Post
by snasui » Thu Dec 08, 2022 7:51 pm
ดูตัวอย่างในไฟล์แนบครับ
วิธีการ
เข้าเมนู Developer > เข้าเมนู Insert > ลาก Scroll bar มาวาง สำหรับการสร้างขึ้นมาใหม่
สำหรับในไฟล์ที่แนบมาด้วย คลิกขวาที่ Scroll bar > Format Control > ดูการกำหนดค่า เปลี่ยนค่าให้สอดคล้องกับข้อมูลที่มีอยู่จริง
เซลล์ B7 คีย์สูตร
=INDEX(data!$A$2:$A$2293,(30*($B$5-1))+ROWS(D$7:D7))
Enter > Copy ลงด้านล่าง
เซลล์ D7 คีย์สูตร
=IFERROR(LOOKUP(2,1/((DAY(data!$C$2:$C$2293)=D$6)*(data!$A$2:$A$2293=$B7)),data!$E$2:$E$2293),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
คลิก Scroll bar เพื่อเลื่อนซ้าย ขวา ตามต้องการ
You do not have the required permissions to view the files attached to this post.
Xcelvba
Silver
Posts: 531 Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019
#6
Post
by Xcelvba » Fri Dec 09, 2022 8:33 am
ขอบคุณครับ อ. มีวิธีที่ให้ โชว์ เฉพาะ รหัส ละ 1 แถวไหมครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30662 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#7
Post
by snasui » Fri Dec 09, 2022 8:50 am
ควรสร้างข้อมูลนั้นไว้ต่างหากแล้วค่อยดึงมาใช้แทนเพื่อลดภาระการทำงานของสูตรครับ
Xcelvba
Silver
Posts: 531 Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019
#8
Post
by Xcelvba » Fri Dec 09, 2022 9:03 am
ขอบคุณ สำหรับคำแนะนำครับ ขอสอบถามเพิ่มเติมครับ
1.=INDEX(data!$A$2:$A$2293,(30*($B$5-1)) +ROWS(D$7:D7))
1.130 คือ จำนวนชุดนึงมี 30 แถวใช่ไหมครับ
1.2ส่วน -1 คืออะไรครับ
2.Form controls กับ Active X Controls ต่างกันอย่างไรครับ
snasui
Site Admin
Posts: 30662 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#9
Post
by snasui » Fri Dec 09, 2022 9:56 am
Xcelvba wrote: ↑ Fri Dec 09, 2022 9:03 am
30 คือ จำนวนชุดนึงมี 30 แถวใช่ไหมครับ
ใช่ครับ
Xcelvba wrote: ↑ Fri Dec 09, 2022 9:03 am
-1 คืออะไรครับ
คือตัวเลขที่จะต้องไปหักออกจาก B5 โดยคำนึงถึงว่าหาก
B5 เป็น 1 แล้วคำตอบของ (30*($B$5-1))+ROWS(D$7:D7) มีค่าเป็น 1 เสมอนั่นคือ
30*(
1 -1)+ROWS(D$7:D7)
Xcelvba wrote: ↑ Fri Dec 09, 2022 9:03 am
Form controls กับ Active X Controls ต่างกันอย่างไรครับ
ActiveX Control สามารถใช้ VBA เข้าไปควบคุมได้อย่างครอบคลุมมากกว่าครับ
Xcelvba
Silver
Posts: 531 Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019
#10
Post
by Xcelvba » Fri Dec 09, 2022 10:07 am
ขอบคุณมากๆ ครับ