Board logo

標題: [發問] 跳列統計有顯示"0"的儲存格之總個數 [打印本頁]

作者: ziv976688    時間: 2021-9-27 20:43     標題: 跳列統計有顯示"0"的儲存格之總個數

[attach]34072[/attach]
C26 =從47列起始,每跳17列統計有顯示"0"的儲存格之個數加總。

請問:C26的公式要怎麼修正?
謝謝!

作者: samwang    時間: 2021-9-28 14:06

回復 1# ziv976688

請測試看看,謝謝
另外,為什麼都沒有0時參考答案有0和空白?

Sub test()
Dim Arr, n%, i&, j&
R = [b65536].End(3).Row
Arr = Range("c47:ay" & R)
For j = 1 To UBound(Arr, 2)
    For i = 1 To UBound(Arr) Step 17
        If Arr(i, j) = "" Then GoTo 99
        If Arr(i, j) = 0 Then n = n + 1
99: Next i
    Arr(1, j) = n: n = 0
Next j
Range("c26").Resize(1, 49) = Arr
End Sub
作者: ziv976688    時間: 2021-9-28 15:18

本帖最後由 ziv976688 於 2021-9-28 15:23 編輯

回復 2# samwang
答案正確
謝謝您的耐心指導~感恩
================================
另外,為什麼都沒有0時參考答案有0和空白?
因為目前所有基本需求都已完成~所以在實際操作後,會有一些細項必須補充~
EX : 在C26補充每跳17列統計有顯示"0"的個數~因為"最小的數字不一定是"0"~將"O"統計出個數比對。個數愈多的C1:AY1對應號碼~不開出的機率愈大。
細項補足後~就整理歸檔存底。
====================================
因為擔心日後需求有變動,而末學如又不會自行修改程式(這類需求的程式碼,爬文是不可能找到)~
所以這一題~小弟還是希望有函數解(EXCEL2003版)~
目前的C26有爬文找到類似函數解~非空白的儲存格個數加總~
=IF(SUMPRODUCT(SUBTOTAL(3,OFFSET(C47,ROW($1 : $1026)*17-17,)))>0,SUMPRODUCT(SUBTOTAL(3,OFFSET(C47,ROW($1 : $1026)*17-17,))),"")
只是要再加上單獨計算有顯示"0"的儲存格個數條件~如想以COUNTIF或SUMIF再配合~但一直寫不出來~正在努力爬文中

以上  再次謝謝您的指導和幫忙
作者: ML089    時間: 2021-9-28 20:50

C26
=IF(SUMPRODUCT(SUBTOTAL(2,OFFSET(C47,ROW($1:$1026)*17-17,)))>0,SUMPRODUCT(SUBTOTAL(2,OFFSET(C47,ROW($1:$1026)*17-17,))*(N(OFFSET(C47,ROW($1:$1026)*17-17,))=0)),"")
作者: ziv976688    時間: 2021-9-28 21:47

本帖最後由 ziv976688 於 2021-9-28 21:52 編輯

回復 4# ML089
答案完全符合需求~感恩

請教版主 :
(N(OFFSET(C47,ROW($1 : $1026)*17-17,))=0)
N是什麼意思?

又如果當欄"最小"都沒有顯示"0"的儲存格~
則該C26 : AY26的儲存格顯示""
公式要怎麼修改?
純粹只是公式研習~未雨綢繆~以備後需~
謝謝您:l
ol
作者: ML089    時間: 2021-9-28 23:39

