Page 1 of 1
ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 10:12 am
by seeper
เรียน อาจารย์ครับ
แก้ไขสูตรให้ทีครับหรือมีสูตรอื่นไหมครับ หลักการคือช่อง h จะเป็นช่องรับข้อมูลอาจมีข้อมูลที่ซ้ำกัน แต่จะนับข้อมูลเฉพาะที่ไม่ซ้ำกันและโชว์ข้อมูลทั้งหมดที่ไม่ซ้ำในช่อง i
จากตัวอย่างที่ช่อง h มีข้อมูล 9 ตัวแต่ช่อง i กลับแสดงแค่ 8 ตัว
ช่วยแก้ไขด้วยนะครับ
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 10:32 am
by puriwutpokin
ที่H3=SUMPRODUCT(1/COUNTIF(OFFSET($H$4,0,0,COUNTA($H$4:$H$50),1),OFFSET($H$4,0,0,COUNTA($H$4:$H$50),1)))
ที่ I4=IFERROR(IF(ROWS($I$4:I4)>$H$3,"",INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(MATCH($H$4:$H$50,$H$4:$H$50,0),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4)))),"") ctrl+shift+enter
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 10:39 am
by seeper
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 10:46 am
by seeper
อีกนิดครับ ถ้าเปลี่ยนจาก 0 ที่ช่อง H เป็น ="" มันไม่ได้อะครับแก้อย่างไรครับ
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 11:06 am
by puriwutpokin
ตามรูปไม่ต้องการให้แสดงค่าศูนย์ ไปที่เมนู option แล้วติ๊กเครื่องหมายถูกออกครับ
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 11:17 am
by snasui
seeper wrote:อีกนิดครับ ถ้าเปลี่ยนจาก 0 ที่ช่อง H เป็น ="" มันไม่ได้อะครับแก้อย่างไรครับ
ลองปรับสูตรเป็นด้านล่างครับ
Code: Select all
=IFERROR(INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4))),"")
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 11:23 am
by seeper
โอ้ว มาย ก้อด ได้แว้วๆ สุดยอดเบย ขอบคุณครับ
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 11:37 am
by snasui
seeper wrote:โอ้ว มาย ก้อด
ได้แว้วๆ สุดยอด
เบย ขอบคุณครับ
คุณกำลังทำผิดกฎข้อ 1 ด้านบน
ครับ
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 1:09 pm
by seeper
อ่าว ขอโทษครับ ดีใจไปหน่อย ^^
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 2:40 pm
by seeper
อาจารย์ว่างพอจะแปล เป็นภาษาอ่านให้ผมได้ไหมครับ
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Thu Dec 04, 2014 9:13 pm
by snasui
สูตรประเภทนี้ยากต่อการทำความเข้าใจ ต้องมีความเข้าใจเกี่ยวกับ Array เป็นพื้นฐานอย่างดีมาก่อนครับ
- จากสูตร =IFERROR(INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4))),"")
หมายถึง หาก INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4))) เป็นค่าผิดพลาดให้แสดงค่าว่าง
- จากสูตร INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4)))
หมายถึง จากช่วงเซลล์ $H$4:$H$50 ให้นำลำดับที่เป็นผลลัพธ์ของ SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4)) มาแสดง หากผลลัพธ์เป็น 10 หมายถึง จากช่วง $H$4:$H$50 ให้นำลำดับที่ 10 มาแสดง
- จากสูตร SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4))
หมายถึง จากผลลัพธ์สูตร IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1) ให้นำค่าที่น้อยที่สุดในลำดับที่เป็นผลลัพธ์ของ ROWS($I$4:I4) มาแสดง ซึ่งหากผลลัพธ์ของ ROWS($I$4:I4) เป็น 5 หมายถึงให้นำค่าที่น้อยที่สุดในลำดับที่ 5 มาแสดง
- จากสูตร IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1)
หมายถึง หาก FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1) เป็นค่าตัวเลขที่ไม่ใช่ 0 ให้แสดงค่าลำดับเริ่มจาก 1 เช่น {1,2,3...}
- จากสูตร FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1)
หมายถึงให้หาค่าความถึ่จากผลลัพธ์ของ IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))) กับ ROW($H$4:$H$50)-ROW($H$4)+1 ศึกษาเพิ่มเติมจาก Link นี้ครับ viewtopic.php?f=3&t=2221
- จากสูตร IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0)))
หมายถึง หาก $H$4:$H$50<>0 เป็นจริง ให้แสดงผลลัพธ์ของ IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0)) หากไม่เป็นจริงให้แสดงค่า false
- จากสูตร IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))
หมายถึง หาก $H$4:$H$50<>"" เป็นจริงให้แสดงผลลัพธ์ของ MATCH($H$4:$H$50,$H$4:$H$50,0) หากไม่เป็นจริงให้แสดงค่า false
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Mon Dec 08, 2014 11:30 am
by seeper
ขอบคุณครับนั่งทำความเข้าใจก่อน
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Mon Dec 08, 2014 3:37 pm
by seeper
ตรวจสอบคำอ่านนะครับ คือเรียงลำดับในช่วงที่มีข้อมูล 1,2,3...,n แล้วตรวจสอบหาลำดับที่ซ้ำกันโดยแสดงแต่ลำดับที่มีค่าน้อยที่สุดหลังจากนั้นแปลงลำดับเป็นข้อมูลในช่อง H ที่มีข้อมูลลำดับเดียวกัน
ผมพอเข้าใจถูกไหมครับอาจารย์ช่วยชี้แนะผมที
Re: ปรับปรุงสูตร ให้ทีครับ
Posted: Mon Dec 08, 2014 4:52 pm
by snasui
เป็นการให้ค่าลำดับข้อมูลตามเงือนไข คือเข้าเงื่อนไขจึงจะให้ค่าลำดับ ไม่เข้าเงื่อนไขก็ไม่ให้ค่าลำดับ จากนั้น List ค่าที่ได้ออกมาตามลำดับที่ให้ไว้ครับ