Excel VBA – 数组公式忽略If语句

我真的很新arrays公式。 stream程应该是如果列表中没有input数据的数据或只有1个条目,它显示“添加重量”[共7个点)。 一旦在数组中的任何位置input了两个任意数据,就会检查数组中的FIRST值,并减去数组中的LAST值。

我得到的这个问题是单元格显示#value当数组是空的而不是显示“添加重量”。 一旦input数据,公式就可以正常工作,无论数据在arrays中的位置如何,都可以正确地减去最后一个条目。

这将查找数组中的最后一个条目。

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行input]。

就像这样,如果相邻单元格上方的单元格为空,则将其显示为零,然后执行“0 – value = -value”,因此我们只需要将其与之前的LASTinput单元格进行比较直接在它上面的单元格。 我知道这将需要完全重写。 仍然使用D13:D19arrays。

使用这个数组公式:

 =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中至less有两个条目,它会返回Add Weight

作为一个数组公式,在退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter来确认。 如果正确完成,则Excel将在公式周围放置{}


FWIW:

你的COUNTIF不工作的原因是标准,把""改为"=" ,它会计算空白:

 COUNTIF(DailyProgress[Change],"=")>6