: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

อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
prawitj
Member
Member
Posts: 89
Joined: Wed Aug 31, 2011 11:35 am

อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#1

Post by prawitj »

Question1
พอดีใน Column P ผมได้เช็ค PO index (col A) ไว้ Count ย้อนกลับ แล้วมากกว่า 1 ให้มันขึ้น msg error แต่พอลองแล้วมันไม่ขึ้นน่ะครับ รบกวนอาจารย์ช่วยแนะนำด้วยครับ

Question 2
อีกประการที่อยากขอร้องให้ช่วยคือ พอดีใน col E (P/O ถูก Revise(Y=Yes, N= No)) ผมอยากให้ใบ max ของ Runnumber ใดๆที่ ถูก Revised ขึ้นว่า N แล้วกลับไปแก้ใบ สุดท้ายก่อน Revised เป็น Y ซึ่งตอนนี้ผมใช้วิธี Count เช็คไปข้างหน้าน่ะครับ ซึ่งติดปัญหา 1 ประการ คือถ้า Sorting แล้วใบ revised น้อยกว่าโดนดีดขึ้นไปข้างบน Program เพี้ยนทันทีครับ


และสุดท้ายนี้ทั้ง 2 Question เลยนะครับ พอดี File จริงผมมีการดึงข้อมูลจาก Report อื่นด้วย Vlookup โดยใช้ PO index ดูดมา ซึ่งช้ามากกกกก และกำลังหาวิธีแก้ไขอยู่ เช่น ใน คอลัมภ์ R ก็มีการดึงข้อมูลรถจาก Col Q หรือข้อมูล finance ต่างๆก็ดึงจาก File ของ Finance (ไม่ได้แสดง) เลยกลัวว่าถ้าไปใช้ Countif อีกจะทำให้ Program ช้าไปใหญ่ (Fie นี้ไม่ช้าครับ แต่ File จริง มี PO ประมาณ 2000 แถว เวลา Filter หรือ Save ทีรอนานมากกกกกก)

ผมเลยอยากจะลองใช้ For loop ใน VBA ดูเผื่อจะเร็วขึ้น นี่ก็ซื้อหนังสือมาแต่หนังสือมันสอน Basic มาก แล้ว เรื่อง Coding VBA นี่ผมไม่ค่อยรู้อยู่แล้ว หนังสือเลยช่วยไม่ค่อยได้เลย
รบกวนอาจารย์อย่างสูงครับ ขอบคุณมากกกก
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#2

Post by snasui »

:lol: อ่านแล้วไม่เข้าใจครับ
prawitj wrote:Question1
พอดีใน Column P ผมได้เช็ค PO index (col A) ไว้ Count ย้อนกลับ แล้วมากกว่า 1 ให้มันขึ้น msg error แต่พอลองแล้วมันไม่ขึ้นน่ะครับ รบกวนอาจารย์ช่วยแนะนำด้วยครั
ผมไม่พบว่าคอลัมน์ P มีค่าหรือสูตรใด ๆ ให้ตรวจสอบ
prawitj wrote:Question 2
อีกประการที่อยากขอร้องให้ช่วยคือ พอดีใน col E (P/O ถูก Revise(Y=Yes, N= No)) ผมอยากให้ใบ max ของ Runnumber ใดๆที่ ถูก Revised ขึ้นว่า N แล้วกลับไปแก้ใบ สุดท้ายก่อน Revised เป็น Y ซึ่งตอนนี้ผมใช้วิธี Count เช็คไปข้างหน้าน่ะครับ ซึ่งติดปัญหา 1 ประการ คือถ้า Sorting แล้วใบ revised น้อยกว่าโดนดีดขึ้นไปข้างบน Program เพี้ยนทันทีครับ
ตัวหนังสือที่ผมระบายสีแดงไว้หมายความว่าอย่างไรครับ มีวิธีการทำงานอย่างไร ช่วยจับภาพปัญหา และคำตอบที่ต้องการมาจะช่วยได้เยอะครับ เนื่องจากอ่านแล้วไม่เข้าใจว่า
  • ใบ max ของ Runnumber ใดๆ :arl: คืออะไร
  • แล้วกลับไปแก้ใบ สุดท้ายก่อน Revised เป็น Y :arl: ดูจากอะไรว่าใบสุดท้าย แก้ตอนไหน
  • Sorting แล้วใบ revised น้อยกว่าโดนดีดขึ้นไปข้างบน Program เพี้ยนทันทีครับ :arl: ใบ Revised น้อยกว่าดูจากไหน
การใช้ Vlookup กับข้อมูลปริมาณมากช้าแน่นอนครับ แต่ Countif และ Sumif ไม่ช้าครับ

หากใช้ Vlookup แล้วมีการ Filter ด้วยโปรแกรมจะมีการคำนวณทุกครั้งที่มีการ Filter ควรปรับการคำนวณเป็น Manual เสียก่อนที่จะทำการ Filter จะช่วยให้ทำงานเร็วขึ้นครับ
prawitj
Member
Member
Posts: 89
Joined: Wed Aug 31, 2011 11:35 am

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#3

Post by prawitj »

Q1: ขอโทษครับ ผมตัด Col แล้วลืมแก้ จริงๆตอนนี้จาก P มันย้ายมาอยู่ที่ H ครับ col ที่ชื่อว่า "Is Index redundant "

