Page 1 of 1

อธิบายโค้ด Excel

Posted: Fri Mar 20, 2015 2:25 pm
by leelaphoom
ช่วยอธิบายโค้ด Excel หน่อยครับ อยากทราบว่าในแต่ละช่วงทำงานยังไงครับ


=IFERROR(INDEX($A$2:$A$15,MATCH(SMALL(IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),ROWS(D$2:D2)),IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),0)),"")

Re: อธิบายโค้ด Excel

Posted: Fri Mar 20, 2015 6:07 pm
by snasui
:D ต้องเข้าใจฟังก์ชั่น Mmult เป็นอย่างดีจึงจะเข้าใจสูตรนี้ได้ ขออธิบายเพื่อความเข้าใจการแปลสูตรเบื้องต้นเพื่อเป็นแนวทางในการแปลสูตรครับ

:idea: จากสูตร

=IFERROR(INDEX($A$2:$A$15,MATCH(SMALL(IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),ROWS(D$2:D2)),IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),0)),"")

หมายถึง หากผลลัพธ์ของสูตร INDEX($A$2:$A$15,MATCH(SMALL(IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),ROWS(D$2:D2)),IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),0)) เป็นค่าผิดพลาดให้แสดงค่าว่าง

:idea: จากสูตร

INDEX($A$2:$A$15,MATCH(SMALL(IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),ROWS(D$2:D2)),IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),0))

หมายถึง จากช่วงข้อมูล $A$2:$A$15 ให้นำค่าลำดับที่เป็นผลลัพธ์ของสูตร MATCH(SMALL(IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),ROWS(D$2:D2)),IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),0) มาแสดง

:idea: จากสูตร

MATCH(SMALL(IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),ROWS(D$2:D2)),IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),0)

หมายถึง ให้หาว่าค่าที่เป็นผลลัพธ์ของสูตร SMALL(IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),ROWS(D$2:D2)) อยู่ในลำดับที่เท่าไรในค่าที่เป็นผลลัพธ์ของสูตร IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15)))

:idea: จากสูตร

SMALL(IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))),ROWS(D$2:D2))

หมายถึงให้หาค่าที่น้อยที่สุดในลำดับที่เป็นผลลัพธ์ของสูตร ROWS(D$2:D2) จากชุดข้อมูลที่เป็นผลลัพธ์ของสูตร IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15)))

:idea: จากสูตร

IF(TRANSPOSE($A$2:$A$15)<>"",MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15)))

หมายถึง หาก TRANSPOSE($A$2:$A$15)<>"" เป็นจริง ให้แสดงผลลัพธ์ของสูตร MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))

:idea: จากสูตร

MMULT(--TRANSPOSE($A$2:$A$15<>""),--(TRANSPOSE($A$2:$A$15)>$A$2:$A$15))

หมายถึง ผลคูณแบบแมทริกซ์ของ --TRANSPOSE($A$2:$A$15<>"") กับ --(TRANSPOSE($A$2:$A$15)>$A$2:$A$15)

ศึกษา Mmult ได้ที่ Mmult

Re: อธิบายโค้ด Excel

Posted: Wed Mar 25, 2015 3:51 pm
by leelaphoom
ขอบคุณครับ