Page 1 of 1

ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 10:14 am
by bowjung
สวัสดีค่ะอาจารย์คนควน และท่านกูรูทุกท่าน ดิฉันอยากทราบสูตรที่สามารถคำนวณอายุตามเงื่อนไขที่เรากำหนดค่ะ
คือ ในกรณีที่ต้องการทราบช่วงอายุของแต่ละคน เช่น อายุ 18 - 25 ปี มีกี่คน และมีใครบ้างค่ะ ที่ต้องการ
คำตอบคือ ที่ทำตัวเลข ตัวอักษรสีแดง พื้นหลังสีเหลืองค่ะ รบกวนช่วยหน่อยนะคะ ส่วนฐานข้อมูลอยู่ด้านซ้ายค่ะ
รายละเอียดตามไฟล์แนบค่ะ

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 11:18 am
by ZEROV
ช่วงอายุน่าจะผิดครับ
18-25 26-30 30-35 35-40 41-45 46-50 51-55

น่าจะเป็นแบบนี้

18-25 26-30 31-35 36-40 41-45 46-50 51-55

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 11:20 am
by bowjung
ZEROV wrote:ช่วงอายุน่าจะผิดครับ
18-25 26-30 30-35 35-40 41-45 46-50 51-55

น่าจะเป็นแบบนี้

18-25 26-30 31-35 36-40 41-45 46-50 51-55
ใช่ ๆ ค่ะ พิมพ์ผิด ขอโทษค่ะ

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 11:22 am
by ZEROV
สูตรแบ่งกลุ่มอายุ
d2=MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0)
Copy สูตรลงไป
สูตรนับจำนวนตามกลุ่มอายุ
e4=COUNTIF($D:$D,2)

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 11:30 am
by bowjung
ZEROV wrote:สูตรแบ่งกลุ่มอายุ
d2=MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0)
Copy สูตรลงไป
สูตรนับจำนวนตามกลุ่มอายุ
e4=COUNTIF($D:$D,2)
ให้ copy ใส่ช่องไหนหรอคะ มันแสดง FALSE ค่ะ
แล้ว D2 มาจากไหนหรอคะ

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 11:31 am
by tupthai
1.สูตรหาความถี่ ใช้ FREQUENCY(data_array, bins_array)
data_array=$C$2:$C$27
bins_array =$S$4:$S$11 ดังนี้
S4=17
S5=25
S6=30
S..=..
ตามลำดับ ฯ
FREQUENCY($C$2:$C$27,$S$4:$S$11)
ดึงข้อมูล ช่วงความถี่ที่ต้องการ ใช้ index
E4=INDEX(FREQUENCY($C$2:$C$27,$S$4:$S$11),2)
Enter>
copy ไปใช้ให้เปลี่ยน หมายเลขลำดับของช่วงความถี่ที่ต้องการ
เลข 2 คือ ความถี่ของช่วงที่ 2 อายุ 18-25 ส่วน เลข 1 คือ ความถี่ของช่วงที่ 1 อายุ <=17

2.หาชื่อคน ตามช่วงอายุ
F4=IF(ROW()-3>E$4,"",INDEX($B$1:$B$27,SMALL(IF($C$2:$C$27>=18,IF($C$2:$C$27<=25,ROW($C$2:$C$27))),ROW()-3)))
ctrl+shift+enter >copy ลงด้านล่าง

copy ไปใช้คอลัมน์อี่นให้เปลี่ยนเงือนไขช่วงอายุ

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 11:34 am
by bank9597
ZEROV wrote:สูตรแบ่งกลุ่มอายุ
d2=MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0)
Copy สูตรลงไป
สูตรนับจำนวนตามกลุ่มอายุ
e4=COUNTIF($D:$D,2)
ต่อยอดจากคุณ ZEROV
ที่ F4 คีย์ =IF(ROWS($F$4:F4)>$E$4,"",INDEX($B$2:$B$27,SMALL(IF($D$2:$D$27=2,ROW($B$2:$B$27)-ROW($B$2)+1),ROWS($F$4:F4))))
กด Ctrl+Shift+Enter คัดลอกลงมา

ในคอลัมน์อื่นๆ ก็เปลี่ยนไปตามเงื่อนไขนั้นครับ :D

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 11:48 am
by bank9597
bowjung wrote:
ZEROV wrote:สูตรแบ่งกลุ่มอายุ
d2=MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0)
Copy สูตรลงไป
สูตรนับจำนวนตามกลุ่มอายุ
e4=COUNTIF($D:$D,2)
ให้ copy ใส่ช่องไหนหรอคะ มันแสดง FALSE ค่ะ
แล้ว D2 มาจากไหนหรอคะ
ที่ D2 หรือคอลัมน์ D ผู้ตอบต้องการแยกแบ่งกลุ่มอายุให้ตรงกับเงื่อนไขที่ระบุไว้ เพื่อที่จะใช้เป็นคีย์หลักในการนับจำนวนและดึงข้อมูลไปแสดงครับ ซึ่งหากไม่ทำเช่นนี้ก็จะเป็นการยากในการใช้สูตรครับ

