ในตอนที่แล้วเราได้เรียนรู้การใช้ Matrix ใน Excel เพื่อแก้สมการกันไปแล้ว ในบทความนี้เราจะมาลองดูตัวอย่างการประยุกต์ที่น่าสนใจอีกอันก็คือการนำมาสรุปข้อมูลในแต่ละแถวหรือแต่ละคอลัมน์กันครับ
สมมติเรามีข้อมูลต้นฉบับเป็น Array หรือ Matrix 4×3 ดังนี้ (ก็พิมพ์ลงไปตรงๆ นั่นแหละ) มาดูซิว่าเราจะทำอะไรกับมันได้บ้าง?
หาผลรวมแต่ละแถว
หากอยากจะหาผลรวมแต่ละแถว ปกติแล้วเราก็จะสามารถ SUM แต่ละแถวง่ายๆ ได้เลยเนอะ แต่เพื่อวัตถุประสงค์ในการทำความเข้าใจกับ Matrix ให้มากขึ้น (เพื่อรองรับเคสที่ซับซ้อนขึ้นในอนาคต) เราจะลองมาดูกันว่า ต้องคูณ Matrix ยังไงถึงจะได้ผลรวมแต่ละแถว
เดิม Matrix นี้เป็น 4×3 ซึ่งถ้าจะได้ผลรวมแถว มันจะต้องออกมาเป็น Matrix ผลลัพธ์ 4×1
นั่นคือ มันต้องไปคูณกับ Matrix อะไรซักอย่างซึ่งมี 3 แถว 1 คอลัมน์แน่นอนด้วยเหตุผลตามรูปนี้
ซึ่งมันจะจับคู่แถวใน Matrix แรกมาคูณกับคอลัมน์แรกของ Matrix ที่สอง ซึ่งเราต้องการทั้งเลข 10, 85, 75 มาบวกกันหมดเลย แสดงว่ามันต้องคูณ 1 ทั้งหมดแน่นอน นั่นคือ Matrix ที่สองต้องเป็นเลข 1 หมดเลย เพื่อที่จะให้เป็น 10*1+ 85*1 + 75*1
ดังนั้นเขียนสูตรได้ว่า
=MMULT(B7:D10,F2:F4)
ซึ่งถ้าเราไม่อยากจะมาทด Matrix ที่มีเลข 1 แบบนั้น เราก็ต้องสร้างมันขึ้นมา เช่น ใช้เลขประจำ COLUMN ของ Matrix แรกมาทำให้เป็น 1 ด้วยการยกกำลัง 0 แล้ว Transpose เปลี่ยนจากแนวนอน เป็นแนวตั้ง ก็ได้ เช่น
=MMULT(B7:D10,TRANSPOSE(COLUMN(B7:D10)^0))
อธิบายเล็กน้อยเผื่องง
- =COLUMN(B7:D10) จะได้ {2,3,4}
- พอจับยกกำลัง 0 จะได้ {1,1,1} ซึ่งเป็น Array แนวนอน (คั่นด้วย Comma แปลว่าคนละ Column)
- เลย TRANSPOSE ได้ {1;1;1} ซึ่งเป็น Array แนวตั้ง (คั่นด้วย Semi-Colon)
- จากนั้นมันก็คืออันเดียวกับ F2:F4 ที่เราเขียนแบบ Manual นั่นแหละ
ต่อไปมาหาผลรวมแต่ละคอลัมน์บ้าง
ถ้าคิดในทำนองเดียวกันกับอันแรก จะได้ผลลัพธ์เป็น 1 แถวx 3คอลัมน์ มันก็ต้องมี Matrix 1 x 4 มาคูณด้วยข้อมูลต้นฉบับของเรา และมันก็ต้องเป็นเลข 1 หมดเลยด้วย เพราะเราเอาทุกค่าคือ 1*10 + 1*30 + 1*70 +1*30
และสูตรก็คือ
=MMULT(A8:D8,F2:H5)
และถ้าไม่อยากมาพิมพ์ Matrix 1×4 ที่เป็นเลข 1 ทดไว้ ก็สามารถสร้าง Matrix จำลองในลักษณะคล้ายๆ เดิมได้ว่า
=MMULT(TRANSPOSE(ROW(F2:H5)^0),F2:H5)
เพียงแต่เปลี่ยนมาเอาจำนวนแถวของ Matrix Original มาทำให้เป็น 1 ทั้งหมด แล้ว Transpose มาเป็นแนวนอน
และนี่ก็เป็นการใช้ Matrix เริ่มมาประยุกต์ทำอะไรที่เกี่ยวกับ Excel โดยตรงมากขึ้น ตอนหน้าจะเริ่มน่าสนใจมากขึ้นแล้ว เช่น ใช้ Matrix ช่วยหาข้อมูลในหลายๆ คอลัมน์เป็นต้น ว่าข้อมูลที่ต้องการอยู่ในแถวไหนบ้าง ^^