Page 1 of 1
ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเดียว
Posted: Sun Nov 03, 2013 10:20 pm
by Edelbroy
คือผมต้องการเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเดียวจะทำได้ไหมครับ
1.จากข้อมูลผมอยากจะเรียงข้อมูลจาก code ก่อนเป็นหลักโดยเรียงจากมากไปน้อย
2.จากข้อมูลถ้ามีบ้างอันที่มี code ซ่ำกัน อยากให้ข้อมูลเรียง item จากน้อยไปมากตามตัวอย่างครับ
(ถ้าเกิดเรียง item ไม่ได้ก็ไม่เป็นไรครับขอข้อ 1 อย่างเดียวพอ )
ผมได้ทำสีจาง ๆ ข้อมูลที่มี code ซ่ำกันเอาไว้เผื่อจะได้ดูง่าย ๆ ข้อมูลจริง ๆ มีเยอะกว่านี้มากครับแต่ละวันก็จะไม่เหมือนกัน
ขอคุณมากครับ

Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ
Posted: Mon Nov 04, 2013 2:55 am
by bank9597
บรรทัดเดียวไม่น่าทำได้ครับ ต้องมีคอลัมน์อื่นมาช่วยครับ
ลองดูตามนี้ครับ ว่าได้หรือไม่
ที่ 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) คัดลอกลงมา
Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ
Posted: Mon Nov 04, 2013 9:29 am
by cruzz
ประเด็นหลักคือ
1. สร้าง id ที่ต้องทำทำให้สามารถจัดเรียงได้
2. id นั้นมากจากค่าลำดับความสำคัญ ก่อนหลัง
ผมยกตัวอย่างตัวเลข ปี เดือน วัน ให้ปีสำคัญ >เดือน>วัน
บางคนใช้ id วันนี้ = 04-11-2556
ถ้าเป็นผมจะได้ว่า = 25561104
จากตัวอย่างของคุณ ต้องการให้ code สำคัญกว่า item ก็จัดเรียงตามที่คุณต้องการได้ตามนั้นครับ
Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ
Posted: Tue Nov 05, 2013 2:30 pm
by Edelbroy
bank9597 wrote:
บรรทัดเดียวไม่น่าทำได้ครับ ต้องมีคอลัมน์อื่นมาช่วยครับ
ลองดูตามนี้ครับ ว่าได้หรือไม่
ที่ 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 จะได้ไหมครับ ให้มันเรียงตามโค้ดอย่างเดียว ตั้งแต่หลักหน่วยไปจนถึงหลักร้อย โดยไม่สนใจข้อมูลที่อยู่ซ้ายขวา เพราะข้อมูลซ้ายขวามันมีการเปลี่ยนแปลงครับ ก็เลยยึดไม่ได้
Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ
Posted: Tue Nov 05, 2013 3:08 pm
by bank9597

หากยึดแต่ 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 มีจำนวนหลักไม่เท่ากัน ลองแนบไฟล์มาครับ ผมจะลองปรับสูตรให้ใหม่ ให้สามารถปรับไปตามข้อมูลแบบอัตโนมัติ
Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ
Posted: Wed Nov 06, 2013 5:27 pm
by Edelbroy
bank9597 wrote:
หากยึดแต่ 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 มีจำนวนหลักไม่เท่ากัน ลองแนบไฟล์มาครับ ผมจะลองปรับสูตรให้ใหม่ ให้สามารถปรับไปตามข้อมูลแบบอัตโนมัติ
ตามนี้เลยครับ ถ้าเกิดของเดิมมันเป็นไปไม่ได้ผมรบกวนช่วยเขียนแก้สูตรตามที่แนบให้หน่อยครับ(ดึงข้อมูลที่ไม่ซ่ำกันมาเรียงต่อกันตามเลขตัวหน้า)
Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ
Posted: Wed Nov 06, 2013 6:17 pm
by bank9597
ที่ 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 ใช้หลักการใดในการเรียงลำดับ เพราะคำตอบที่ต้องการ ไม่มีปรากฏการเรียงลำดับเลย
Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ
Posted: Wed Nov 06, 2013 7:28 pm
by Edelbroy
bank9597 wrote:
ที่ 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 ใช้หลักการใดในการเรียงลำดับ เพราะคำตอบที่ต้องการ ไม่มีปรากฏการเรียงลำดับเลย
เย้!! ได้แล้วว

ตรงตามที่ต้องการเลยครับ ขอบคุณมากน่ะครับรบกวนหลายรอบเลย
ส่วนคำถามที่ 2 ไม่มีหลักการครับ คืองี้ครับผมเรียงมั่วตามตัวเลขตัวแรกอ่ะครับ
คือ 2 เป็นค่าที่น้อยที่สุดให้มันไปอยู่บนสุด เรียงต่อกันมา ถึงสุดท้าย ก็คือเลข 9 (เรียงจากน้อยไปหามากแต่ผมได้ตัดส่วนที่มันซ้ำกันอยู่ออกแล้วครับ)
แต่เวลาเขียนสูตรมันอาจไม่ตรงคำตอบแน่นอนครับ เพราะผมเรียงมั่ว แต่ให้สูตรมันเรียงตามตัวเลขตัวแรกก็พอครับแล้วตัดอันที่ซ้ำกันออก
Re: ช่วยหน่อยครับเรียงข้อมูลจากมากไปน้อยโดยใช้สูตรแค่บรรทัดเ
Posted: Wed Nov 06, 2013 7:44 pm
by bank9597

คำถามที่ 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