: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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Edelbroy
Member
Member
Posts: 22
Joined: Wed May 15, 2013 4:47 pm

ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเดียว

#1

Post by Edelbroy »

คือผมต้องการเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเดียวจะทำได้ไหมครับ
1.จากข้อมูลผมอยากจะเรียงข้อมูลจาก code ก่อนเป็นหลักโดยเรียงจากมากไปน้อย
2.จากข้อมูลถ้ามีบ้างอันที่มี code ซ่ำกัน อยากให้ข้อมูลเรียง item จากน้อยไปมากตามตัวอย่างครับ
(ถ้าเกิดเรียง item ไม่ได้ก็ไม่เป็นไรครับขอข้อ 1 อย่างเดียวพอ )

ผมได้ทำสีจาง ๆ ข้อมูลที่มี code ซ่ำกันเอาไว้เผื่อจะได้ดูง่าย ๆ ข้อมูลจริง ๆ มีเยอะกว่านี้มากครับแต่ละวันก็จะไม่เหมือนกัน

ขอคุณมากครับ
:thup: :thup: :thup:
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ

#2

Post by bank9597 »

:D บรรทัดเดียวไม่น่าทำได้ครับ ต้องมีคอลัมน์อื่นมาช่วยครับ

ลองดูตามนี้ครับ ว่าได้หรือไม่
ที่ E4 คีย์ =MID(B4,10,3) ตัดลอกลงมา
ที่ F4 คีย์ =LEFT(B4,6) คัดลอกลงมา
ที่ G4 คีย์ =TEXT(LARGE($E$4:$E$20+0,ROWS($E$4:E4)),"000") กด ctrl+shift+enter คัดลอกลงมา
ที่ H4 คีย์ =TEXT(SMALL(IF($E$4:$E$20=G4,$F$4:$F$20+0),COUNTIF($G$4:G4,G4)),"000.00") กด ctrl+shift+enter คัดลอกลงมา
ที่ D4 คีย์ =LOOKUP(2,1/((MID($B$4:$B$20,10,3)=G4)*(LEFT($B$4:$B$20,6)=H4)),$B$4:$B$20) คัดลอกลงมา
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
cruzz
Member
Member
Posts: 54
Joined: Thu Dec 23, 2010 1:07 pm

Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ

#3

Post by cruzz »

ประเด็นหลักคือ
1. สร้าง id ที่ต้องทำทำให้สามารถจัดเรียงได้
2. id นั้นมากจากค่าลำดับความสำคัญ ก่อนหลัง

ผมยกตัวอย่างตัวเลข ปี เดือน วัน ให้ปีสำคัญ >เดือน>วัน
บางคนใช้ id วันนี้ = 04-11-2556
ถ้าเป็นผมจะได้ว่า = 25561104

จากตัวอย่างของคุณ ต้องการให้ code สำคัญกว่า item ก็จัดเรียงตามที่คุณต้องการได้ตามนั้นครับ
Edelbroy
Member
Member
Posts: 22
Joined: Wed May 15, 2013 4:47 pm

Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ

#4

Post by Edelbroy »

bank9597 wrote::D บรรทัดเดียวไม่น่าทำได้ครับ ต้องมีคอลัมน์อื่นมาช่วยครับ

ลองดูตามนี้ครับ ว่าได้หรือไม่
ที่ E4 คีย์ =MID(B4,10,3) ตัดลอกลงมา
ที่ F4 คีย์ =LEFT(B4,6) คัดลอกลงมา
ที่ G4 คีย์ =TEXT(LARGE($E$4:$E$20+0,ROWS($E$4:E4)),"000") กด ctrl+shift+enter คัดลอกลงมา
ที่ H4 คีย์ =TEXT(SMALL(IF($E$4:$E$20=G4,$F$4:$F$20+0),COUNTIF($G$4:G4,G4)),"000.00") กด ctrl+shift+enter คัดลอกลงมา
ที่ D4 คีย์ =LOOKUP(2,1/((MID($B$4:$B$20,10,3)=G4)*(LEFT($B$4:$B$20,6)=H4)),$B$4:$B$20) คัดลอกลงมา
ลองเรียบร้อยใช้ได้ตามตัวอย่างแต่ติดปัญหาตรงที่เวลาเอาไปใช้งานจริงข้อมูลมันเพี้ยนไปจากตัวอย่างเช่น ในส่วนของ item มี / และมีข้อความสั้นลงเช่น 5.5/25 และ โค้ดเปลี่ยนจากหลัก ร้อย เป็นหลัก สิบ และ หน่วย เช่น จาก 101 เป็น 11 หรือ แค่ 1 จึงทำให้เวลาลากสูตร copy ยาว ๆ ทำให้ errer ครับ แต่ยังไงก็ขอบคุณมากครับ เดียวผมขอสรุปข้อมูลแล้วจะลองถามใหม่ดูอีกที่ แต่ถ้า จะจับแต่ code จะได้ไหมครับ ให้มันเรียงตามโค้ดอย่างเดียว ตั้งแต่หลักหน่วยไปจนถึงหลักร้อย โดยไม่สนใจข้อมูลที่อยู่ซ้ายขวา เพราะข้อมูลซ้ายขวามันมีการเปลี่ยนแปลงครับ ก็เลยยึดไม่ได้
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ

#5

Post by bank9597 »

:D หากยึดแต่ Code ก็จะสามารถปรับสูตรสูตรใหม่ได้ดังนี้

