質問: =subtotal に =countif の機能を実装 お世話になります。 掲題の件で ご相談が御座います。 =subtotal(3,u5:u63) と =countif(u5:u63,"完了") を 1つのセルで表現したいのですが これは不可能でしょうか? 本当は「u列」だけではなく、20~30列全部に そのような機能を持った関数を入れたいのですが 両方を兼ね備えた関数を どなたかご存知ないでしょうか。 ようは、その表全体にフィルタを設定しており、いくつかの条件で抽出した時に「完了」の数が変わるので 現状 自分が思いつく所で考えると別シートに移して「=countif(●:●,"完了")」を都度入れていくか? ぐらいしか思いつきません。 ・フィルタで抽出しても元の範囲選択はそのまま。 ・フィルタで抽出後に見えている選択範囲の「完了」だけを数えて欲しい ・上記2つの条件で1つのセルに数式を入力したい。 この3つの条件が満たされれば「=subtotal」や「=countif」にこだわる必要はありません。 どなたか ご存知であればご教示いただけますでしょうか。 説明が不足のようでしたら何度でも補足致しますので何卒宜しくお願い致します。
回答: またまた登場、myrangeです。 マクロでやりたいということなので。。。 コードの書き方はいくつかありますが、簡単なのを2つほど。 結果は、セルu1に表示するものとした場合。 '--------------------------------------- sub test222() dim cnt as long dim rng as range dim myrange as range set myrange = range("u5", cells(rows.count, "u").end(xlup)) for each rng in myrange.specialcells(xlcelltypevisible) if rng.value = "完了" then cnt = cnt + 1 end if next rng range("u1").value = cnt end sub '------------------------------------------------ sub test333() dim r as long dim cnt as long for r = 5 to cells(rows.count, "u").end(xlup).row if cells(r, "u").value = "完了" and _ cells(r, "u").entirerow.hidden = false then cnt = cnt + 1 end if next r range("u1").value = cnt end sub '--------------------------------------------- それから、お礼のコメントに >やはり作業列を追加する以外方法はないのでしょうか。。。 >現状 このシートは「dp列」までデータが入っておりまして >そろそろ限界に近づいております。。。 とありますが、dp列は最大列の半分(xl2003まで)しか使ってないですが、 それがなぜ、そろそろ限界に近づいて、となるのでしょうか。 ちょと疑問。 以上です。