:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

ทำให้โปรแกรมทำงานเร็วขึ้น

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

ทำให้โปรแกรมทำงานเร็วขึ้น

#1

Post by wisit »

รบกวนช่วยหาวิธีที่ทำให้ไฟล์งานทำงานเร็วขึ้น เนื่องจากผมมีไฟล์งานที่มีชีทอยู่ประมาณ 15 ชีท แต่ละชีทอาจมีการคำนวณข้ามชีท และมีการใช้สูตรที่เป็นอเรย์ และมีการใช้แมโคร ประเภท Check Box และมีการใช้ล็อกคอลัมน์ แต่ผมได้เอาเครื่องหมาย $ ออกแล้ว (แต่ไม่รู้ว่าจะมีผลต่อสูตรหรือเปล่า เพราะไม่ได้เช็คทั้งหมด) มันก็ทำงานเร็วขึ้น แต่พอมีวิธีที่ทำให้เร็วขึ้นกว่านี้ไหมครับ เพราะต้องรอประมาณ 15-30 นาที
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#2

Post by bank9597 »

:D การเพิ่มความเร็วในการทำงานของโปรแกรม ส่วนแรกจะอยู่ที่ทรัพยากรคอมพิวเตอร์ของเรา เช่น หน่วยประมวล(CPU) หน่วยความจำ(RAM) ฮาร์ดดิส(Storage) วึ่งส่วนนี้จะเป็นพื้นฐานครับ

ต่อไปก็จะต้องดูที่จำนวนข้อมูล การใช้สูตรที่เป็นอาร์เรย์ย่อมมีผลต่อความเร็วในการทำงานอย่างแน่นอนเมื่อข้อมูลมากขึ้นครับ

วิธีแก้ไข จะต้องแยกส่วนต่างๆออกมาอย่างชัดเจน เช่น ส่วนที่ใช้ทำงาน(Form) ส่วนเก็บข้อมูล(Database) ส่วนที่เป็นที่แสดงผล (Report) ไม่ใช่แยกชีท แต่หมายถึงการแยกไฟล์ออกมา แต่ถึงกระนั้นก็จะต้องเพิ่มความซับซ้อนของสูตรไปอีก แต่ก็ทำให้การทำงานไม่ช้าอย่างที่เป็นอยู่ครับ :D

ปล. คำแนะนำนี้ได้รับมากจากอาจารย์อีกทอดหนึ่งครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#3

Post by wisit »

:D ขอบคุณ คุณ Bank 9597 มากครับที่ช่วยให้คำแนะนำ แต่งานผมถ้าแยกไฟล์ออกจะทำให้ทำงานยุ่งยาก พอดีเคยอ่านคำแนะนำของท่านอาจารย์คนควน (แต่ลืมแล้วว่าทำยังไง) เช่น ให้ลบเซลล์ Column และ Row แต่ผมลองลบแล้วมันไม่หาย (เลือกเซลล์ที่ต้องการลบแล้วคลิกขวา เลือก Delete) ไม่รู้ต้องทำยังไงดีครับ และพอมีวิธีที่จะทำให้ไฟล์ทำงานเร็วขึ้นโดยไม่แยกไฟล์ไหมครับ รบกวนช่วยด้วยครับ เพราะโปรแกรมทำงานช้ามาก จากที่ช้าอยู่แล้ว มันยิ่งช้ามากเป็นเท่าตัวครับ :flw:
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#4

Post by bank9597 »

:D ลองดูที่ข้อมูลน่ะครับ ผมคิดว่าเรื่องสูตรที่เราใส่ไปแล้ว ไม่สามารถจะแก้ไขอะไรได้แล้วครับ เพราะมันทำงานไปตามปกติของมัน
ผมจึงอยากให้ลองดูที่ตัวข้อมูลที่เก็บอยู่ในไฟลล์ครับ หากคิดว่ามากเกินไปลองแบ็คอัพไปเก็บไว้ก่อน แล้วลองประมวลผลกับจำนวนข้อมูลที่ไม่มากเกิน ลองดูว่าจะเร็วเพิ่มขึ้นหรือไม่ครับ ส่วนวิธีการอื่น ผมยังไม่ทราบเหมือนกัน ต้องรอให้อาจารย์มาแนะนำอีกครั้งน่ะครับ :D
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#5

