snasui wrote: Tue Mar 23, 2021 11:27 pm

โดยสรุป สูตรที่เขียนมานั้นไม่ถูกต้องครับ
Aggregate มี 2 ไวยากรณ์
ที่ใช้ในไฟลนี้ส่วนประกอบที่ 3 เป็นแบบ Reference คือจำกัดว่าต้องเป็นตำแหน่งเซลล์หรือช่วงเซลล์ ไม่ใช่ค่าที่ได้จากการคำนวณ ดูคำอธิบายในภาพครับ
Ref.png
จึงไม่สามารถหาผลรวมของผลคูณด้วยสูตรในรูปแบบนี้ได้
ส่วนไวยากรณ์อีกแบบคือตามภาพ ส่วนประกอบที่ 3 จะเป็น Array สามารถใช้ช่วงเซลล์หรือสูตรเป็นส่วนประกอบตรงส่วนนี้ได้
Arr.png
สองภาพนี้ได้มาจากการคลิกปุ่ม FX บน Formula bar
ในส่วนของ
=COUNTIF(IF(A15=A15:A27,J15:J27),$J$16) ก็ไม่ถูกต้องเช่นกัน สูตรพวก Countif(s), Sumif(s) จะต้องใช้ Range ดูได้จากไวยากรณ์ของฟังก์ชั่น ถ้าใช้ลักษณะนี้จะไม่ได้ถูกประเมินเป็น Range แต่จะประเมินเป็นค่าในเซลล์จากช่วงเซลล์ที่เป็นผลลัพธ์ของ IF นั่นคือประเมินเป็นค่าคงที่ไม่ใช่ช่วงเซลล์ตามนิยามของฟังก์ชั่นครับ
ตย1.
=AGGREGATE(15,6,
{1,2,3}/(A3=Sheet2!$F$3:$H$13),1)
ตย2.
=IFERROR(INDEX(FactGL!P:P,AGGREGATE(15,6,
ROW(FactGL!$P$2:$P$3000)/(FactGL!$N$2:$N$3000=P2)/(FactGL!$P$2:$P$3000<>""),1)),"")
ตย3.
=AGGREGATE(9,6,((A15:A27=A15)*(J15:J27=$J$16)))
INDEX(A:A,AGGREGATE(15,6,
ROW($E$2:$E$99)/($D$2:$D$99=$E2),COUNTIF($E$2:$E2,$E2)))
สูตรของผม
=AGGREGATE(9,6,(
(A15:A27=A15)*(J15:J27=$J$16)))
เรียน ท่านอาจารย์
ในความเข้าใจ ก็ยากที่จะเข้าใจได้
ที่เข้าใจ คือ ต้องใช้ range ที่ไม่ได้มาจากการคำนวน แต่ตามตย. ผมยังงงอยู่มาตามโครงสร้างสูตร
1. มีการเทียบค่า = เหมือนกัน
2. มีการรวมค่าโดย เครื่องหมาย * หรือ / เช่นกัน
แล้วอะไรไม่เหมือนกัน ทำให้ผลลัพธ์ error และหากแก้สูตรให้ใช้ aggregate ได้สูตรต้องเขียนอย่างไร
ช่วยยกตัวอย่าง แก้สูตร
