繁体   English   中英

Excel VBA-忽略If语句的数组公式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM