Page 1 of 1

ถามความเข้าใจเรื่อง array formula กับ index match ครับ

Posted: Fri Jun 13, 2014 3:49 pm
by hamwoi
รบกวนด้วยนะครับคือว่าผม เจอสูตรนี้แล้วไม่ค่อยเข้าใจนะครับ

สูตร index match ที่ไว้ใช้กับ2 criteraia นะครับ สูตรนี้

=INDEX('Sheet2'!B:B,MATCH(1,(A1='Sheet2'!A:A)*(C1='Sheet2'!C:C),0))

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

ขอบคุณล่วงหน้าครับ

Re: ถามความเข้าใจเรื่อง array formula กับ index match ครับ

Posted: Fri Jun 13, 2014 4:38 pm
by snasui
:D การใช้ Array คือการคำนวณที่ซับซ้อน ปกติจะเป็นการหาผลลัพธ์หลายเงื่อนไข

สำหรับสูตรตัวอย่างที่ยกมานั้นเป็นการ Lookup 2 เงื่อนไข จะต้องทำเป็น Array เท่านั้นจึงจะให้คำตอบได้ถูกต้อง

หากจะให้เข้าใจสูตรนั้นได้ ควรทำช่วงให้เล็กลง เช่น

=INDEX('Sheet2'!B2:B5,MATCH(1,(A1='Sheet2'!A2:A5)*(C1='Sheet2'!C2:C5),0))

จากสูตรด้านบน A1='Sheet2'!A2:A5 เป็นการเปรียบเทียบดังนี้

A1='Sheet2'!A2
A1='Sheet2'!A3
A1='Sheet2'!A4
A1='Sheet2'!A5

หากมีค่าเท่ากันผลลัพธ์จะได้ True หากไม่เท่าจะได้ False ตัวอย่างผลลัพธ์เช่น
{True,False,False,False} เป็นต้น

และหากผลลัพธ์ของ C1='Sheet2'!C2:C5 ได้เป็น
{True,True,True,True}

ภาพของสูตรโดยรวมจะได้เป็น
=INDEX('Sheet2'!B2:B5,MATCH(1,{True,False,False,False}*{True,True,True,True},0))

จาก {True,False,False,False}*{True,True,True,True} หมายถึง {True*True,False*True,False*True,False*True} ผลลัพธ์จะได้ {1,0,0,0}

ภาพรวมของสูตรจะได้เป็น =INDEX('Sheet2'!B2:B5,MATCH(1,{1,0,0,0},0)) และจะได้เป็น
=INDEX('Sheet2'!B2:B5,1)

หมายถึงจากช่วง 'Sheet2'!B2:B5 ให้นำตัวที่ 1 มาแสดง

จาก MATCH(1,{1,0,0,0},0) ผลลัพธ์ได้ 1 หมายถึงพบเลข 1 เป็นลำดับที่ 1 ในชุดข้อมูล {1,0,0,0}

หากสูตรเป็น MATCH(1,{0,0,1,0},0) ผลลัพธ์ได้ 3 หมายถึงพบเลข 1 เป็นลำดับที่ 3 ในชุดข้อมูล {0,0,1,0}

Re: ถามความเข้าใจเรื่อง array formula กับ index match ครับ

Posted: Mon Jun 16, 2014 11:22 am
by hamwoi
ขอบคุณครับ กระจ่างขึ้นมากเลยครับ ขอบคุณครับ