【发布时间】:2010-09-23 20:59:34
【问题描述】:
我有一个 SUM 数组公式,其中包含多个嵌套的 IF 语句,因此效率非常低。我的公式跨越 500 多行,但这里有一个简单的版本:
{=SUM(IF(IF(A1:A5>A7:A11,A1:A5,A7:A11)-A13:A17>0,
IF(A1:A5>A7:A11,A1:A5,A7:A11)-A13:A17,0))}
如您所见,公式的前半部分检查数组大于零的位置,如果是,则将公式后半部分中的值相加。
你会注意到相同的 IF 语句在那里重复了两次,这对我来说效率很低,但这是我得到正确答案的唯一方法。
我的示例数据如下:
Sample Data in spreadsheet http://clients.estatemaster.net/SecureClientSite/Download/TempFiles/example.jpg 在这种情况下,使用我上面提到的公式,答案应该是 350。
如果我试图在数组中放入一个 MAX 语句,因此删除测试以查找它大于零的位置,所以它是这样的:
{=SUM(MAX(IF(B2:B6>B8:B12,B2:B6,B8:B12)-B14:B18,0))}
但是,它似乎只计算每个范围内的第一行数据,它给了我70的错误答案。
有没有人知道我可以减少公式的大小或通过不需要在其中重复 IF 语句来提高效率?
更新
吉米
您建议的 MAX 公式实际上并不适用于所有情况。
如果我将第 1 行到第 5 行中的示例数据更改如下(显示某些数字大于第 7 到第 11 行中它们各自的单元格,而某些数字则较低)
我试图达到的正确答案是 310,但是您建议的 MAX 公式给出的错误答案是 275。
我猜这个公式需要是一个数组函数才能给出正确答案。
还有其他建议吗?
【问题讨论】:
标签: excel worksheet-function array-formulas