Excel SUMPRODUCT"更大,如果" #值!错误

时间:2015-12-07 16:40:44

标签: excel excel-formula

我在使用SUMPRODUCT函数引用表格时遇到问题"大于"和"小于"在SUMIFS值中。更具体地说,以下内容给了我一个" #VALUE!"错误。

=SUMPRODUCT(SUMIFS(Perf_Data[Gross Claims Paid (non-cumulative)],Perf_Data[Year (AY/UWY)],"<"&'OUTPUT - S.19.01'!$A24,Perf_Data[Development Year],">="&Perf_Data[Year (AY/UWY)]+15,Perf_Data[Applicable Line of Business],LoB_Selection),Perf_Data[@[Currency check and multiplier]])

上述代码总结了已支付的总索赔额,如果他们的AY / UWY年度低于特定年份X,则开发年份高于X + 15年,并且他们遵循特定的业务线。然后,这些已支付的索赔总额应乘以其货币乘数 - 这就是Excel开始抛出价值错误的地方。

Perf_Data表中填写的所有行中的数据(=范围大小相同)如果指定年份(不大于/小于),我的公式运行良好(=无错误),如下所示:

SUMPRODUCT(SUMIFS(Perf_Data[Gross Claims Paid (non-cumulative)],Perf_Data[Year (AY/UWY)],'OUTPUT - S.19.01'!$A27,Perf_Data[Development Year],SUM('OUTPUT - S.19.01'!$A27,'OUTPUT - S.19.01'!C$21),Perf_Data[Applicable Line of Business],LoB_Selection),Perf_Data[@[Currency check and multiplier]])

(上述代码总结了根据特定AY / UWY和开发年度,业务线支付的总索赔额

两个常见原因 - 不同大小的数组,文本格式的数字 - 都不存在。有关如何解决此问题的任何想法?

任何有建设性的回复都非常受欢迎!

1 个答案:

答案 0 :(得分:0)

根据要求(感谢提醒@ScottHoltzman!),我正在发布我的解决方案。

由于SUMIFS解决方案不起作用,我转向SUMPRODUCT作为我的解决方案。我发现它在较旧的工作簿中使用,当SUMIFS尚不存在时制作,它通常被使用,因为它有多种标准的可能性(我相信很多人都记得)。

参数变化不多;我刚刚离开了这个:

=SUMPRODUCTPerf_Data[Gross Claims Paid (non-cumulative)],--(Perf_Data[Year (AY/UWY)]<'OUTPUT - S.19.01'!$A24),--(Perf_Data[Development Year]>=Perf_Data[Year (AY/UWY)]+15),--(Perf_Data[Applicable Line of Business]=LoB_Selection),Perf_Data[@[Currency check and multiplier]])

到此:

df = pd.read_csv("jahmyst2.csv", header=None, names=range(3))
table_names = ["Inventory", "HP BladeSystem Rack", "Network Interface"]
groups = df[0].isin(table_names).cumsum()
tables = {g.iloc[0,0]: g.iloc[1:] for k,g in df.groupby(groups)}

条件变成了逻辑检查;对于不满足条件的列中的所有值,该行乘以零(这是“ - ”的含义 - 它将“FALSE”布尔值变为“0”,将“TRUE”变为“1” “。因此,值列在适当的(=传递的逻辑检查)行中乘以1(不会改变它们),最后乘以货币乘数得到所需的值。

作为附注,而另一个公式“= SUTIRODUCT(SUMIFS(Perf_Data [支付总额(非累计)],Perf_Data [年(AY / UWY)],'输出 - S.19.01'!$ A27 ,Perf_Data [开发年份],SUM('OUTPUT - S.19.01'!$ A27,'OUTPUT - S.19.01'!C $ 21),Perf_Data [适用的业务线],LoB_Selection),Perf_Data [@ [货币检查和乘数]])“工作,它导致错误的数字。我的猜测是,SUMIFS公式提供的信息没有与货币检查和乘数正确配对,所以我最终将其转换为SUMPRODUCT,方法与上述相同。

如果您有任何疑问,请与我联系!