
お世話になります。
掲題の件で ご相談が御座います。
=SUBTOTAL(3,U5:U63) と
=COUNTIF(U5:U63,"完了") を 1つのセルで表現したいのですが
これは不可能でしょうか?
本当は「U列」だけではなく、20~30列全部に そのような機能を持った関数を入れたいのですが
両方を兼ね備えた関数を どなたかご存知ないでしょうか。
ようは、その表全体にフィルタを設定しており、いくつかの条件で抽出した時に「完了」の数が変わるので
現状 自分が思いつく所で考えると別シートに移して「=COUNTIF(●:●,"完了")」を都度入れていくか?
ぐらいしか思いつきません。
・フィルタで抽出しても元の範囲選択はそのまま。
・フィルタで抽出後に見えている選択範囲の「完了」だけを数えて欲しい
・上記2つの条件で1つのセルに数式を入力したい。
この3つの条件が満たされれば「=SUBTOTAL」や「=COUNTIF」にこだわる必要はありません。
どなたか ご存知であればご教示いただけますでしょうか。
説明が不足のようでしたら何度でも補足致しますので何卒宜しくお願い致します。
No.7ベストアンサー
- 回答日時:
またまたまた登場、myrangeです。
質問者がマクロをどの程度使えるのか分からないのでなんですが、
(質問から推測するにあまり使ったことがない?)
先に提示したマクロは関数ではありませんから
データの内容が変るたびに(結果を求めたい時点で)実行しなければいけません。
もし、SUBTOTALのような関数(セルに式としてセットする)にしたければ
以下のようなユーザー定義関数を作ることになります。
'----------------------------------------------
Function Ookami(myRange As Range, myStr As Variant) As Long
Dim Rng As Range
Dim Cnt As Long
For Each Rng In myRange
If Rng.EntireRow.Hidden = False And Rng.Value = myStr Then
Cnt = Cnt + 1
End If
Next Rng
Ookami = Cnt
End Function
'---------------------------------------------
使い方は、以下のようにします。
関数名は質問者のハンドルネームです。。(^^;;;
■Ookami(セル範囲, 検索文字)■
=Ookami(U5:U63,"完了")
F5~F666の範囲で、表示されてる"連絡済"をカウントしたければ
=Ookami(F5:F666,"連絡済")
要するにふつうの関数と同じような使い方になります。
以上です。
何度も ご回答いただきまして
誠にありがとう御座います。
やはりVBAにほぼ不可能は無いような感じですね。
こういった事を聞かずにやれるようになりたいものです。。
気に掛けていただきましてありがとう御座いました。
No.8
- 回答日時:
VBA案が順当だとは思いますが、数式一発でもできなくはないので一応…。
●セル範囲U3:U63について、
「値が"完了"であり」かつ「フィルタで表示されている」セルの数。
=SUMPRODUCT(SUBTOTAL(3,OFFSET(U2,ROW(INDIRECT("1:"&ROWS(U3:U63))),))*(U3:U63="完了"))
※U2を参照している部分は、対象範囲の直上セルを指定してください。
以上ご参考まで。
ご回答誠にありがとう御座います。
結論「マクロは嫌」と言われてしましまして、また 急いでいたこともあり
_Kyleさんの回答を見る前に作業列を使って解決してしましました。。。
もったいないことをしました。
いただいた数式の中身を理解し、別の機会に利用させていただこうと思います。
ご対応いただきましてありがとう御座いました。
No.5
- 回答日時:
こんばんは!
まったくの的外れになるかもしれませんが・・・
どうしてもオートフィルタを使わないとダメですか?
無理矢理って方法になります。
↓の画像のようにオートフィルタを使わずに
条件だけを入力すれば
その条件に合ったセルの個数と「完了」のセルの個数を
2段で表示させる方法になるのですが、
画像の場合は「ハ」の個数と「完了」個数を表示しています。
B21セル =SUMPRODUCT(($A$2:$A$19=$A$21)*(B$2:B$19<>""))
B22セル =SUMPRODUCT(($A$2:$A$19=$A$21)*(B$2:B$19=$A$22))
として、B21・B22セルを範囲指定した後にオートフィルで列方向にコピーしています。
この程度の回答しか思い浮かびませんでしたが、
的外れなら軽く読み流してくださいね。m(__)m

ご回答 ありがとう御座います。
フィルタを使う必要が御座いますので この方法はちょっと。。。
でも、いつも いろいろと工夫をされているtom04さんの姿勢はいつも関心させられます。
自分も見習いたいと思います。
ありがとう御座いました。
No.4
- 回答日時:
またまた登場、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まで)しか使ってないですが、
それがなぜ、そろそろ限界に近づいて、となるのでしょうか。
ちょと疑問。
以上です。
再登場 誠にありがとう御座います。
また、VBAのコードまでいただきましてありがとう御座いました。
結論から言うと「マクロは嫌」と言われてしまいまして
関数で作業列を使ってやる事になってしまいました。。。
業務用共有資料ではなく 個人の作業用に活用させていただこうと思います。
わざわざ ありがとう御座いました。
No.3
- 回答日時:
エクセルのバージョンは何でしょうか?
当方Excel2002では
=SUBTOTAL(3,U5:U63)
を入力しているのセルの値は、オートフィルタの結果によりご質問の希望通りに変化します。
ご回答誠にありがとう御座います。
言葉足らずですみませんでした。。。
Excelは2003です。
あと、各列には「完了」と「未完了」が混在しており、フィルタの抽出条件により
都度見えている画面上「完了」と「未完了」の数が変わってきます。
なので「=SUBTOTAL」だけだと 完了、未完了の両方の合計が出て来ますので苦労しております。
何か良い方法を ご存知でしたら是非お願い致します。
No.2
- 回答日時:
作業列を使わないなら、マクロになるでしょう。
作業列を使う方法(作業列をV列とする)
V5に、
=(U5="完了")*1
と式をいれ、V63までコピーする
●求める式は、
=SUBTOTAL(9,V5:V63)
となる。
作業列のV列が邪魔なら非表示にしておく。
尚、マクロなら簡単にできますが。。。
以上です。
ご回答誠にありがとう御座います。
やはり作業列を追加する以外方法はないのでしょうか。。。
現状 このシートは「DP列」までデータが入っておりまして
そろそろ限界に近づいております。。。
もし よろしければマクロでの解決方法を ご教示いただけませんでしょうか。
お忙しい中 大変 恐縮では御座いますが
何卒 宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) 【エクセル】COUNTIFの検索条件が可変する数字の場合の数式 1 2022/09/27 15:34
- Excel(エクセル) エクセルで指定範囲にある名前と重複した場合に入力できないようにしたい 1 2023/07/13 09:58
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- フリーソフト Googleスプレッドシートで特定の言葉が含まれる行の色分けをしたいのですが 4 2022/04/30 15:29
- Excel(エクセル) Excelの数式についての質問 1 2022/10/31 15:50
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) 出勤簿の土、日、休日に色付けできない 2 2022/08/04 20:10
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
このQ&Aを見た人はこんなQ&Aも見ています
-
フィルターかけた後、重複を除いてカウントしたい。 すみませんアドバイスお願いします! 取引コード 販
Excel(エクセル)
-
=SUBTOTAL に =COUNTIF の機能を実装2
Excel(エクセル)
-
教えて下さい!関数SUBTOTALとCOUNTIFを組み合わせたいのですが…
Excel(エクセル)
-
-
4
EXCEL 重複するデータを1としてカウントする方法
Excel(エクセル)
-
5
excelでSUBTOTAL関数を設定したのですが、オートフィルタをか
その他(Microsoft Office)
-
6
SUMIFS?COUNTIF?とSUBTOTALを合わせたような数式を組みたい。
Excel(エクセル)
-
7
オートフィルタ絞込みの後、データ数のカウント方法
その他(Microsoft Office)
-
8
エクセルでフィルターにかけたセル数だけカウントする方法はsubtotal(集計方法,範囲)だと分かっ
Excel(エクセル)
-
9
エクセルでフィルタ後の条件付き個数のカウント
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
=SUBTOTAL に =COUNTIF の機能...
-
エクセルオートフィルタで余計...
-
行番号の文字の色が青色の理由?
-
エクセルで、桁数の異なるデー...
-
色フィルターをかけた状態で、...
-
オートフィルタで抽出したデー...
-
Excel関数、何がいけないのかわ...
-
エクセルの計算表の下向き三角...
-
エクセル 最新データのみを表...
-
エクセルでのオートフィルタオ...
-
エクセルのフィルタ リスト範...
-
Excel VBAでフィルタしたものに...
-
Excel2010 フィルタで抽出できない
-
エクセルのフィルタをかけると...
-
CでIIRフィルタを作りたいので...
-
excelで奇数の行のみ削除したい
-
EXCELで、空白セルを除いて別シ...
-
Excelのセルのデータ:年...
-
教えて下さい!関数SUBTOTALとC...
-
エクセル:色の付いたデータを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルオートフィルタで余計...
-
Excel関数、何がいけないのかわ...
-
行番号の文字の色が青色の理由?
-
教えて下さい!関数SUBTOTALとC...
-
オートフィルタで抽出したデー...
-
色フィルターをかけた状態で、...
-
=SUBTOTAL に =COUNTIF の機能...
-
エクセルのフィルタをかけると...
-
エクセルの計算表の下向き三角...
-
エクセルで、桁数の異なるデー...
-
Excel VBAでオートフィルタで抽...
-
オートフィルタをかけた表に一...
-
エクセルでのオートフィルタオ...
-
5の倍数の日付だけを抽出したい
-
Excel2010 フィルタで抽出できない
-
エクセル:色の付いたデータを...
-
excelで奇数の行のみ削除したい
-
Excel VBAでフィルタしたものに...
-
色のついたセルにフラグを立た...
-
Excelのセルのデータ:年...
おすすめ情報