มีสูตร Excel ที่กระชับในการคำนวณ (A1 * A6) + (B1 * B6) + (C1 * C6) …หรือไม่


45

ฉันต้องการทราบวิธีการให้สูตรย่อสำหรับสูตรแบบยาวต่อไปนี้ในแผ่นงาน Excel:

= (A1*A6)+(B1*B6)+(C1*C6)...

ฉันจะใช้ฟังก์ชันผลรวมหรือมีฟังก์ชันอื่นสำหรับสิ่งนี้หรือไม่ ฉันคิดว่าการใช้โคลอนกับSUMฟังก์ชั่นน่าจะช่วยได้ แต่ฉันไม่รู้ว่าจะใช้ยังไง


4
ซ้ำซ้อนที่เป็นไปได้ (cross-site) ของExcel: ผลิตภัณฑ์สเกลาร์สองช่วง - Stack Overflow
user202729


7
ในทางคณิตศาสตร์สิ่งนี้เรียกว่าผลิตภัณฑ์ dot หรือผลิตภัณฑ์เซนต์คิตส์และเนวิส คำศัพท์ที่เป็นประโยชน์หากคุณต้องการใช้เครื่องมือค้นหาที่คุณชื่นชอบ
Philip Kendall

ผลิตภัณฑ์ภายใน: โดยทั่วไปแล้วเราจะแปลงปัญหานี้เพื่อที่จะทำ (A1 * B1 + A2 * B2 + C3 * B3 .... ) .... แน่นอนว่านี่เป็นเพียงสัญกรณ์เท่านั้น ...
JosephDoggie

คำตอบ:


110

คุณกำลังมองหาฟังก์ชั่นSUMPRODUCT

=SUMPRODUCT(A1:C1,A6:C6)

นี่จะส่งคืนผลรวมของผลิตภัณฑ์ของรายการที่เกี่ยวข้องในสองช่วง (หรือมากกว่า)

ป้อนคำอธิบายรูปภาพที่นี่

อย่างที่คุณเห็นจากเอกสาร Microsoft ที่ฉันเชื่อมโยงช่วงไม่จำเป็นต้องเป็นแถวเดี่ยวหรือคอลัมน์เดียว (แม้ว่าจะต้องมีขนาดเท่ากัน)

SUMPRODUCT สามารถคูณค่าจากช่วงที่แตกต่างกันได้ถึง 255 ช่วง ยกตัวอย่างเช่นเป็นเช่นเดียวกับ=SUMPRODUCT(A1:C1,A6:C6,A11:C11)=A1*A6*A11+B1*B6*B11+C1*C6*C11


19

SUMฟังก์ชั่นจะไม่ทำงานเพราะมันเพิ่งเพิ่มองค์ประกอบ คุณต้องคูณค่าก่อนส่งผ่านไปยัง SUM เช่น=SUM(A1*A6, B1*B6, C1*C6, D1*D6, E1*E6)

แน่นอนคุณยังสามารถใช้=A1*A6 + B1*B6 + C1*C6 + D1*D6 + E1*E6ผลลัพธ์ที่มีความพยายามในการพิมพ์เช่นเดียวกับSUM

มีวิธีแก้ปัญหาที่ดีกว่ามากมาย วิธีหนึ่งคือการใช้สูตรอาร์เรย์ คุณสามารถดูตัวอย่างที่แน่นอนของคุณได้:

ไวยากรณ์สูตรอาร์เรย์

โดยทั่วไปสูตรอาร์เรย์ใช้ไวยากรณ์สูตรมาตรฐาน พวกเขาทั้งหมดเริ่มต้นด้วยเครื่องหมายเท่ากับ (=) และคุณสามารถใช้ฟังก์ชัน Excel ในตัวส่วนใหญ่ในสูตรอาร์เรย์ของคุณ ความแตกต่างที่สำคัญคือเมื่อใช้สูตรอาร์เรย์คุณกดCtrl+ Shift+ Enterเพื่อป้อนสูตรของคุณ เมื่อคุณทำเช่นนี้ Excel จะล้อมรอบสูตรอาร์เรย์ของคุณด้วยเครื่องหมายวงเล็บ - หากคุณพิมพ์วงเล็บปีกกาด้วยตนเองสูตรของคุณจะถูกแปลงเป็นสตริงข้อความและจะไม่ทำงาน

ฟังก์ชัน Array เป็นวิธีที่มีประสิทธิภาพมากในการสร้างสูตรที่ซับซ้อน สูตรอาร์เรย์=SUM(C2:C11*D2:D11)เหมือนกันกับสิ่งนี้:

