我正在嘗試編寫一個函數來分析“是”、“NA”和“否”列。如果所有行中都有“是”或“NA”,則提交狀態將為“是”(可能全部為“是”和 1 個 NA,並且提交狀態必須為“是”)。但是,如果任何行中有“否”,則提交狀態必須為“否”,這就是我的情況:
=IF(COUNTIFS(H4:H14,{"是","NA"})=COUNTA(H4:H14),"是","否")
當所有行都是“是”時,它只會給我一個“是”。當一行顯示為“NA”且所有其他行顯示為“是”時,它在提交狀態區域中顯示“否”,這是錯誤的。行中的所有“否”都顯示提交狀態為“否”,這是正確的。有人可以幫我弄清楚這段程式碼嗎?
答案1
我看到了實現這項工作的三種方法。
根據 cybernetic.nomad 的評論,如果您關注“...如果任何行中都有“否”...”的問題陳述,我們希望對其中包含“否”的單元格進行計數。
=IF(COUNTIF(H4:H14,"否")=0,"是","否")
另一方面,如果您想從另一個方向關注它 - “...如果所有行中都有“是”或“NA”...”,那麼我們要對單元格進行計數選擇“是”並將其添加到帶有“NA”的單元格計數中。
=IF(COUNTIFS(H4:H14,"是")+COUNTIFS(H4:H14,"NA")=COUNTA(H4:H14),"是","否")
而且,如果我們想使用該{...}
語法,就像您在最初的嘗試中那樣,我們只需使用一個SUM(...)
構造,因為COUNTIFS
具有該{"Yes","NA"}
方法的函數會傳回一個包含兩個值的陣列(一個值對應列表中的每個可能的匹配項),因此我們需要把它們加起來。
=IF(SUM(COUNTIFS(H4:H14,{"是","NA"}))=COUNTA(H4:H14),"是","否")
(第三種方法只是第二種方法的重述。)
警告
前兩種方法可能存在重大差異。要確定哪一個最適合您,您必須確定如果存在「是」、「否」和「NA」範例之外的任何值,您希望結果是什麼。 「xxx」),第一種方法將產生Yes
,而第二和第三種方法將產生No
。
您的要求不明確,雖然在這種情況下這對您來說不太可能成為問題,但最好不要留下任何機會。