[英]Excel VBA - Array Formula Ignoring If Statement
我真的是数组公式的新手。 如果列表没有在数组中输入数据或只有1个条目,则流程应为:显示“增加权重” [7个总点)。 一旦在数组中的任何地方输入了两个数据,它将检查数组中的FIRST值并减去数组中的LAST值。
我遇到的问题是,当数组为空时单元格显示#value,而不是显示“ Add Weight”。 一旦输入了数据,该公式就可以完美工作,并且无论它们在数组中的位置如何,都可以从第一个条目正确减去最后一个条目。
这将查找数组中的最后一个条目。
LOOKUP(2,1/(1-ISBLANK(D13:D19)),D13:D19))
这将查找数组中的第一个条目。
INDEX(D13:D19,(MATCH(FALSE,ISBLANK(D13:D19),0)))
是否因为公式被标记为数组?
=IF(COUNTIF(DailyProgress[Change],"")>6,"Add Weight",LOOKUP(2,1/(1-ISBLANK(D13:D19)),D13:D19))-INDEX(D13:D19,(MATCH(FALSE,ISBLANK(D13:D19),0)))
如果有更好的方法可以写这篇文章,我全神贯注。
编辑:
在相邻的一列中,它显示了与上一个单元格相比的更改,如下所示:
=IF([@[Weight (lbs)]]="","",[@[Weight (lbs)]]-D17)
其中D17
是当前行上方的单元格(将在第18行输入)。
照原样,如果相邻单元格上方的单元格为空,则将其显示为零,并显示为“ 0-value = -value”,因此,我们只是希望将其与之前的LAST输入单元格进行比较直接位于其上方的单元格。 我知道这将需要完全重写。 仍在使用D13:D19
阵列。
使用此数组公式:
=IFERROR(IF(MATCH(FALSE,D13:D19="",0)=MATCH(1E+99,D13:D19),"Add Weight",INDEX(D13:D19,MATCH(1E+99,D13:D19))-INDEX(D13:D19,MATCH(FALSE,D13:D19="",0))),"Add Weight")
直到D13:D19中至少有两个条目,它才会返回“ Add Weight
作为数组公式,退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter进行确认。 如果操作正确,则Excel会将{}
放在公式周围。
FWIW:
您的COUNTIF无效的原因是条件,将""
更改为"="
,它将计算空格:
COUNTIF(DailyProgress[Change],"=")>6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.