=SUM(C2*D2,C3*D3,C4*D4,C5*D5,C6*D6,C7*D7,C8*D8,C9*D9,C10*D10,C11*D11).

หากต้องการใช้สูตรอาร์เรย์ในกรณีของคุณคุณสามารถพิมพ์ (แน่นอนคุณต้องเปลี่ยนองค์ประกอบสุดท้ายของอาร์เรย์ตามลำดับ)

=SUM(A1:E1*A6:E6)

จากนั้นกดCtrl+ Shift+Enter


สูตร Array เป็นเครื่องมือที่ทรงพลังมาก อย่างไรก็ตามใช้ด้วยความระมัดระวัง ทุกครั้งที่คุณต้องแก้ไขมันคุณต้องไม่ลืมกดCtrl+ Shift+Enter

เหตุใดจึงต้องใช้สูตรอาร์เรย์

หากคุณมีประสบการณ์ในการใช้สูตรใน Excel คุณรู้ว่าคุณสามารถดำเนินการที่ค่อนข้างซับซ้อนได้ ตัวอย่างเช่นคุณสามารถคำนวณต้นทุนรวมของเงินกู้ในจำนวนปีที่กำหนด คุณสามารถใช้สูตรอาร์เรย์เพื่อทำงานที่ซับซ้อนเช่น:

  • นับจำนวนอักขระที่อยู่ในช่วงของเซลล์

  • รวมเฉพาะตัวเลขที่ตรงตามเงื่อนไขบางประการเช่นค่าต่ำสุดในช่วงหรือตัวเลขที่อยู่ระหว่างขอบเขตบนและล่าง

  • รวมทุกค่าที่ n ในช่วงของค่า

สูตรอาร์เรย์ยังมีข้อดีเหล่านี้:

  • ความสอดคล้อง:หากคุณคลิกเซลล์ใด ๆ จาก E2 ลงมาคุณจะเห็นสูตรเดียวกัน ความสอดคล้องนั้นสามารถช่วยรับรองความถูกต้องได้มากขึ้น

  • ความปลอดภัย:คุณไม่สามารถเขียนทับส่วนประกอบของสูตรอาร์เรย์หลายเซลล์ได้ ตัวอย่างเช่นคลิกเซลล์ E3 และกดลบ คุณต้องเลือกทั้งช่วงของเซลล์ (E2 ถึง E11) และเปลี่ยนสูตรสำหรับอาร์เรย์ทั้งหมดหรือปล่อยให้เป็นไปตามที่ต้องการ เพื่อเป็นการเพิ่มมาตรการด้านความปลอดภัยคุณต้องกดCtrl+ Shift+ Enterเพื่อยืนยันการเปลี่ยนแปลงสูตร

  • ขนาดไฟล์ที่เล็กลง:คุณมักจะสามารถใช้สูตรอาเรย์เดี่ยวแทนหลายสูตรกลางได้ ตัวอย่างเช่นเวิร์กบุ๊กใช้สูตรอาร์เรย์หนึ่งสูตรเพื่อคำนวณผลลัพธ์ในคอลัมน์ E หากคุณใช้สูตรมาตรฐาน (เช่น = C2 * D2, C3 * D3, C4 * D4 …) คุณจะต้องใช้สูตร 11 สูตรในการคำนวณ ผลลัพธ์เดียวกัน

นอกจากนี้ยังเร็วกว่าเนื่องจากรู้จักรูปแบบการเข้าถึง ตอนนี้แทนที่จะทำการคำนวณที่แตกต่างกัน 11 แบบแยกกันมันสามารถทำให้เป็นแบบเวกเตอร์และทำแบบขนานโดยใช้หลายแกนและหน่วย SIMD ใน CPU


7
อย่างไรก็ตามโปรดทราบว่าฟังก์ชันอาร์เรย์มีความเปราะบางมาก หากคุณคัดลอกและวางตัวอย่างเช่นสิ่งต่าง ๆ อาจแตกหักได้ไม่ดี บ่อยครั้งที่ไฟล์เหล่านั้นจะไม่ได้รับการอัปเดตอย่างถูกต้องหากไม่มีการอัปเดตที่บังคับ คุณสมบัติที่ยอดเยี่ยมและทรงพลัง แต่ยังคงความอดทนเมื่อเปรียบเทียบกับสูตรปกติ
JKreft

3
@StianYttervik: ฉันคิดว่าคำตอบนี้มีประโยชน์ จะเกิดอะไรขึ้นถ้ามีคนเปิดแผ่นด้วยสูตรชนิดนี้และไม่เคยเห็นมาก่อน คำตอบนี้จะเป็นประโยชน์สำหรับผู้ใช้เหล่านั้น
Bad_Bishop