N(OFFSET(....)) 這是N()是搭配OFFSET()使用,一言難盡,上網找 N(OFFSET( 說明吧

如果當欄"最小"都沒有顯示"0"的儲存格~
則該C26 : AY26的儲存格顯示""
不是很懂
最好有模擬答案,比較能了解你的說明
作者: ziv976688    時間: 2021-9-29 00:29

本帖最後由 ziv976688 於 2021-9-29 00:46 編輯

回復 6# ML089
1_
有上網找過~沒有找到適當的說明~小弟再繼續找看看~謝謝您

2_
C27=統計C47 : AY1026當欄的各"最小"列~有顯示"0"值的總個數
如當欄的各"最小"列~都無顯示"0"值時~則顯示""       
詳如範例檔C27 :AY27
[attach]34088[/attach]

請問: C27的函數公式 ?
懇請賜教~謝謝您

作者: samwang    時間: 2021-9-29 09:14

回復 7# ziv976688

如當欄的各"最小"列~都無顯示"0"值時~則顯示""        
>> 不好意思,公式不會,2#程式碼只要多個判斷如下僅供參考,謝謝
Sub test()
Dim Arr, n, i&, j&
R = [b65536].End(3).Row
Arr = Range("c47:ay" & R)
For j = 1 To UBound(Arr, 2)
    For i = 1 To UBound(Arr) Step 17
        If Arr(i, j) = "" Then GoTo 99
        If Arr(i, j) = 0 Then n = n + 1
99: Next i
    If n > 0 Then Arr(1, j) = n: n = 0
Next j
Range("c26").Resize(1, 49) = Arr
End Sub

作者: ML089    時間: 2021-9-29 09:15

回復 7# ziv976688

有關 OFFSET()與 N(OFFSET(....)) 的使用,如果數據源是單元格引用,通常使用N/T+OFFSET組合函式實現。
參考網址如下
https://www.excelhome.net/1436.html
https://club.excelhome.net/forum ... &extra=page%3D1
https://club.excelhome.net/forum ... &extra=page%3D1
作者: samwang    時間: 2021-9-29 09:53

回復 7# ziv976688


如當欄的各"最小"列~都無顯示"0"值時~則顯示""  
=IF(SUMPRODUCT(SUBTOTAL(3,OFFSET(C47,ROW($1:$1026)*17-17,))*(N(OFFSET(C47,ROW($1:$1026)*17-17,))=0))=0,"",SUMPRODUCT(SUBTOTAL(3,OFFSET(C47,ROW($1:$1026)*17-17,))*(N(OFFSET(C47,ROW($1:$1026)*17-17,))=0)))
作者: ziv976688    時間: 2021-9-29 12:26

回復 8# samwang
samwang大大 : 您好 !
測試期數一多,VBA的效率就凸顯出來了
謝謝您的幫忙和指導~感恩
作者: ML089    時間: 2021-9-29 12:27

回復 7# ziv976688


   
各"最小"列~都無顯示"0"值時~則顯示""

C26
=IFERROR(1/(1/SUMPRODUCT(SUBTOTAL(2,OFFSET(C47,ROW($1:$1026)*17-17,))*(N(OFFSET(C47,ROW($1:$1026)*17-17,))=0))),"")


=IF(SUMPRODUCT(SUBTOTAL(2,OFFSET(C47,ROW($1:$1026)*17-17,))*(N(OFFSET(C47,ROW($1:$1026)*17-17,))=0))>0,
  SUMPRODUCT(SUBTOTAL(2,OFFSET(C47,ROW($1:$1026)*17-17,))*(N(OFFSET(C47,ROW($1:$1026)*17-17,))=0)),"")
作者: ziv976688    時間: 2021-9-29 12:28

回復 9# ML089
版主 : 您好 !
感謝提供資料源~受益良多~感恩
作者: ziv976688    時間: 2021-9-29 12:39

回復 10# samwang
測試結果 : 完全符合需求
謝謝您的耐心指導和熱心幫忙~感恩
作者: ziv976688    時間: 2021-9-29 20:10

本帖最後由 ziv976688 於 2021-9-29 20:31 編輯

回復 9# ML089
版主 : 您好 !
感謝您提供的資源(不知道您是鍵入什麼關鍵字?就是能找到這些網站,而我卻找不到)~
反覆看了幾次~雖然暈頭轉向,不是很懂(不能完全理解)~但至少知道公式該如何衍化了。

PS:
1_小弟的1樓提問,如果改為 C26=
有顯示數值時~則顯示"0"的個數;如無"0"值時~則顯示" V ";如都無顯示值時則顯示""
小弟就不會被2個不同意義的"0"搞昏了

2_我只會用2層IF,還不懂怎麼用{ n;" V " }

將公式整理了一下~向您交一份簡易的讀後心得報告:

[attach]34090[/attach]
[attach]34091[/attach]
再次謝謝您的指導~感恩
作者: ML089    時間: 2021-9-30 14:01

回復 15# ziv976688
公式很長時,可以用 ALT-ENTER將公式分段,有助於了解及DEBUG。
使用多層 IF 時 TRUE及FALSE位置放置也可以有不同效果,如下例 ""及 "V"都放在TRUE的位置
助人為快樂之本,希望有幫助到你。

    [attach]34099[/attach]
作者: ziv976688    時間: 2021-9-30 14:13

回復 16# ML089
版大 : 您好 !
謝謝您再次的耐心指導末學~受惠良多~感恩





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)