Post by snasui »

:D คงต้องทราบว่าสูตรที่ใช้เป็นสูตรใดบ้างและมีจำนวนมากขนาดไหน นอกจากนี้มี Object ใด ๆ ที่เกินความจำเป็นจำนวนมากหรือไม่ มีชื่อหรือ Range Name เกินความจำเป็นหรือไม่ มี Style เกินความจำเป็นหรือไม่ เป็นต้น และปกติการคำนวณข้ามไฟล์จะช้ากว่าข้ามชีทครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#6

Post by bank9597 »

:D การใช้สูตรข้ามไฟล์ช้ากว่าเหรอเนี่ย อิอิ

:D คงต้องอยู่ที่การแบ็คอัพข้อมูลแล้วล่ะครับ ว่าจะบ่อยแค่ไหน :D
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#7

Post by wisit »

สูตรของผมจะมีสูตรดังนี้ครับ
1. =LOOKUP(CHAR(255),A$3:A3) อยู่ในคอลัมน์ AF แทนจำนวนแถวประมาณ
2. =LOOKUP(CHAR(255),B$3:B3) อยู่ในคอลัมน์ AE
3. =AF3&C3, =AF3&F3, =AF3&F3, =AF3&I3, =AF3&O3 (อาจารย์คนควนแนะนำ) :mrgreen:
4. =AE3&C3, =AE3&F3, =AE3&F3, =AE3&I3, =AE3&O3
มีจำนวนทั้งหมวด 3,500 แถว (ไม่ทราบว่าเป็นเพราะสูตรนี้หรือเปล่าครับ เพราะผมลองสังเกต เมื่อเปลี่ยนค่า ตรงคอลัมน์ A หรือ คอลัมน์ ฺB เช่น ลบจากชื่อนาย ก เป็น นาย ข ต้องใช้เวลาในการรอนานมาก หรือเปลี่ยนตัวเลขจากข้อมูลที่คีย์มันจะช้า เพราะต้องรอคำนวณสูตรในข้อ 3 และข้อ 4 ครับ ผมอาจคิดไปเองหรือเปล่าไม่รู้ครับ)
5. =SUMIF($AF$3:$AF$15036,AH3,$D$3:$D$15036) ซึ่ง AH จะเซลล์ที่มีการเปลี่ยนแปลงตามรายชื่อ กล่าวคือ นาย ก แทนด้วยเซลล์ AH นาย ข แทนด้วยเซลล์ AG3 และนาย ค แทนด้วยเซลล์ AI และนาย ง,.....จนถึงนาย ญ ประมาณ 10-11 คน
6. = sum()ข้ามชีท
7. =$B306*SUMIF(ป้อนข้อมูล!$Z$3:$Z$1998,F$305&$A306,ป้อนข้อมูล!$D$3:$D$1998) อยู่ประมาณ 210 คอลัมน์ 3,200 แถว (อาจารย์คนควนแนะนำ) :mrgreen:
8. ใช้แมโคร ประเภท Check Box อีก 3,200 ช่อง
9. =IF(ROWS($I$2:I6)>$G$1,"",INDEX(ฐานข้อมูลใบประหน้า!$M$35:$M$41,SMALL(IF(ฐานข้อมูลใบประหน้า!$J$35:$J$41="พิมพ์",ROW(ฐานข้อมูลใบประหน้า!$M$35:$M$41)-ROW(ฐานข้อมูลใบประหน้า!$M$35)+1),ROWS($I$2:I6)))) (ประยุกต์มาจากอาจารย์คนควน) :tt: อยู่ประมาณ 50 คอลัมน์ 100 แถว
10. แทนค่าในเซลล์ข้ามชีท เช่น = ป้อนข้อมูล!A3
11. =COUNTIF
12. =IF
พอมีวิธีที่จะทำให้ทำงานได้เร็วขึ้นไหมครับ ซึ่งอาจารย์เคยโพสลงในกระทู้พันทิพย์ หรือกระทู้ใน Forum ไม่ทราบครับ ผมเคยอ่าน แต่จำไม่ได้ว่าในกระทู้ไหน โดยอาจารย์แนะนำให้ตัดค่า $ (ซึ่งผมตัดแล้ว มันก็ทำให้เร็วขึ้นนิดหนึ่ง แต่ไม่รู้จะมีผลต่อสูตร หรือค่าที่คำนวณหรือเปล่าครับ) และอาจารย์ยังแนะนำให้ลบเซลล์คอลัมน์ หรือแถวที่ไม่ได้ใช้ออก (ไม่แน่ใจ ว่าผมจำถูกหรือเปล่า) (ซึ่งผลลบแล้วแต่มันไม่ได้ ไม่รู้ทำผิดวิธีหรือเปล่า) และอาจารย์ยังแนะนำอีกหลายวิธี ซึ่งผมจำไม่ได้แล้ว และหากระทู้ดังกล่าวไม่เจอครับ รบกวนอาจารย์ ช่วยแนะนำหน่อยครับ และขอบคุณ คุณ Bank 9597 มากครับที่ช่วยให้คำแนะนำ
หมายเหตุ: สูตรหรือวิธีทำจะได้รับคำแนะนำจากท่านอาจารย์คนควนเป็นส่วนมาก ต้องขอบคุณท่านอาจารย์เป็นอย่างสูงครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#8

