Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 基于多条件匹配和查找值执行计算_If Statement_Indexing_Match - Fatal编程技术网

If statement 基于多条件匹配和查找值执行计算

If statement 基于多条件匹配和查找值执行计算,if-statement,indexing,match,If Statement,Indexing,Match,如果某一天的所有膳食都是个人膳食(即个人没有购买其他人的膳食),我试图计算每日膳食报销率的金额。在所附示例中,所有属于个人膳食的膳食在“团体费用”列中都将包含空格或“否”。如果他们为早餐、午餐或晚餐选择“是”,则不会进行计算 例如,本例中的餐费总额为83.79美元。每日限额为70美元。如果这些餐费都是针对个人的(即在集团费用栏中提供空白/无响应),则在突出显示的单元格(K6)中返回$13.79。如果他们为早餐、午餐或晚餐(或其任何组合)选择“是”,则突出显示的单元格(K6)中将显示$0(或空白)

如果某一天的所有膳食都是个人膳食(即个人没有购买其他人的膳食),我试图计算每日膳食报销率的金额。在所附示例中,所有属于个人膳食的膳食在“团体费用”列中都将包含空格或“否”。如果他们为早餐、午餐或晚餐选择“是”,则不会进行计算

例如,本例中的餐费总额为83.79美元。每日限额为70美元。如果这些餐费都是针对个人的(即在集团费用栏中提供空白/无响应),则在突出显示的单元格(K6)中返回$13.79。如果他们为早餐、午餐或晚餐(或其任何组合)选择“是”,则突出显示的单元格(K6)中将显示$0(或空白)

到目前为止,我一直在尝试使用多个条件将IF语句、with或语句与Index/Match结合起来

我尝试在“输入区”和“汇总区”之间匹配费用总额(汇总区已使用索引/匹配从输入区填充),然后匹配输入区和汇总区之间的日期,然后匹配输入区和汇总区之间的膳食类型,然后在输入区中查找任何“是”响应。如果存在任何“是”回答(因此我尝试合并OR声明),请不要显示超过每日70美元费率的任何金额;否则,计算超额

我尝试过的一些公式的示例如附件所示

我会很感激一些专家的建议

谢谢

A

终于解决了

基本上,我用索引/匹配参数替换了上述测试公式的“S6:S8”部分[{=IF(或(S6:S8={“Yes”}),0,SUM(K3:K5)-R11)}]

S6:S8={“是”}在OR语句中变为索引(可输入[集团费用],匹配($D$3和$H$3,可输入[日期]&可输入[费用明细],0))=“是”。对每种膳食标准类型重复此操作(使用D3&H3:H5尝试,但仅识别H3中的结果)

以下是对我有效的方法:

{=如果(或(索引(可输入[集团费用]、匹配($D$3和$H$3、可输入[日期]、可输入[费用明细]、0))=“是”,索引(可输入[集团费用]、匹配($D$3和$H$4、可输入[日期]、可输入[费用明细]、0))=“是”,索引(可输入[集团费用]、匹配($D$3和$H$5、可输入[日期]、可输入[费用明细]、0))=“是”),总数($K$3:$K$5)-$R$11)}


现在,如果在输入表上为早餐、午餐或晚餐选择了“是”,则返回零,否则它将执行我之前进行的“超龄”计算。

以下内容将为我提供正确答案:{=if(或(S6:S8={“是”),0,SUM(K3:K5)-R11}。如果早餐、午餐或晚餐选择“是”(显然,我专门选择了测试所需的单元格),则返回零,否则它将执行我想要的计算。但是,我仍然在将其与索引/匹配合并时遇到问题,因此它是一个基于特定“日期”和“费用明细”类型计算的动态公式。有什么想法吗?我的逻辑有错误。例如,如果没有早餐,索引/匹配将返回错误。为了解释“输入”选项卡上可能出现的空白,我必须在每个索引/匹配错误处返回一个零,然后调整“如果为false,则值”公式,以消除其计算负值(即,索引匹配未找到“是”、“否”或“”响应,因此它移动到“如果为false,则值”计算,从$0中减去$70)。此公式有效:{=如果(或(IFERROR(索引(可输入[集团费用]),匹配($D$3和$H$3,可输入[日期]&可输入[费用明细],0))=“是”,0),IFERROR(索引(可输入[集团费用]),匹配($D$3和$H$4,可输入[日期]&可输入[费用明细],0))=“是”,0),IFERROR(索引(可输入[集团费用],匹配($D$3和$H$5,可输入[日期]&可输入[费用明细],0))=“是”,0)),0,IF((总和($K$3:$K$5)$R$11)很抱歉回答了“多个”问题。但我在上面修订的解决方案中发现了第二个错误。最后的IF语句没有适当地处理膳食类型的空白选择和非空白选择,以及处理“团体费用”与“非团体费用”之间的关系(也就是说,如果他们有团体费用,他们可能会超过70美元的上限,否则他们的上限是70美元)。下面的公式现在应该可以适当地处理所有情况(我已经测试了我能想到的每一种情况):{=if(或(IFERROR)(索引(TravelLogInput[团体费用]),MATCH('Test sheet'!$D$53和'Test sheet'!$H$53,TravelLogInput[日期]&TravelLoginInput[费用明细],0))=“是”,0),iError(索引(TravelLoginInput[集团费用],匹配('Test Worksheet'!$D$53和'Test Worksheet'!$H$54,TravelLoginInput[日期]&TravelLoginInput[费用明细],0))=“是”,0),iError(索引(TravelLoginInput[集团费用],匹配('Test Worksheet'!$D$53和'Test Worksheet'!$H$55,TravelLoginInput[日期]&TravelLoginInput[Expense Detail],0))=“Yes”,0),0,MAX(0,SUM(‘测试工作表’!$K$53:$K$55)-‘年度数据输入’!$E$5))}