3
สูตรอาร์เรย์ @StianYttervik เป็นเครื่องมือที่ทรงพลังในมือที่ถูกต้อง มันไม่ได้ช้าเลยเพราะมันสามารถปรับให้เหมาะสมและเวกเตอร์ได้ง่ายขึ้น และมันจะบันทึกหน่วยความจำ แม้แต่ Google เอกสารก็ยังรองรับ และอย่าตอบกลับสิ่งนี้ ฉันจะไม่ตอบสนองใด ๆ เพิ่มเติม
phuclv

2
@StianYttervik บางฟังก์ชั่น (เช่นMOD) จะทำให้SUMPRODUCTแตกและจากนั้นคุณต้องแทนที่ด้วยสูตร Array ไม่ต้องพูดถึง Office ทุกเวอร์ชันที่วางจำหน่ายมีการเพิ่มสูตร Array Formation ที่ใช้กันอย่างเป็นทางการ (เช่นMAXIFSในปี 365) หากสูตรอาเรย์ของคุณช้า clunky และทำลายคุณอาจต้องปรับโค้ดให้เหมาะสม และแน่นอน - เนื่องจาก PowerQuery เป็นส่วนเสริมเพิ่มเติมเพิ่มเติม บริษัท จำนวนมากจะ (รวมถึงเหตุผลต่าง ๆ ) ไม่รวมไว้ในแพ็คเกจการสร้างองค์กรของพวกเขาทำให้เป็นโซลูชันที่ด้อยกว่าสำหรับจุดประสงค์ทางธุรกิจแบบกระจาย
Chronocidal

1
@ Chronocidal ใช่มีหลายกรณี แต่ก็มีไม่กี่ ... แล้วแบบสอบถามพลังงานเป็นวิธีการแก้ หรือตัวแบบข้อมูล หรือฟังก์ชั่น Cube หรือทั้งหมดข้างต้น อาร์เรย์และการคำนวณ / การดำเนินการแถวต่อแถวนั้นไม่สามารถวัดได้
Stian Yttervik

7

อีกวิธีคือใส่นิพจน์ = A1 * A6 ใน A7 และคัดลอกไปให้ไกลที่สุดเท่าที่คุณต้องการจากนั้นรวมแถว $ 7 $ เพื่อรับคำตอบสุดท้าย มันไม่ได้ทำในเซลล์เดียวอย่างที่คุณต้องการ แต่บางครั้งการมีผลิตภัณฑ์ระดับกลางนั้นมีประโยชน์ ฉันใช้ทั้งสองเวอร์ชันแล้ว อันนี้ให้ความรู้สึกดีกับฉันมากกว่า Excel แต่รสชาติของคุณอาจแตกต่างกัน


1

หากคุณใส่รายการตัวเลขในคอลัมน์แทนที่จะเป็นแถว (พูดสองคอลัมน์ A และ B) คุณสามารถใช้ฟังก์ชัน = Sumproduct (A: A, B: B) เช่นนั้น มันจะให้ผลคูณของจำนวนมากเท่าที่มีในคอลัมน์ A และ B

คุณสามารถใช้คอลัมน์ได้มากในฟังก์ชั่น Sumproduct ตามที่คุณต้องการ


2
Sumproduct (1: 1,2: 2) ทำงานในลักษณะเดียวกันกับแถว
MátéJuhász

0

หากไม่มีสิ่งใดในแถว 1 และ 6 นอกเหนือจากที่คุณต้องการมีSUMPRODUCT()ไว้สำหรับคุณสามารถใช้แนวคิดที่กล่าวถึงในความคิดเห็นนี้ ในกรณีของคุณตามที่ระบุไว้ในคำถามของคุณคุณจะใช้=SUMPRODUCT(1:1,6:6)


4
นี่ไม่ใช่การให้ข้อมูลเพิ่มเติมนอกเหนือจากสิ่งที่ป้อนไว้แล้วในคำตอบและความคิดเห็น
MátéJuhász

1
@ MátéJuhász - คำตอบอะไรที่ให้คำตอบของฉัน ความคิดเห็นของคุณต่อคำตอบที่ได้รับจาก @AjayC ให้SUMPRODUCT(1:1,2:2)และฉันได้ให้คำตอบตามความคิดเห็นนั้นโดยละเอียดว่าจะสามารถใช้งานได้อย่างไรตามคำถามเดิมและข้อ จำกัด ที่จะเกิดขึ้น
Chris Rogers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.