Page 1 of 1

การนำข้อมูลมาใส่ตาราง

Posted: Thu Dec 08, 2022 1:19 pm
by Xcelvba
ต้องการนำข้อมูลใน Sheet "Data" มาใส่ ใน Sheet schedule ตั้งแต่ D7:AH1057 ครับ
โดย อ้างอิงจาก
วันที่ และ รหัส ในชีท Data มาใส่ ตัวย่อจาก Symbol ครับ

Re: การนำข้อมูลมาใส่ตาราง

Posted: Thu Dec 08, 2022 2:33 pm
by Xcelvba
ตอนนี้สามารถนำสูตรมาใส่ได้แล้วครับ แต่ปัญหาที่พบคือ ใช้เวลาคำนวณ ค่อนข้างนาน ขอช่วยแก้สูตรให้หน่อยครับ

=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 *

Re: การนำข้อมูลมาใส่ตาราง

Posted: Thu Dec 08, 2022 6:57 pm
by snasui
:D รายงานนี้ต้องการคำนวณแบบเซลล์ต่อเซลล์และพื้นที่ในการแสดงผลมีจำนวนมากเป็นปกติที่จะทำงานได้ช้า ควรออกแบบรายงานใหม่ให้แสดงเป็นชุด ชูดละ 30 บรรทัด สามารถคลิกเพื่อเลื่อนไปดูชุดถัดไปหรือชุดก่อนหน้าได้ แทนที่จะเขียนสูตรลงไปทุกเซลล์ทุกบรรทัดครับ

Re: การนำข้อมูลมาใส่ตาราง

Posted: Thu Dec 08, 2022 7:15 pm
by Xcelvba
คลิกเพื่อดูเป็น ชุดๆ นี้อย่างไรครับ สร้างปุ่มขึ้นมาแล้ว
แยกแต่ละ ชีท ให้มีข้อมูล 30 บรรทัดใช่ไหมครับ

Re: การนำข้อมูลมาใส่ตาราง

Posted: Thu Dec 08, 2022 7:51 pm
by snasui
:D ดูตัวอย่างในไฟล์แนบครับ

วิธีการ
  1. เข้าเมนู Developer > เข้าเมนู Insert > ลาก Scroll bar มาวาง สำหรับการสร้างขึ้นมาใหม่
  2. สำหรับในไฟล์ที่แนบมาด้วย คลิกขวาที่ Scroll bar > Format Control > ดูการกำหนดค่า เปลี่ยนค่าให้สอดคล้องกับข้อมูลที่มีอยู่จริง
  3. เซลล์ B7 คีย์สูตร
    =INDEX(data!$A$2:$A$2293,(30*($B$5-1))+ROWS(D$7:D7))
    Enter > Copy ลงด้านล่าง
  4. เซลล์ 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 ไปด้านขวาและลงด้านล่าง
  5. คลิก Scroll bar เพื่อเลื่อนซ้าย ขวา ตามต้องการ

Re: การนำข้อมูลมาใส่ตาราง

Posted: Fri Dec 09, 2022 8:33 am
by Xcelvba
ขอบคุณครับ อ. มีวิธีที่ให้ โชว์ เฉพาะ รหัส ละ 1 แถวไหมครับ

Re: การนำข้อมูลมาใส่ตาราง

Posted: Fri Dec 09, 2022 8:50 am
by snasui
:D ควรสร้างข้อมูลนั้นไว้ต่างหากแล้วค่อยดึงมาใช้แทนเพื่อลดภาระการทำงานของสูตรครับ

Re: การนำข้อมูลมาใส่ตาราง

Posted: Fri Dec 09, 2022 9:03 am
by Xcelvba
ขอบคุณ สำหรับคำแนะนำครับ ขอสอบถามเพิ่มเติมครับ

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 ต่างกันอย่างไรครับ

Re: การนำข้อมูลมาใส่ตาราง

Posted: Fri Dec 09, 2022 9:56 am
by snasui
Xcelvba wrote: Fri Dec 09, 2022 9:03 am 30 คือ จำนวนชุดนึงมี 30 แถวใช่ไหมครับ
:D ใช่ครับ
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 เข้าไปควบคุมได้อย่างครอบคลุมมากกว่าครับ

Re: การนำข้อมูลมาใส่ตาราง

Posted: Fri Dec 09, 2022 10:07 am
by Xcelvba
:thup: ขอบคุณมากๆ ครับ