ส่วนที่ขึ้น False นั้น ไม่ทราบว่านำสูตรไหนไปวางเซลล์ไหนครับ

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 1:28 pm
by bowjung
tupthai wrote:1.สูตรหาความถี่ ใช้ FREQUENCY(data_array, bins_array)
data_array=$C$2:$C$27
bins_array =$S$4:$S$11 ดังนี้
S4=17
S5=25
S6=30
S..=..
ตามลำดับ ฯ
FREQUENCY($C$2:$C$27,$S$4:$S$11)
ดึงข้อมูล ช่วงความถี่ที่ต้องการ ใช้ index
E4=INDEX(FREQUENCY($C$2:$C$27,$S$4:$S$11),2)
Enter>
copy ไปใช้ให้เปลี่ยน หมายเลขลำดับของช่วงความถี่ที่ต้องการ
เลข 2 คือ ความถี่ของช่วงที่ 2 อายุ 18-25 ส่วน เลข 1 คือ ความถี่ของช่วงที่ 1 อายุ <=17

2.หาชื่อคน ตามช่วงอายุ
F4=IF(ROW()-3>E$4,"",INDEX($B$1:$B$27,SMALL(IF($C$2:$C$27>=18,IF($C$2:$C$27<=25,ROW($C$2:$C$27))),ROW()-3)))
ctrl+shift+enter >copy ลงด้านล่าง

copy ไปใช้คอลัมน์อี่นให้เปลี่ยนเงือนไขช่วงอายุ
ขอบคุณมากค่ะ

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 1:32 pm
by bowjung
bank9597 wrote:
ZEROV wrote:สูตรแบ่งกลุ่มอายุ
d2=MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0)
Copy สูตรลงไป
สูตรนับจำนวนตามกลุ่มอายุ
e4=COUNTIF($D:$D,2)
ต่อยอดจากคุณ ZEROV
ที่ F4 คีย์ =IF(ROWS($F$4:F4)>$E$4,"",INDEX($B$2:$B$27,SMALL(IF($D$2:$D$27=2,ROW($B$2:$B$27)-ROW($B$2)+1),ROWS($F$4:F4))))
กด Ctrl+Shift+Enter คัดลอกลงมา

ในคอลัมน์อื่นๆ ก็เปลี่ยนไปตามเงื่อนไขนั้นครับ :D
ขอบคุณมากค่ะ
ขอบสอบถามหน่อยค่ะ ทำไมเวลาที่เรา Copy สูตรของรายชื่อ เช่น F4 ลงมาแล้ว จึงแสดง #NUM! ค่ะ หรือดับเบิ้ลคลิกสูตร ก็จะแสดง #NUM! เช่นกันค่ะ
กด Ctrl+Shift+Enter คัดลอกลงมา ทำอย่างไรคะ คือลองทำแล้ว แต่ก็เห็นแสดง ***คงทำไม่เป็นน่ะคะ****

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 2:49 pm
by bank9597
:D หากวางสูตรตามที่ผมตอบไปถุกต้องแล้ว ก็น่าจะผิดในขั้นตอนการกดครับ การกด Ctrl+Shift+Enter คือ พอวางสูตรลงในแถบสูนแล้ว อย่าเพิ่ง Enter ให้กด CtrlและShift ค้างไว้ ตามด้วย Enter ครับ แล้วคัดลอกลงมา

ทบทวนการใส่สูตรอีกครั้งครับ
ที่ D2 คีย์ =MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0) คัดลอกลงมาจนสุดแถว
ที่ E4 คีย์ =Countif(D2:D30,2)
ที่ F4 คีย์ =IF(ROWS($F$4:F4)>$E$4,"",INDEX($B$2:$B$27,SMALL(IF($D$2:$D$27=2,ROW($B$2:$B$27)-ROW($B$2)+1),ROWS($F$4:F4))))
กด Ctrl+Shift+Enter คัดลอกลงมา :D

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Wed Mar 21, 2012 4:35 pm
by bowjung
bank9597 wrote::D หากวางสูตรตามที่ผมตอบไปถุกต้องแล้ว ก็น่าจะผิดในขั้นตอนการกดครับ การกด Ctrl+Shift+Enter คือ พอวางสูตรลงในแถบสูนแล้ว อย่าเพิ่ง Enter ให้กด CtrlและShift ค้างไว้ ตามด้วย Enter ครับ แล้วคัดลอกลงมา

