: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
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
apasri
Member
Member
Posts: 10
Joined: Mon Jan 15, 2018 2:46 pm

ต้องการเรียงข้อมูลแบบต่อเนื่อง

#1

Post by apasri »

เรียนอาจารย์ที่เคารพและเพื่อนๆสมาชิกทุกท่านค่ะ
ขอรบกวนขอคำแนะนำเรื่องการเรียงข้อมุลที่ได้มาแบบจำกัดแบบนี้ด้วยค่ะ

1.เครื่องจักรผลิตชิ้นงาน และรายงารข้อมุลเรียงกันได้19 ช่องข้อมูล เมื่อครบแล้วจะไปทับอันที่1ใหม่
2.โดยแต่ละเครื่องมีจำนวนผลผลิตได้ไม่เท่ากัน
3.ต้องการเรียงข้อมูลให้ต่อเนื่องกันไป (ข้อมูลจดวันแรกไม่ได้เริ่มจาก 0 ศูนย์ )
4.การเก็บข้อมูลได้จากการไปจดมาจากหน้าจอ ทุกวันๆละครั้ง
ตัวอย่างไฟล์ที่แนบ มีตัวอย่างที่ต้องการ (อยู่ในชีต summary) และตัวอย่างโจทย์จากเครื่อง AAA-01 (อยู่่ในชีต AAA-01)
ปัจจุบันใช้วิธีเรียงด้วยมือนับไป แตจำนวนเครื่องมีมาก เกือบ50 เครื่อง ทำไม่ทันแล้วค่ะ ป้อนข้อมุลก็เสียเวลามากๆค่ะ จึงอยากให้มีคำสั่งเรียงข้อมูลได้ตามลำดับค่ะ

ขอบคุณทุกท่านที่สละเวลามาช่วยนะคะ
You do not have the required permissions to view the files attached to this post.
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: ต้องการเรียงข้อมูลแบบต่อเนื่อง

#2

Post by Bo_ry »

ถูกไหม

Sheet summary
A4 ลากลง
=IFERROR(INDEX('AAA-01'!$E$2:$E$6,MATCH(C4,'AAA-01'!$H$2:$H$6,)),"")

D4 กด Ctrl+Shift+Enter ลากลง

Code: Select all

=IFERROR(IFERROR(INDEX('AAA-01'!$J$2:$AB$99,MATCH(INDEX(C5:C43,MATCH(1,--(A5:A43<>""),)),'AAA-01'!$H$2:$H$9,),IFERROR(1/(1/MOD(19+IF(INDEX('AAA-01'!$I$2:$I$99,MATCH(INDEX(C5:C43,MATCH(1,--(A5:A43<>""),)),'AAA-01'!$H$2:$H$99,))>1,INDEX('AAA-01'!$I$2:$I$99,MATCH(INDEX(C5:C43,MATCH(1,--(A5:A43<>""),)),'AAA-01'!$H$2:$H$99,))-MATCH(1,--(A5:A43<>""),),""),19)),19)),INDEX('AAA-01'!$J$2:$AB$99,MATCH(C4,'AAA-01'!$H$2:$H$99,),INDEX('AAA-01'!$I$2:$I$99,MATCH(C4,'AAA-01'!$H$2:$H$99,)))),"")
You do not have the required permissions to view the files attached to this post.
User avatar
apasri
Member
Member
Posts: 10
Joined: Mon Jan 15, 2018 2:46 pm

Re: ต้องการเรียงข้อมูลแบบต่อเนื่อง

#3

Post by apasri »

Dear K.Bo_Ry

ไม่รู้จะเขียนอะไรดีเลยค่ะ ถูกต้องและใช่ที่ต้องการไปหมด
sheet summary เครื่องอื่น ที่บังเอิญcopy BA#มาผิด พอลอกสูตรไปใช้ ก็ได้ข้อมูลถูกต้องด้วยค่ะ
สุดยอดจริงๆเลยค่ะ เก่งมากเลย โจทย์ยากมากเลยนะคะ ทำได้อย่างไรคะนี่ อยากเก่งแบบคุณจังเลยค่ะ ปลื้มมากค่ะ ^ ^

ขอบคุณมากๆอีกครั้งค่ะ