Q2: ใบ Revised ของ Runnumber ใดๆ ดูที่ col D (จำนวนครั้งที่ Revise) เช่น Runnumber ที่ 5400288 ใบ New เข้ามาครั้งแรก จำนวนครั้งที่ Revise จะเป็น "00" PO index จะเกิดจาก Runnumber&Revised number (C&D) = 5400288 และ col E () เริ่มต้นจะเป็น "N" (No revised) พอ PO runnumber 5400288 ถูก Revised เช่นเปลี่ยนรุ่นรถ ทางผมต้องการเก็บ Record แรกไว้ดูว่าเค้าเปลี่ยนจากรุ่นอะไรเป็นอะไร เลยต้องขึ้นแถวใหม่ แต่ Runnumber เก่า ดังนั้น จำนวนครั้งที่ถูก Revised จะเปลี่ยนเป็น 01 (Revised ครั้งที่1) Index คือ 540028801 P/O ถูก Revise(Y=Yes, N= No) เป็น "N" ดังนั้น ต้องกลับไปเปลี่ยน col E (P/O ถูก Revise(Y=Yes, N= No)) ของ PO index 540028800 เป็น "Y" ซึ่งตอนแรกผม hadle ด้วยคน แต่ไม่ไหวเวลานำไปใช้ทำ Report จำนวนมันไม่ตรงซักที เพราะ Human error เยอะเหลือเกิน เช่นลืมไปเปลี่ยนเลยอยากให้เปลี่ยนอัตโนมัติ แต่ดันอยาก Sorting ด้วยน่ะสิครับ

คำถามเพิ่มเติม
หากใช้ Vlookup แล้วมีการ Filter ด้วยโปรแกรมจะมีการคำนวณทุกครั้งที่มีการ Filter ควรปรับการคำนวณเป็น Manual เสียก่อนที่จะทำการ Filter จะช่วยให้ทำงานเร็วขึ้นครับ ปรับเป็น manual ยังไงครับ
prawitj
Member
Member
Posts: 89
Joined: Wed Aug 31, 2011 11:35 am

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#4

Post by prawitj »

File ใหม่ที่ปรับแล้วครับ ให้ดูที่ sheet PO นะครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#5

Post by snasui »

:D ค่อย ๆ ถามตอบกันไปนะครับ

ตามความเข้าใจผม เมื่อมีการสร้าง PO index ขึ้นมาใหม่ ให้รายการเดิมแสดง Y ส่วนรายการใหม่แสดงเป็น N

ที่เซลล์ E2 คีย์

=IF(COUNTIF(A$2:A2,A2)<COUNTIF($A$2:$A$9,A2),"Y","N")

Enter > Copy ลงด้านล่าง

สำหรับการปรับเป็น Manual ให้เข้าที่เมนู Tools > Options > Calculation > Manual
prawitj
Member
Member
Posts: 89
Joined: Wed Aug 31, 2011 11:35 am

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#6

Post by prawitj »

ปัญหาเรื่อง Revised แก้ได้แล้วครับ ขอบคุณมาก

แล้วอีกปัญหาที่บอกว่าให้ขึ้น Msg box เตือนว่า Index eror ถ้าขึ้น Record ใหม่แล้วพบว่า มี Index ซ้ำซ้อนล่ะครับ หรือจริงๆ จะแก้ได้โดยที่ พิมพ์ Runnumber เช่น 5409031 มันวิ่งกลับไปตรวจเช็คทุก Record แล้วเจอว่ามี 5409031 Revision 00 มันเติมให้อัตโนมัติว่าใน้เป็น 01 ดีครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#7

Post by snasui »

:D คิดว่าแนวทางที่สองตามด้านล่างนี้ดีกว่าครับ :ard:
prawitj wrote:หรือจริงๆ จะแก้ได้โดยที่ พิมพ์ Runnumber เช่น 5409031 มันวิ่งกลับไปตรวจเช็คทุก Record แล้วเจอว่ามี 5409031 Revision 00 มันเติมให้อัตโนมัติว่าใน้เป็น 01 ดีครับ
ลองตามนี้ ที่เซลล์ D2 คีย์

=TEXT(COUNTIF(C$2:C2,C2)-1,"00")

Enter > Copy ลงด้านล่าง แล้วปรับใช้ตามต้องการครับ
prawitj
Member
Member
Posts: 89
Joined: Wed Aug 31, 2011 11:35 am

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#8

Post by prawitj »

ได้แล้วครับ ขอบคุณอาจารย์มากครับ อยากเลี้ยงข้าวจังครับ ไม่ได้อาจารย์นี่แย่เลย
prawitj
Member
Member
Posts: 89
Joined: Wed Aug 31, 2011 11:35 am

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#9

Post by prawitj »

เอ๊ะ แต่ถ้ามันมีการ Sorting Revision ก้เพี้ยนสิครับ

อีกคำถามครับ การ Calculate แบบ Auto ผมเข้าใจว่ามันจะ Cal ทุกครั้งเวลา Filter แล้วถ้าเราไปใช้แบบ Manual แล้วหากเราต้องการ Get Data ต้องทำอย่างไรครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#10

Post by snasui »

:D การใช้สูตรลักษณะดังกล่าว ถ้าไม่จำเป็นเราไม่ Sort ครับ ถ้าจะ Sort ควร Copy แบบ Value ไปทำที่ชีทอื่น ๆ แทน เพื่อป้องกันสูตรเสียหาย

สำหรับการคำนวณใหม่หลังจากปรับการคำนวณเป็น Manual ให้กดแป้น F9 ครับ
prawitj
Member
Member
Posts: 89
Joined: Wed Aug 31, 2011 11:35 am

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#11

Post by prawitj »

ขอบคุณครับ
ถามครับ แล้วการปรับเป็น manual มันจะไปกระทบกับการ Refresh ของ pivot หรือไม่ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: อยากให้excel มันขึ้น msgbox index error แต่มันไม่ขึ้น

#12

Post by snasui »

:D ถ้าข้อมูลใน PivotTable มีการคำนวณก็จะกระทบครับ ก่อนการ Refresh PivotTable ควรที่จะกดแป้น F9 ก่อนครับ
Post Reply