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

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

#1

Post by noisuree »

เรียนท่านอาจารย์และเพื่อนๆสมาชิกทุกๆท่านครับผมมีปัญหาเรื่องการเรียงข้อมูลในสูตรครับ (ตาม file แนบครับ )
:arrow: สิ่งที่ต้องการคือ ดึงข้อมูลจาก A2:E20 มาใส่ใน G1:K11 โดย
1.1 เลือกจาก Column C มาแค่ 10 รายการ และต้องเป็นรายการที่มีราคามากที่สุดมาก่อน
1.2 โดยจะต้องมี OnHand มากกว่า "0"(ถ้า = 0 ตัดทิ้ง)
1.3 ให้ข้อมูลที่ออกมาเรียงตาม Colum K (Location)

:?: ปัญหาคือ :?: ผมทำข้อ1.3 ไม่ได้ครับ จาสูตรที่ผมทำไม่รู้ว่าจะต้องปรับแก้ไขตรงไหนบ้างครับ
รบกวนท่านอาจารย์และเพื่อนๆสมาชิกทุกๆท่านช่วยชี้แนะด้วยครับ
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#2

Post by DhitiBank »

อาจลองแบบนี้ครับ (หากใช้ไม่ได้ก็ขออภัยครับ ไม่มีคอมฯ ให้ลอง) เอาคอลัมน์ M, N, O มาช่วย

1. สร้างรายการ location ที่เข้าเงื่อนไข คือ OnHand ไม่เป็น 0 และดูจากยอดขายมากที่สุดก่อน แต่เนื่องจากยอดขายมีซ้ำกันด้วยจึงเอาเลขแถวมาช่วยครับ
ที่ M2 คีย์

Code: Select all

=IFERROR(INDEX($E$2:$E$20,MATCH(LARGE(IF($C$2:$C$20>0,--(ROUND($D$2:$D$20*100,0)&TEXT(ROW($D$2:$D$20),"000"))),ROWS(M$2:M2)),--(ROUND($D$2:$D$20*100,0)&TEXT(ROW($D$2:$D$20),"000")),0)),"")
กด Ctrl+Shift ค้าง แล้วกด Enter

2. จากนั้น หาว่า location ดังกล่าว อยู่ในตำแหน่งที่เท่าไรใน database
ที่ N2 คีย์

Code: Select all

=IFERROR(MATCH(M2,$E$2:$E$20,0),"")
3. นับจำนวน location ที่เข้าเงื่อนไขในคอลัมน์ M
ที่ N1 คีย์

Code: Select all

=MAX(1,COUNTIF(M:M,"*?"))
4. จัดลำดับชื่อ location ในคอลัมน์ M
ที่ O2 คีย์

Code: Select all

=IF(ROWS(O$2:O2)>10,"",SUMPRODUCT(--(M2>OFFSET(M$1,1, ,$N$1)))+1)
5. คัดลอกสูตรที่ M2, N2 และ O2 ลงไปถึงแถวที่ 11 ครับ

6. ที่ G2 คีย์

Code: Select all

=IFERROR(INDEX(A$2:A$20,INDEX($N$2:$N$11,MATCH(ROWS(G$2:G2),$O$2:$O$11,0))),"")
แล้วคัดลอกสูตรที่ G2 ไปจนถึง K11 ครับ

ปล. หากสูตรใช้ไม่ได้ตั้งแต่ข้อ 1 ก็หยุดทำเลยครับ ในมือถือมันกดแบบอาร์เรย์ไม่ได้ :rz:
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#3

Post by snasui »

:D อีกตัวอย่างครับ
  1. เซลล์ F2 คีย์สูตรเพื่อจัดอันดับข้อมูลตาม Location ไม่รวมค่าทีเป็น 0 และค่าที่เป็นตัวเลขที่เกิน 10 อันดับแรก
    =IF(OR(C2=0,COUNTIF(C$2:C2,">0")>10),"",SUMPRODUCT(--(E2>$E$2:$E$20))+COUNTIF(E$2:E2,E2))
    Enter > Copy ลงด้านล่าง
  2. เซลล์ G2 คีย์สูตรเพื่อเรียงลำดับข้อมูลใหม่ตามต้องการ
    =INDEX(A$2:A$20,MATCH(SMALL($F$2:$F$20,ROWS(G$2:G2)),$F$2:$F$20,0))
    Enter > Copy ไปด้านขวาและลงด้านล่าง
Last edited by snasui on Fri Aug 21, 2015 7:05 pm, edited 1 time in total.
Reason: Chage E2 to F2
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#4

Post by DhitiBank »

snasui wrote:SUMPRODUCT(--(E2>$E$2:$E$20))+COUNTIF(E$2:E2,E2))
:thup: ขอบคุณอาจารย์สำหรับเทคนิคใหม่ครับ เพื่อเปลี่ยนค่าซ้ำให้ไม่ซ้ำ
noisuree
Member
Member
Posts: 19
Joined: Mon Jun 10, 2013 10:47 pm

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

#5

Post by noisuree »

:thup: :cp: :cp: ได้ตามแบบที่ผมต้องการเลยครับ
:thup: :thup: ต้องขอขอบคุณอาจารย์ snasui และคุณ DhitiBank มากเลยครับ :cp: :cp:
ขอบคุณครับ
noisuree
Member
Member
Posts: 19
Joined: Mon Jun 10, 2013 10:47 pm

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

#6

Post by noisuree »

ลืมบอกไป ผมต้องวางสูตรแรกตรง เซลล์ F2 ไม่ใช่ E2 ใช่หรือเปล่าครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#7

Post by snasui »

noisuree wrote:ลืมบอกไป ผมต้องวางสูตรแรกตรง เซลล์ F2 ไม่ใช่ E2 ใช่หรือเปล่าครับ
:D น่าจะใช่ตามนั้น สามารถปรับได้เองตามสะดวกเลยครับ :mrgreen:
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

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

#8

Post by DhitiBank »

ผมขอแก้สูตรที่ผมเขียนไว้ให้เสร็จนะครับ เพิ่งมาลองกับคอมและเห็นว่าต้องปรับนิดหน่อย :sg:

ที่ N1
=MIN(10,COUNTIF(M:M,"*?"))

ที่ N2
=IFERROR(SMALL(IF($E$2:$E$20=M2,ROW($E$2:$E$20)-ROW($E$2)+1),COUNTIF(M$2:M2,M2)),"")
Ctrl+Shift+Enter

ที่ O2
=IF(ROWS(O$2:O2)>10,"",SUMPRODUCT(--(M2>OFFSET(M$1,1, ,$N$1)))+COUNTIF(M$2:M2,M2))

อย่างไรก็ตาม หากได้เรียงราคาจากมากไปหาน้อยเอาไว้ก่อนแล้ว เลือกทำแบบอาจารย์จะสะดวกกว่ามากครับ วิธีที่ผมบอกนี้สมมติจากข้อมูลดิบที่ไม่ได้เรียงไว้ก่อน
noisuree
Member
Member
Posts: 19
Joined: Mon Jun 10, 2013 10:47 pm

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

#9

Post by noisuree »

:cp: :cp: ขอบคุณครับ ผมจะได้เลือกใช้ได้ทั้ง 2 แบบ เลย
Post Reply