在Excel中將正數值轉換為布林值TRUE

在Excel中將正數值轉換為布林值TRUE

我試圖根據幾個具體條件總結所有條目。

目標是計算儲存格 J、K、L 或 M 中勾選「是」且 H 中勾選「1st」的所有條目

這是我目前使用的公式:

=SUMPRODUCT((('J2:J100="yes") + (K2:K100="yes") + (L2:L100="yes") + (M2:M100="yes")) * (H2:H100="1st"))

這幾乎有效。

問題是,如果他對 4 個單元格(J、K、L、M)中的任何一個回答“是”,我只想對記錄進行一次計數,而不是多次。例如,如果一筆記錄在 K 和 L 儲存格中均標記為“是”,且 H 儲存格中為 1,則該記錄將被計數兩次,而不是一次。

這是因為 SUMPRODUCT 函數的計算結果為 0 + 1 + 1 + 0 * 1,即 = 2

我在想是否有一種方法可以將我編寫的函數的第一部分轉換為布林值,以便任何正值都被視為 1,任何負值都被視為 False,這將解決我的問題。

答案1

添加一個>0

=SUMPRODUCT((('J2:J100="yes") + (K2:K100="yes") + (L2:L100="yes") + (M2:M100="yes")>0) * (H2:H100="1st"))

現在

(0 + 1 + 1 + 0 > 0) * 1

會變成

1 * 1

這是1

答案2

>0顯然會比函數更好地工作並且可能更快。

對於您(兩年後)或將來可能維護電子表格的其他人來說,這個想法可能不太明顯。

Excel 有一個函數OR(),可以很好地解決這種情況。與產生 1/0 的四次單獨比較、相加、比較等不同,它只是簡單地進行四次比較,並產生一個 1 或 0 作為其輸出,無論現在還是永遠,任何人都清楚。

嗯,不是直接的:它產生 TRUE 或 FALSE,但是將其與 H 列項相乘會強制其結果為 1 或 0,並使乘法成功。 (當你看到人們使用--or方法來強制相同的效果時,就會發生這種情況*1。但是任何乘法都可以達到目的,而不僅僅是那些,所以它們不是必要的。

但人們確實喜歡 (0+1+1+0) 路線,這對他們來說不是問題,但如果您想要簡單的其他方法,您OR()可以滿足要求。

相關內容