ทบทวนการใส่สูตรอีกครั้งครับ
ที่ D2 คีย์ =MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0) คัดลอกลงมาจนสุดแถว
ที่ E4 คีย์ =Countif(D2:D30,2)
ที่ F4 คีย์ =IF(ROWS($F$4:F4)>$E$4,"",INDEX($B$2:$B$27,SMALL(IF($D$2:$D$27=2,ROW($B$2:$B$27)-ROW($B$2)+1),ROWS($F$4:F4))))
กด Ctrl+Shift+Enter คัดลอกลงมา :D
เข้าใจแล้วค่ะ ลองทำแล้ว ได้แล้วค่ะ ขอบคุณมาก ๆ นะคะ

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Thu Mar 22, 2012 1:51 pm
by tupthai
ZEROV wrote:สูตรแบ่งกลุ่มอายุ
d2=MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0)
Copy สูตรลงไป
สูตรนับจำนวนตามกลุ่มอายุ
e4=COUNTIF($D:$D,2)
เป็นการประยุกต์ใช้สูตรโดยไม่ต้องใช้ array ได้แบบน่าสนใจ,เร้าใจ ดีครับ :D

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Thu Mar 22, 2012 2:13 pm
by snasui
tupthai wrote:
ZEROV wrote:สูตรแบ่งกลุ่มอายุ
d2=MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0)
Copy สูตรลงไป
สูตรนับจำนวนตามกลุ่มอายุ
e4=COUNTIF($D:$D,2)
เป็นการประยุกต์ใช้สูตรโดยไม่ต้องใช้ array ได้แบบน่าสนใจ,เร้าใจ ดีครับ :D
จาก MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0) สามารถเขียนได้เป็น
=MATCH(C2,{17,25,30,35,40,45,50,55})) ซึ่งมีความหมายเดียวกันคือหาค่าที่น้อยกว่าหรือเท่ากับ C2 ในช่วง {17,25,30,35,40,45,50,55} ว่าอยู่ในลำดับที่เท่าไรครับ :P

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Thu Mar 22, 2012 2:48 pm
by tupthai
=MATCH(C2,{17,25,30,35,40,45,50,55})
สั้น กระชับ เยี่ยมเลยครับ **ขอเก็บไปใช้** :D

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Thu Mar 22, 2012 2:51 pm
by bank9597
จาก MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0) สามารถเขียนได้เป็น
=MATCH(C2,{17,25,30,35,40,45,50,55})) ซึ่งมีความหมายเดียวกันคือหาค่าที่น้อยกว่าหรือเท่ากับ C2 ในช่วง {17,25,30,35,40,45,50,55} ว่าอยู่ในลำดับที่เท่าไรครับ
ผมน่าจะคิดได้แบบนี้บ้างน่ะ คงดีไม่น้อย :lol: :lol: :lol:

Re: ในกรณีที่ต้องการทราบช่วงอายุ มีกี่คน ใครบ้าง

Posted: Thu Mar 22, 2012 8:49 pm
by snasui
snasui wrote:
tupthai wrote:
ZEROV wrote:สูตรแบ่งกลุ่มอายุ
d2=MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0)
Copy สูตรลงไป
สูตรนับจำนวนตามกลุ่มอายุ
e4=COUNTIF($D:$D,2)
เป็นการประยุกต์ใช้สูตรโดยไม่ต้องใช้ array ได้แบบน่าสนใจ,เร้าใจ ดีครับ :D
จาก MATCH(1,--(C2<={17,25,30,35,40,45,50,55}),0) สามารถเขียนได้เป็น
=MATCH(C2,{17,25,30,35,40,45,50,55})) ซึ่งมีความหมายเดียวกันคือหาค่าที่น้อยกว่าหรือเท่ากับ C2 ในช่วง {17,25,30,35,40,45,50,55} ว่าอยู่ในลำดับที่เท่าไรครับ :P
:o ขออภัยครับ ลืมแก้ตัวเลข ตั้งใจจะเขียนว่าสามารถเขียนได้เป็น

=MATCH(C2,{0,18,26,31,36,41,46,51})

ซึ่งมีความหมายเดียวกันคือหาค่าที่น้อยกว่าหรือเท่ากับ C2 ในช่วง {0,18,26,31,36,41,46,51} ว่าอยู่ในลำดับที่เท่าไรครับ