PDA

View Full Version : ใช้สูตร Array นับจำนวนคนภายใต้เงื่อนไขที่กำหนด



Sumon
10 Jun 2007, 19:21
ผมต้องการใช้สูตร Array นับจำนวนคนภายใต้เงื่อนไขที่กำหนด ดังตัวอย่างในไฟล์แนบครับ

ในไฟล์ จะมีวันที่ขาย ชื่อพนักงานขาย และยอดขาย
เป้าหมายคือ อยากรู้ว่าในเดือนที่กำหนด (ในตัวอย่างเป็นเดือน 2) มีพนักงานขายกี่คนที่สามารถขายของได้

จริงๆแล้ว มีวิธีการหาง่ายๆ โดยใช้ pivot table แต่เนื่องจากว่าต้องการนำไปใช้เป็นส่วนหนึ่งในรายงานที่มีการคำนวณหาค่าอื่นๆโดยใช้ Array Formular อยู่แล้ว จึงอยากได้แนวทางการคำนวณโดยใช้สูตร Array Formular ครับ จะได้คำนวณจบได้ในหน้าเดียว

วานิชย์
11 Jun 2007, 13:50
=SUM(IF(FREQUENCY(MATCH(IF(MONTH($B$3:$B$9)=$F$11,$C$3:$C$9),IF(MONTH($B$3:$B$9)=$F$11,$C$3:$C$9),0),MATCH(IF(MONTH($B$3:$B$9)=$F$11,$C$3:$C$9),IF(MONTH($B$3:$B$9)=$F$11,$C$3:$C$9),0))>0,1,0))-1

สูตรนี้เป็น Array อย่าลืมกด Ctrl+Shift+Ente ด้วยนะครับ
ตัวอย่างตามไฟล์แนบนะครับ
ปล.สูตรนี้ยังไม่ครอบคลุมกรณีที่พนักงานทุกคนขายในเดือนเดียวกันทั้งหมดนะครับ :)

สมเกียรติ
11 Jun 2007, 15:50
=COUNT(SMALL(IF((MONTH(B4:B10)=G2)*(MATCH(C4:C10&MONTH(B4:B10),C4:C10&MONTH(B4:B10),0))=A4:A10,A4:A10),A4:A10))

A4 : A10 เป็นเลขลำดับ 1-7
ลูกเล่นอยู่ที่ทำให้ชื่อพนักงานที่อยู่ต่างเดือนกันเป็นชื่อที่ต่างกัน โดยนำชื่อกับเลขเดือนมาต่อกันก่อนแล้วจึงใช้นำไปเทียบหาตำแหน่งรายการต่อครับ

อรวีร์
11 Jun 2007, 17:01
ลองดูอีกแบบค่ะ ไม่ใช้สูตร Array (ไม่ตรงกับที่โจทย์ต้องการ :p)

สมเกียรติ
11 Jun 2007, 17:52
ตัวอย่างที่ผมแนบคราวก่อน มีจุดอ่อนตรงที่ยังไม่สามารถหารายการทั้งหมดมาแสดงได้ จึงคิดอีกวิธีครับ โดยนำตำแหน่งรายการของชื่อมาบวกกับเลขที่รายการ แต่ทำให้เป็นเศษ เพื่อใช้เศษนี้แสดงตำแหน่งรายการ น่าจะสมบูรณ์แล้วครับ


=SMALL(IF(MONTH(B4:B10)=G2,MATCH(C4:C10&MONTH(B4:B10),C4:C10&MONTH(B4:B10),0)+A4:A10/100),A4:A10)

Sumon
11 Jun 2007, 18:43
ขอบคุณ ทุกๆท่านครับ
ขอเวลานำความรู้ไปศึกษา หากสงสัยจะกลับมาถามเพิ่มเติมครับ :)

hs1
12 Jun 2007, 15:46
ผมลองใช้วิธีของคุณอรวีร์และใช้ Ifเข้ามาช่วยเล็กน้อย
และสูตร{=SUMPRODUCT(--($E$2:$E$9<>"")/COUNTIF($E$2:$E$9,$E$2:$E$9&""))}
ครับ

สมเกียรติ
12 Jun 2007, 16:24
เยี่ยมเลยครับ ขอปรับสูตรให้สั้นลงเป็น
=SUMPRODUCT(($E$2:$E$8<>"")/COUNTIF($E$2:$E$8,$E$2:$E$8))

ไม่ต้องใส่ -- เพราะสูตรหารช่วยเปลี่ยน True=1 และ False=0 อยู่แล้ว
ไม่ต้อง Ctrl+Shift+Enter เพราะ SumProduct

มิตรภาพ
12 Jun 2007, 19:59
ผมขออนุญาตท่านเจ้าของกระทู้ เข้ามาแจมสักนิดนะครับ (เพราะทนไม่ไหวจริงๆ ถึงแม้ อ.สมเกียรติจะเคยบอกว่า อย่ายอกันเลย เดี๋ยวไม่งาม:))


เยี่ยมเลยครับ ขอปรับสูตรให้สั้นลงเป็น

ตั้งแต่ผมเข้าๆออกๆในบอร์ดนี้ ได้อ่านกระทู้ต่างๆของท่านสมาชิก และอ่านคำถามคำตอบต่างๆแล้ว
ทั้งสูตรและโค้ด VBA ที่ผมใช้ทำงานอยู่ พากันสั้นลงๆ แต่เร็วขึ้นๆทุกวันๆเลยครับ:p

สมเกียรติ
13 Jun 2007, 18:07
ปัญหานี้ค่อนข้างท้าทายมาก นานแล้วที่ไม่เจอคำถามแบบนี้และคำตอบที่ทำให้คิดต่ออย่างนี้ครับ แม้ได้คำตอบไปแล้วก็ตาม ตอนนี้ผมยังคิดหาทางอื่น สูตรอื่นที่ง่าย และสั้นกว่านี้ว่ายังมีวิธีอื่นอีกไหม ... มีอีกไหมเนี่ย

boy
19 Jun 2007, 03:31
ขอร่วมเสนอวิธีนับโดยไม่ต้องเพิ่มการคำนวนอีกคอลัมน์นะครับ