[英]Countif the Result of Subtracting Two Arrays Exceeds a Certain Value in Excel
我是數組公式的新手,並且遇到以下情況:
我有以下矩陣:
F G H I J ... R S T U V
1 0 0 1 1
0 1 1 1 2 3 1 2
2 0 2 3 1 2 0 1 0 0
2 1 0 0 1 0 0 3 0 0
我的目標是計算行數,在該行中,列F:J的總和與列R:V的總和之差大於閾值。 至關重要的是,應僅包括具有完整數據的行:應忽略第1行(其中F1:J1列只有值)和第2行(其中F2:J2列只有一些值)。
如果閾值= 2.5,則解為1。即,第3行是唯一具有完整數據的行,其中F3:J3(8)之和與R3:V3之和(3)之和大於2.5(例如5> 2.5)。
我試圖基於@Tom Sharpe和@QHarr的教導,以相當可悲的方式整理以下公式:
=COUNT(IF(SUBTOTAL(9,OFFSET(F1,ROW(F1:F4)-ROW(F1),0,1,COLUMNS(F1:J1)))-SUBTOTAL(9,OFFSET(R1,ROW(R1:R4)-ROW(R1),0,1,COLUMNS(R1:V1)))>2.5,IF(AND(SUBTOTAL(2,OFFSET(F1,ROW(F1:F4)-ROW(F1),0,1,COLUMNS(F1:J1)))=COLUMNS(F1:J1),SUBTOTAL(2,OFFSET(R1,ROW(R1:R4)-ROW(R1),0,1,COLUMNS(R1:V1)))=COLUMNS(R1:V1)),SUBTOTAL(9,OFFSET(F1,ROW(F1:F4)-ROW(F1),0,1,COLUMNS(F1:J1)))),IF(AND(SUBTOTAL(2,OFFSET(F1,ROW(F1:F4)-ROW(F1),0,1,COLUMNS(F1:J1)))=COLUMNS(F1:J1),SUBTOTAL(2,OFFSET(R1,ROW(R1:R4)-ROW(R1),0,1,COLUMNS(R1:V1)))=COLUMNS(R1:V1)),SUBTOTAL(9,OFFSET(R1,ROW(R1:V1)-ROW(R1),0,1,COLUMNS(R1:V1))))))
但是,即使我編輯矩陣以使F4:J4和R4:v4之和之間的差異也超過2.5,它似乎總是產生1的值。 可悲的是,我正在努力理解原因,並希望對此事給予任何指導。
也許,用X1說(假設您已經標記了列):
=COUNTIF(Y:Y,TRUE)
在Y1中,無論您選擇什么截止值(例如2.5
),在Y2中:
=((COUNTBLANK(F2:J2)+COUNTBLANK(R2:V2)=0)*SUM(F2:J2)-SUM(R2:V2))>Y$1
復制下來以適合。
我認為這可以做到,將您的AND乘以(*):
=SUMPRODUCT(--((SUBTOTAL(9,OFFSET(F1,ROW(F1:F4)-ROW(F1),0,1,COLUMNS(F1:J1)))-SUBTOTAL(9,OFFSET(R1,ROW(R1:R4)-ROW(R1),0,1,COLUMNS(R1:V1)))>2.5)*(SUBTOTAL(2,OFFSET(F1,ROW(F1:F4)-ROW(F1),0,1,COLUMNS(F1:J1)))=COLUMNS(F1:J1))*(SUBTOTAL(2,OFFSET(R1,ROW(R1:R4)-ROW(R1),0,1,COLUMNS(R1:V1)))=COLUMNS(R1:V1))>0))
可以簡化一點,但是時間短一點。
作為一個沒有易失函數的單元格中的數組公式:
=SUM((MMULT(--(LEN(F2:J5)*LEN(R2:V5)>0),--TRANSPOSE(COLUMN(F2:J2)>0))=5)*(MMULT(F2:J5-R2:V5,TRANSPOSE(--(COLUMN(F2:J2)>0)))>2.5))
應該做的把戲:D
只是另一種選擇...
=IF(NOT(OR(IFERROR(MATCH(TRUE,ISBLANK(F1:J1),0),FALSE),IFERROR(MATCH(TRUE,ISBLANK(R1:V1),0),FALSE))), SUBTOTAL(9,F1:J1)-SUBTOTAL(9,R1:V1), "Missing Value(s)")
我的方法與您嘗試從@TomSharp改編的方法有些不同,因為我正在驗證單元格中是否有數據(不是空白),然后執行計算,否則返回錯誤消息。 這仍然是一個數組函數調用,因此當您輸入公式時,請按ctrl+shft+enter
。
開頭if()
的條件部分檢查是否每個范圍的單元格都不為空: if a match( true= isblank(cell))
表示單元格為空白(壞),如果沒有匹配項...即沒有空白單元格,比賽將返回#NA“錯誤”(好)。 假是好=發現錯誤? 號((即無空白單元格))
然后,閾值條件變為:
=COUNTIF(X1:X4,">"&Threshold)' Note: no Array formula here
我給閾值(單元格W6
)指定了讀取能力的范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.