Page 1 of 1

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

Posted: Thu Aug 20, 2015 12:15 pm
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 ไม่ได้ครับ จาสูตรที่ผมทำไม่รู้ว่าจะต้องปรับแก้ไขตรงไหนบ้างครับ
รบกวนท่านอาจารย์และเพื่อนๆสมาชิกทุกๆท่านช่วยชี้แนะด้วยครับ
ขอบคุณครับ

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

Posted: Thu Aug 20, 2015 3:51 pm
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:

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

Posted: Thu Aug 20, 2015 8:51 pm
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 ไปด้านขวาและลงด้านล่าง

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

Posted: Fri Aug 21, 2015 8:14 am
by DhitiBank
snasui wrote:SUMPRODUCT(--(E2>$E$2:$E$20))+COUNTIF(E$2:E2,E2))
:thup: ขอบคุณอาจารย์สำหรับเทคนิคใหม่ครับ เพื่อเปลี่ยนค่าซ้ำให้ไม่ซ้ำ

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

Posted: Fri Aug 21, 2015 12:42 pm
by noisuree
:thup: :cp: :cp: ได้ตามแบบที่ผมต้องการเลยครับ
:thup: :thup: ต้องขอขอบคุณอาจารย์ snasui และคุณ DhitiBank มากเลยครับ :cp: :cp:
ขอบคุณครับ

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

Posted: Fri Aug 21, 2015 12:44 pm
by noisuree
ลืมบอกไป ผมต้องวางสูตรแรกตรง เซลล์ F2 ไม่ใช่ E2 ใช่หรือเปล่าครับ

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

Posted: Fri Aug 21, 2015 2:10 pm
by snasui
noisuree wrote:ลืมบอกไป ผมต้องวางสูตรแรกตรง เซลล์ F2 ไม่ใช่ E2 ใช่หรือเปล่าครับ
:D น่าจะใช่ตามนั้น สามารถปรับได้เองตามสะดวกเลยครับ :mrgreen:

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

Posted: Sat Aug 22, 2015 12:39 am
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))

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

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

Posted: Sat Aug 22, 2015 11:38 am
by noisuree
:cp: :cp: ขอบคุณครับ ผมจะได้เลือกใช้ได้ทั้ง 2 แบบ เลย