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:D19
arrays。
使用这个数组公式:
=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