ปล.ขออภัยที่ตอบช้าค่ะ วันศุกร์มีภาระกิจ ไม่มีเวลาเข้าระบบอินเตอร์เนตเลยค่ะ
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: ต้องการเรียงข้อมูลแบบต่อเนื่อง

#4

Post by Bo_ry »

:D ขอบคุณค่ะ ยินดีที่ได้ช่วย
โจทย์ยากมาก ทำความเข้าใจโจทย์อยู่นาน คิดสูตรเป็นชั่วโมง
ต้องแก้สูตร นิดนึง

อธิบายสูตร

A4 ลากลง
=IFERROR(INDEX('AAA-01'!$E$2:$E$99,MATCH(C4,'AAA-01'!$H$2:$H$99,)),"")
เพื่อลงวันที่ให้ตรงกับ BA# ก่อน เพราะเป็นเงื่อนไขสำคัญสำหรับสูตร Column D

จาก D4
=IFERROR(IFERROR(INDEX('AAA-01'!$J$2:$AB$99,MATCH(INDEX(C5:C43,MATCH(1,--(A5:A43<>""),)),'AAA-01'!$H$2:$H$99,),IFERROR(1/(1/MOD(19+INDEX('AAA-01'!$I$2:$I$99,MATCH(INDEX(C5:C43,MATCH(1,--(A5:A43<>""),)),'AAA-01'!$H$2:$H$99,))-MATCH(1,--(A5:A43<>""),),19)),19)),INDEX('AAA-01'!$J$2:$AB$99,MATCH(C4,'AAA-01'!$H$2:$H$99,),INDEX('AAA-01'!$I$2:$I$99,MATCH(C4,'AAA-01'!$H$2:$H$99,)))),"")

แตกสูตร D4
=INDEX(C5:C43,MATCH(1,--(A5:A43<>""),))
คืนค่าจากC5:C43 ตัวแรกจากแถวด้านล่างที่ A5:A43 ไม่เป็นค่าว่าง คือ A15 คืนค่า C15 =43
D4:D14 จะได้ 43, D15:D25, ได้ 54

เอาไปใช่บ่อยในสูตรเพราะ ต้องการค่าจาก J$2:$AB$99 ตาราง BA#1-BA# 19 ให้ตรงแถว
INDEX('AAA-01'!$J$2:$AB$99,MATCH(43,'AAA-01'!$H$2:$H$99,),column#)

Column#
=IFERROR(1/(1/MOD(19+INDEX('AAA-01'!$I$2:$I$99,MATCH(43,'AAA-01'!$H$2:$H$99,))-MATCH(1,--(A5:A43<>""),),19)),19)

=INDEX('AAA-01'!$I$2:$I$99,MATCH(43,'AAA-01'!$H$2:$H$99,)) เช็คค่า BA#ปัจจุบัน =12 กลายเป็น

=IFERROR(1/(1/MOD(19+12-MATCH(1,--(A5:A43<>""),),19)),19)

คอลัมน์ต้องถอยไปจาก BA#ปัจจุบัน =12 n ช่อง =MATCH(1,--(A5:A43<>""),) =11 ถอยไป 11 ช่อง
=MOD(19+12-11,19) =Mod(20,19) = 1

ถ้าเป็น D15 BA# ปัจจุบัน =4
Column# 12 กลายเป็น 4, =MATCH(1,--(A16:A54<>""),) =11
=MOD(19+4-11,19) =Mod(12,19) = 12

Mod(xx,19) จะคืนค่า 0-18 ถ้าเป็น 0 ต้องการให้คืนค่า 19
เช่นถ้า BA#ปัจจุบัน =1 แล้วถอยไป 1 จะต้องดูค่าจาก BA#19

=IFERROR(1/(1/Mod(18+1,19)),19) เอามาใช้เพื่อคืนค่า 19 เมือ Mod แล้วได้ 0

=INDEX('AAA-01'!$J$2:$AB$99,MATCH(C4,'AAA-01'!$H$2:$H$99,),INDEX('AAA-01'!$I$2:$I$99,MATCH(C4,'AAA-01'!$H$2:$H$99,))))
สำหรับค่าล่าสุด ตาม BA# ล่าสุดถ้า column a แถวด้านล่างไม่เจอวันที่แล้ว
You do not have the required permissions to view the files attached to this post.
Post Reply