Post by snasui »

wisit wrote:9. =IF(ROWS($I$2:I6)>$G$1,"",INDEX(ฐานข้อมูลใบประหน้า!$M$35:$M$41,SMALL(IF(ฐานข้อมูลใบประหน้า!$J$35:$J$41="พิมพ์",ROW(ฐานข้อมูลใบประหน้า!$M$35:$M$41)-ROW(ฐานข้อมูลใบประหน้า!$M$35)+1),ROWS($I$2:I6)))) (ประยุกต์มาจากอาจารย์คนควน) อยู่ประมาณ 50 คอลัมน์ 100 แถว
สูตรนี้แหละครับที่ทำให้ช้า จะต้องหาวิธีการจัดการใหม่ ลองส่งไฟล์ตัวอย่างมาครับ
wisit wrote:พอมีวิธีที่จะทำให้ทำงานได้เร็วขึ้นไหมครับ ซึ่งอาจารย์เคยโพสลงในกระทู้พันทิพย์ หรือกระทู้ใน Forum ไม่ทราบครับ ผมเคยอ่าน แต่จำไม่ได้ว่าในกระทู้ไหน โดยอาจารย์แนะนำให้ตัดค่า $ (ซึ่งผมตัดแล้ว มันก็ทำให้เร็วขึ้นนิดหนึ่ง แต่ไม่รู้จะมีผลต่อสูตร หรือค่าที่คำนวณหรือเปล่าครับ) และอาจารย์ยังแนะนำให้ลบเซลล์คอลัมน์ หรือแถวที่ไม่ได้ใช้ออก (ไม่แน่ใจ ว่าผมจำถูกหรือเปล่า)
จำผิดแน่นอนครับ การตัดตัว $ ไม่ได้ช่วยให้เร็วขึ้นแต่อย่างใดครับ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#9

Post by wisit »

