簡體   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