引言:本文的练习整理自chandoo.org。多练习,这是我们从小就在使用的学习方法。在练习的过程中,认真思考,不断尝试,以此来磨练自己的公式与函数应用技能,也让研究Excel的大脑时刻保持着良好的状态。同时,想想自己怎么解决这个问题,看看别人又是怎样解决的,从而快速提高Excel公式应用水平。
本次的练习是:求出列A和列B中每一行最小值相加的和。
图1
示例数据中结果为:4+8+8+10+9+5+2+7+3+2=58
要求不能使用易失性函数。
请写下你的公式。
解决方案
公式1:
=SUMPRODUCT((A1:A10<B1:B10)*(A1:A10)+(B1:B10<=A1:A10)*(B1:B10))
公式中,SUMPRODUCT函数里“+”号前得到处于列A中的最小值,“+”号得到处于列B中的最小值,将它们相加即得到结果。
公式2:数组公式。
=SUM(IF(B1:B10<A1:A10,B1:B10,A1:A10))
公式中,IF函数的结果为数组:{4;8;8;10;9;5;2;7;3;2}。
公式3:
=-SUM(MMULT(A1:B10,{-1,-1;-1,1}/2)^{1,2}^{1,0.5})
该公式基于原理:MIN(A1:B1)=(A1+B1-ABS(A1-B1))/2。
公式4:
=SUMPRODUCT(((A1:A10>B1:B10)+{1,0}=1)*A1:B10)
公式5:数组公式。
=SUM(LARGE(A1:B10,MOD(LARGE(ROW(A1:B10)*10^6+RANK.AVG(A1:B10,A1:B10),(ROW(A1:B10)-MIN(ROW(A1:B10)))*COLUMNS(A1:B10)+1),10^6)))
这是一个更灵活的公式,适用于多列。详细原理参见下一篇文章。