อาจารย์ครับ ผมได้แนบไฟล์ตัวอย่างมาให้อาจารย์ช่วยแนะนำให้เร็วขึ้นหน่อยครับ ซึ่งไฟล์ที่ผมแนบมาใช้เพื่อตรวจผลว่ามีลูกค้าสั่งซื้อสินค้ารหัสนี้เป็นใคร (เช่น เล็ก ซึ่งมีลูกค้าประมาณ 30-40 คน ผมได้กำหนดลูกค้าให้เป็น 1L จนถึง 40L เป็นต้น) (อาจารย์ครับ เมื่อผมนำไฟล์งานที่เพื่อนคีย์ มาก๊อปปี้ลงในไฟล์็ตัวอย่างนี้ ในชีทป้อนข้อมูล มันจะรอประมาณ 15-30 นาที ถ้าเป็นโน้ดบุ๊คก็ประมาณนี้เช่นกัน ไม่ต่างกันมากครับ) รบกวนช่วยชี้แนะด้วยครับ :mrgreen:
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#10

Post by snasui »

:D ไม่พบไฟล์แนบครับ หากไฟล์มีขนาดใหญ่เกินกว่า 300KB ให้ทำการ Zip ไฟล์ก่อนครับ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#11

Post by wisit »

อาจารย์ครับ Furum ฟ้องว่าไฟล์มีขนาดใหญ่เกินไปครับ ผมซิพไฟล์แล้ว แต่ไฟล์มีขนาด 3.57 MB ครับ จึงแนบไฟล์ไม่ได้ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#12

Post by snasui »

:o ให้ตัดมาเป็นตัวอย่างก็พอครับ ไม่ต้องส่งไฟล์จริงมาแต่อย่างใด จะลองปรับสูตร Array ตามที่ผมเขียนแจ้งไปในความเห็นก่อนหน้านี้ดูก่อนครับ :P
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#13

Post by wisit »

อาจารย์ครับ ผมได้ลองลบสูตร
=$B306*SUMIF(ป้อนข้อมูล!$Z$3:$Z$1998,F$305&$A306,ป้อนข้อมูล!$D$3:$D$1998) ซึ่งมีอยู่ประมาณ 210 คอลัมน์ 3,200 แถว ลงเหลือ 3 คอลัมน์ ไฟล์มันจะมีขนาดเล็กลง และการก๊อปปี้จากไฟล์ที่เพื่อน ๆ คีย์ จะรอประมาณ 5-7 นาที แต่ถ้าให้สูตรมีประมาณ 210 คอลัมน์ 3,200 แถว เหมือนเดิม ไฟล์จะมีขนาดใหญ่กว่าที่ลดเหลือ 3 คอลัมน์ประมาณ12 เท่า และเมื่อก๊อปปี้จากไฟล์ที่เพื่อน ๆ คีย์ จะรอประมาณ 15-30 นาที แต่ผมมีความจำเป็นต้องใช้ทั้งหมด 210 คอลัมน์ 3,200 แถว ผมได้แนบไฟล์ตัวอย่างที่ผมได้ทำการลบเหลือ 3 คอลัมน์ ในรูปของไฟล์ซิพครับ รบกวนอาจารย์ช่วยแนะนำด้วยครับ :mrgreen:
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#14

Post by wisit »

ต้องขอโทษด้วยครับอาจารย์ :mrgreen: ไฟล์ที่ซิพมีขนาดใหญ่เกิน 300K ผมดูผิดครับอาจารย์ :tt: ถ้าผมลบเซลล์ดังกล่าวแล้วจะทำให้งานทำเร็วขึ้นมากครับ ซึ่งอาจารย์พอจะแนะนำสูตรที่ทำให้ทำงานเร็วกว่าสูตร :roll:
=$B306*SUMIF(ป้อนข้อมูล!$Z$3:$Z$1998,F$305&$A306,ป้อนข้อมูล!$D$3:$D$1998)
ผมได้แนบไฟล์ตัวอย่างที่อาจารย์เกี่ยวกับสูตรข้างต้นครับ (เป็นไฟล์คนละไฟล์นะครับ)
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#15

Post by snasui »

:D ในบรรดาสูตรหาข้อมูลโดยมีเงื่อนไข ไม่มีสูตรใดทำงานเร็วไปกว่า Sumif, Countif ครับ และจากไฟล์ที่แนบมาก็เป็นสูตรดีแล้ว กรณีใช้เป็นจำนวนมากไม่ว่าสูตรใดก็ตามทำให้ไฟล์ทำงานช้าได้ทั้งนั้นครับ