ที่ E4 คีย์ =MID($B$4:$B$20,10,3)+0 คัดลอกลงมา
ที่ F4 คีย์ =COUNTIF($E$4:E4,E4) คัดลอกลงมา
ที่ G4 คีย์ =RANK(E4,$E$4:$E$20)-1 คัดลอกลงมา
ที่ H4 คีย์ =F4+G4 คัดลอกลงมา

ที่ D4 คีย์ =INDEX($B$4:$B$20,MATCH(1,IF($H$4:$H$20=SMALL($H$4:$H$20,ROWS($B$4:B4)),1),0)) กด ctrl+shift+enter คัดลอกลงมา


ส่วนแบบที่ Item มีจำนวนหลักไม่เท่ากัน ลองแนบไฟล์มาครับ ผมจะลองปรับสูตรให้ใหม่ ให้สามารถปรับไปตามข้อมูลแบบอัตโนมัติ
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
Edelbroy
Member
Member
Posts: 22
Joined: Wed May 15, 2013 4:47 pm

Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ

#6

Post by Edelbroy »

bank9597 wrote::D หากยึดแต่ Code ก็จะสามารถปรับสูตรสูตรใหม่ได้ดังนี้

ที่ E4 คีย์ =MID($B$4:$B$20,10,3)+0 คัดลอกลงมา
ที่ F4 คีย์ =COUNTIF($E$4:E4,E4) คัดลอกลงมา
ที่ G4 คีย์ =RANK(E4,$E$4:$E$20)-1 คัดลอกลงมา
ที่ H4 คีย์ =F4+G4 คัดลอกลงมา

ที่ D4 คีย์ =INDEX($B$4:$B$20,MATCH(1,IF($H$4:$H$20=SMALL($H$4:$H$20,ROWS($B$4:B4)),1),0)) กด ctrl+shift+enter คัดลอกลงมา


ส่วนแบบที่ Item มีจำนวนหลักไม่เท่ากัน ลองแนบไฟล์มาครับ ผมจะลองปรับสูตรให้ใหม่ ให้สามารถปรับไปตามข้อมูลแบบอัตโนมัติ

ตามนี้เลยครับ ถ้าเกิดของเดิมมันเป็นไปไม่ได้ผมรบกวนช่วยเขียนแก้สูตรตามที่แนบให้หน่อยครับ(ดึงข้อมูลที่ไม่ซ่ำกันมาเรียงต่อกันตามเลขตัวหน้า)
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ

#7

Post by bank9597 »

:D

ที่ I4 คีย์ =SUBSTITUTE(TRIM(SUBSTITUTE(B4,"Z","")),"-","") คัดลอกลงมา
ที่ E4 8ีย์ =LEFT(SUBSTITUTE(I4,LEFT(I4,FIND(" ",I4)+1),""),FIND(" ",SUBSTITUTE(I4,LEFT(I4,FIND(" ",I4)+1),"")))+0 คัดลอกลงมา

ส่วนที่เหลือใช้สูตรเดิม

คำถามที่ 2 ใช้หลักการใดในการเรียงลำดับ เพราะคำตอบที่ต้องการ ไม่มีปรากฏการเรียงลำดับเลย
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
Edelbroy
Member
Member
Posts: 22
Joined: Wed May 15, 2013 4:47 pm

Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ

#8

Post by Edelbroy »

bank9597 wrote::D

ที่ I4 คีย์ =SUBSTITUTE(TRIM(SUBSTITUTE(B4,"Z","")),"-","") คัดลอกลงมา
ที่ E4 8ีย์ =LEFT(SUBSTITUTE(I4,LEFT(I4,FIND(" ",I4)+1),""),FIND(" ",SUBSTITUTE(I4,LEFT(I4,FIND(" ",I4)+1),"")))+0 คัดลอกลงมา

ส่วนที่เหลือใช้สูตรเดิม

คำถามที่ 2 ใช้หลักการใดในการเรียงลำดับ เพราะคำตอบที่ต้องการ ไม่มีปรากฏการเรียงลำดับเลย

เย้!! ได้แล้วว :D ตรงตามที่ต้องการเลยครับ ขอบคุณมากน่ะครับรบกวนหลายรอบเลย :D

ส่วนคำถามที่ 2 ไม่มีหลักการครับ คืองี้ครับผมเรียงมั่วตามตัวเลขตัวแรกอ่ะครับ :tt:
คือ 2 เป็นค่าที่น้อยที่สุดให้มันไปอยู่บนสุด เรียงต่อกันมา ถึงสุดท้าย ก็คือเลข 9 (เรียงจากน้อยไปหามากแต่ผมได้ตัดส่วนที่มันซ้ำกันอยู่ออกแล้วครับ)
แต่เวลาเขียนสูตรมันอาจไม่ตรงคำตอบแน่นอนครับ เพราะผมเรียงมั่ว แต่ให้สูตรมันเรียงตามตัวเลขตัวแรกก็พอครับแล้วตัดอันที่ซ้ำกันออก
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ

#9

Post by bank9597 »

:D คำถามที่ 2 ใช้วิธีเดิมครับ

ที่ D23 ใช้สูตรเดิม

ที่ F23 คีย์ =LEFT(SUBSTITUTE(D23,"/","-"),FIND("-",SUBSTITUTE(D23,"/","-"))-1)*1 คัดลอกลงมา
ที่ G23 คีย์ =COUNTIF($F$23:F23,F23)-1 คัดลอกลงมา
ที่ H23 คีย์ =RANK(F23,$F$23:$F$30,1)+G23 คัดลกลงมา

ที่ E23 คีย์ =INDEX($D$23:$D$30,MATCH(1,IF($H$23:$H$30=SMALL($H$23:$H$30,ROWS($H$23:H23)),1),0)) กด ctrl+shift+enter
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
Post Reply