Countif among filtered data

Posted on 2013-05-13
Last Modified: 2013-05-15

I have a filtered set of data. I want to use

Open in new window

on a column to find the number of occurances of a specific data. (how many times a name appears within a filtered month)

However, it is giving me an error.

How can I go on to do this?

Question by:Shanan212
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
  • +1
LVL 23

Assisted Solution

NBVC earned 150 total points
ID: 39162819
Have you tried like this... assigning to a variable

Var = Application.CountIf(Range("A1:A100"), "Johnny")

Open in new window


Msgbox Application.CountIf(Range("A1:A100"), "Johnny")

Open in new window

LVL 13

Author Comment

ID: 39162912
Hi NB,

Yes I did. It returns an error for filtered rows. That is (eg) when only A15, A22, A99 is visible (even though Jonny is on A22)

I only want it to return results from visible cells only.
LVL 23

Expert Comment

ID: 39162960
I am more of a formula person... so not sure what best way would be with VBA, but a formula to count a filtered list based on a condition would be something like:


counts number of "Johnny" in column B when filtering column A.

Not sure if you want to adapt that to VBA and application functions...
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

LVL 81

Accepted Solution

byundt earned 250 total points
ID: 39163085
You might consider looping through the visible cells in your range and testing them for the value:
Sub FilteredCellCounter()
Dim cel As Range, rg As Range
Dim i As Long
Set rg = Selection
If rg.Cells.Count = 1 Then Set rg = Intersect(rg.EntireColumn, rg.Worksheet.UsedRange)
Set rg = rg.SpecialCells(xlCellTypeVisible)
If Not rg Is Nothing Then
    For Each cel In rg.Cells
        If cel.Value = "Johnny" Then i = i + 1
End If
MsgBox i
End Sub

Open in new window

LVL 33

Assisted Solution

by:Rob Henson
Rob Henson earned 100 total points
ID: 39164251
Slightly less complicated than SUMPRODUCT, use:


The # can be changed to several options from 1 to 11 and 101 to 111.

The help file gives the meaning of each but 2 or 3 and 102 or 103 use the COUNT and COUNTA functions.

Interpreting the help remarks:

1 to 11 include rows hidden by formatting but excludes rows hidden by filter.
101 to 111 excludes rows hidden by formatting and rows hidden by filter.

Rob H
LVL 33

Expert Comment

by:Rob Henson
ID: 39164283
That assumes that the column is already filtered to the value that you are counting.

LVL 23

Expert Comment

ID: 39164391
My assumption was that Shanon212 wanted to count only a certain name (e.g. only the number of times "Johnny" appears)  after filtering.  The SUBTOTAL() function on its own will count all rows after filtering.
LVL 33

Expert Comment

by:Rob Henson
ID: 39167281
Hence my second comment!
LVL 13

Author Closing Comment

ID: 39168929

Featured Post

Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question (http:/Q_27311462.html), I created an alternative function to the Excel Concatenate() function that you might find useful.  I tested several solutions and share the results in this article as well as t…
You need to know the location of the Office templates folder, so that when you create new templates, they are saved to that location, and thus are available for selection when creating new documents.  The steps to find the Templates folder path are …
This Micro Tutorial will demonstrate on a Mac how to change the sort order for chart legend values and decrpyt the intimidating chart menu.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question