แทนที่จะใช้สูตรแสดงรายงานจำนวนมากขนาดนี้ควรแสดงรายงานด้วย PivotTable หรือใช้สูตรให้สามารถเรียกดูเป็นรายบุคคลแทนการแสดงออกมาทั้งหมดพร้อมกันทีเดียวจะดีกว่าครับ
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#16

Post by wisit »

:D ขอบคุณครับอาจารย์ ผมลืมคิดไปเลยว่า หากแสดงเป็นรายบุคคลก็จะทำให้สามารถทำงานได้เร็วขึ้น (มั่วแต่คิดจะทำให้เร็วเลยลืมวิธีที่ง่าย ๆ เช่นนี้) ต้องขอบคุณอาจารย์มากครับที่กรุณาให้คำแนะนำที่ดี ๆ :D
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#17

Post by wisit »

อาจารย์ครับ จากไฟล์ตัวอย่างที่แนบมา ถ้าหากว่าผมต้องการที่จะเปลี่ยนจากใช้แมโคร ประเภท Check Box มาเป็นกรอกตัวเลขแทน พอจะใช้วิธีการใดได้บ้างครับ ซึ่ง Check Box ของผมจะแบ่งเป็น 5 ประเภท ตามลักษณะของรหัสที่กรอกแต่ละคอลัมน์ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#18

Post by snasui »

:D ที่กำหนดมานั้นก็ไม่ได้เป็น Macro ครับ แค่นำ Check Box มาใช้เท่านั้น หากไม่ต้องการใช้วิธีนี้ก็สามารถคีย์ตัวเลขเรียงไว้แล้วอีกคอลัมน์มีปุ่มให้เลือกว่าเป็นเลข 1 หรือ 0 ถ้า 1 ก็คือใช้ ถ้า 0 ก็คือไม่ใช้ หรือไม่ดึงข้อมูลมาแสดง เช่นนี้เป็นต้น
wisit
Bronze
Bronze
Posts: 348
Joined: Sun Sep 25, 2011 9:42 pm
Excel Ver: 2019

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#19

Post by wisit »

อาจารย์ครับ ผมอาจจะสื่อสารผิดไปนิดหนึ่งครับ :lol: คือ ถ้้าหากผมลบ Check Box ออก แล้วพอมีวิธีที่จะทำให้ทราบว่า นายรุ่งโรจน์ นายสมนึก หรือนายพงษ์ศักดิ์ ขายสินค้ารหัสใดได้จำนวนเท่าใด โดยเราแค่คีย์รหัสที่ต้องการทราบ เช่น เราคีย์รหัส 09 เข้าไป โปรแกรมก็จะคำนวณว่า นายรุ่งโรจน์ นายสมนึก หรือนายพงษ์ศักดิ์ ขายสินค้ารหัส 09 ได้จำนวนเท่านี้ เป็นต้น ถ้าหากใช้ Check Box ติ๊ก ก็จะได้ผลเช่นกัน แต่เพื่อความสะดวกเพราะ Check Box มีจำนวนรหัสมาก และตัวเล็กต้องคอยหา ผมจึงอยากได้วิธีที่ทำให้เราคีย์ตัวเลขลงไป แล้วสามารถบอกได้ว่า นายรุ่งโรจน์ นายสมนึก หรือนายพงษ์ศักดิ์ ขายสินค้ารหัสนี้ รหัสนั้นได้จำนวนเท่าใดครับ รบกวนอาจารย์ช่วยแนะนำด้วยครับ :D
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำให้โปรแกรมทำงานเร็วขึ้น

#20

Post by snasui »

:D ออกแบบรายงานที่ต้องการและแนบมาก่อนดีกว่าครับ การอธิบายโดยไม่มีตำแหน่งอ้างอิงจะเข้าใจได้ยากครับ
Post Reply